jsmitchell (Thu, 02 Feb 2017 18:49:39 GMT):
Welcome to the Sawtooth Lake channel!

agunde (Thu, 02 Feb 2017 18:50:40 GMT):
Has joined the channel.

amundson (Thu, 02 Feb 2017 18:51:05 GMT):
Has joined the channel.

amundson (Thu, 02 Feb 2017 18:54:03 GMT):
@jsmitchell - can you make others owners as well?

jsmitchell (Thu, 02 Feb 2017 18:54:14 GMT):
let me see

jsmitchell (Thu, 02 Feb 2017 18:54:31 GMT):
amundson

MicBowman (Thu, 02 Feb 2017 19:40:34 GMT):
Has joined the channel.

MicBowman (Thu, 02 Feb 2017 19:41:41 GMT):
woot woot

Ratnakar (Thu, 02 Feb 2017 20:07:26 GMT):
Has joined the channel.

timblankers (Thu, 02 Feb 2017 23:28:10 GMT):
Has joined the channel.

C0rWin (Fri, 03 Feb 2017 00:11:11 GMT):
Has joined the channel.

salmanbaset (Fri, 03 Feb 2017 01:21:34 GMT):
Has joined the channel.

Donald Liu (Fri, 03 Feb 2017 02:18:54 GMT):
Has joined the channel.

didnotgetagoodname (Fri, 03 Feb 2017 03:57:51 GMT):
Has joined the channel.

JonathanLevi (Fri, 03 Feb 2017 07:50:02 GMT):
Has joined the channel.

silliman (Fri, 03 Feb 2017 13:58:13 GMT):
Has joined the channel.

danacr (Fri, 03 Feb 2017 14:57:19 GMT):
Has joined the channel.

marcusvcs (Fri, 03 Feb 2017 18:47:51 GMT):
Has joined the channel.

fz (Fri, 03 Feb 2017 19:32:23 GMT):
Has joined the channel.

karkal (Fri, 03 Feb 2017 19:57:29 GMT):
Has joined the channel.

stanliberman (Fri, 03 Feb 2017 20:44:06 GMT):
Has joined the channel.

ericmvaughn (Fri, 03 Feb 2017 22:07:56 GMT):
Has joined the channel.

dourada (Fri, 03 Feb 2017 23:24:47 GMT):
Has joined the channel.

genggjh (Sat, 04 Feb 2017 03:46:10 GMT):
Has joined the channel.

guruprasath (Sat, 04 Feb 2017 06:13:01 GMT):
Has joined the channel.

schwentker2 (Sun, 05 Feb 2017 15:51:31 GMT):
Has joined the channel.

ray (Mon, 06 Feb 2017 04:42:38 GMT):
Has joined the channel.

david.peyronnin (Mon, 06 Feb 2017 09:54:28 GMT):
Has joined the channel.

naddison (Mon, 06 Feb 2017 11:23:53 GMT):
Has joined the channel.

karan-bharadwaj (Mon, 06 Feb 2017 17:56:15 GMT):
Has joined the channel.

jsmitchell (Mon, 06 Feb 2017 18:44:12 GMT):
MicBowman

kelly_ (Mon, 06 Feb 2017 19:51:34 GMT):
Has joined the channel.

skbodwell (Tue, 07 Feb 2017 00:48:42 GMT):
Has joined the channel.

Dan (Tue, 07 Feb 2017 04:03:42 GMT):
Has joined the channel.

Dan (Tue, 07 Feb 2017 04:04:28 GMT):
I can has owner?

foobarometer (Tue, 07 Feb 2017 05:21:09 GMT):
Has joined the channel.

boydjohnson (Tue, 07 Feb 2017 13:57:18 GMT):
Has joined the channel.

barinjato (Tue, 07 Feb 2017 14:12:18 GMT):
Has joined the channel.

reachk.raj (Tue, 07 Feb 2017 14:13:35 GMT):
Has joined the channel.

amundson (Tue, 07 Feb 2017 14:31:52 GMT):
Dan

Dan (Tue, 07 Feb 2017 14:33:55 GMT):
All your sawteeth are belong to me now!

adamludvik (Tue, 07 Feb 2017 14:55:51 GMT):
Has joined the channel.

cbf (Tue, 07 Feb 2017 15:16:08 GMT):
Has joined the channel.

pschwarz (Tue, 07 Feb 2017 15:16:08 GMT):
Has joined the channel.

TomBarnes (Tue, 07 Feb 2017 17:47:49 GMT):
Has joined the channel.

TomBarnes (Tue, 07 Feb 2017 17:48:30 GMT):
shiny

TomBarnes (Tue, 07 Feb 2017 17:52:39 GMT):
is there a desktop client? I downloaded the Rocket client but it doesn't seem to connect to this channel.

pschwarz (Tue, 07 Feb 2017 17:57:12 GMT):
https://rocket.chat/download

pschwarz (Tue, 07 Feb 2017 17:57:19 GMT):
@Tom Barnes --^

mfford (Tue, 07 Feb 2017 19:07:45 GMT):
Has joined the channel.

amundson (Tue, 07 Feb 2017 19:45:36 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ sawtooth cluster start -P tp_intkey_python Starting: validator-000 Starting: validator-001 Starting: validator-002 Starting: validator-003 Starting: validator-004 Starting: validator-005 Starting: validator-006 Starting: validator-007 Starting: validator-008 Starting: validator-009 Pulling validator (sawtooth-validator:latest)... ERROR: repository sawtooth-validator not found: does not exist or no pull access Error: Docker images not built: tp_intkey_python, sawtooth-validator. Try running "sawtooth docker build tp_intkey_python sawtooth-validator" ```

amundson (Tue, 07 Feb 2017 19:45:52 GMT):
anyone else seeing that?

amundson (Tue, 07 Feb 2017 19:47:07 GMT):
@adamludvik ^

amundson (Tue, 07 Feb 2017 19:57:17 GMT):
apparently following the 'Try running' statement provided works

amundson (Tue, 07 Feb 2017 19:57:43 GMT):
I had mistakenly though not providing the arguments implied 'all'

amundson (Tue, 07 Feb 2017 20:00:40 GMT):
probably be useful to have one of the cluster subcommands tell you connection information

amundson (Tue, 07 Feb 2017 20:00:46 GMT):
and for cluster to startup the rest api

amundson (Tue, 07 Feb 2017 20:02:31 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ xo create game000 Response: {} ```

amundson (Tue, 07 Feb 2017 20:04:47 GMT):
so that's an invalid transaction, what should it print out? nothing? If I give it --wait, it does the same thing, but in that case, it should probably print out an error.

tbrooke (Tue, 07 Feb 2017 20:22:06 GMT):
Has joined the channel.

jsmitchell (Tue, 07 Feb 2017 20:25:55 GMT):
it's a valid transaction from the perspective of the client, right? It's only invalid because a game of that name already exists?

jsmitchell (Tue, 07 Feb 2017 20:28:25 GMT):
in 0-7 we had the capability to do validity checks on submission based on the best knowledge the validator had

beauson45 (Tue, 07 Feb 2017 21:02:13 GMT):
Has joined the channel.

SivaKannan (Tue, 07 Feb 2017 21:05:47 GMT):
Has joined the channel.

amundson (Tue, 07 Feb 2017 21:41:09 GMT):
invalid because it's a duplicate or the validator doesn't handle xo transactions, stuff like that

amundson (Tue, 07 Feb 2017 21:43:33 GMT):
the 0-7 model isn't necessarily as desirable as just returning the state as it goes through the various normal stages

rcampos@altus.cr (Tue, 07 Feb 2017 22:04:23 GMT):
Has joined the channel.

Rokkinchic (Wed, 08 Feb 2017 03:17:59 GMT):
Has joined the channel.

kansi (Wed, 08 Feb 2017 03:59:54 GMT):
Has joined the channel.

sachinsurvase (Wed, 08 Feb 2017 04:21:53 GMT):
Has joined the channel.

PacoEcotrust (Wed, 08 Feb 2017 09:24:34 GMT):
Has joined the channel.

jvsteiner (Wed, 08 Feb 2017 11:02:08 GMT):
Has joined the channel.

o_drugan (Wed, 08 Feb 2017 14:28:09 GMT):
Has joined the channel.

Dan (Wed, 08 Feb 2017 14:52:15 GMT):
I put up a new sawtooth_signer option yesterday. It changes the signer interface a bit to simplify it. This is all new architecture (0.8) related. Nothing to do with the legacy / stable stuff (0.7).https://github.com/hyperledger/sawtooth-core/pull/64

Dan (Wed, 08 Feb 2017 14:54:13 GMT):
I've elected to drop support for pubkey recovery for now. If someone has a need for that let me know. The intent moving forward is all our signed messages will have the public key included in the signed message. (See the protobuf files here: https://github.com/hyperledger/sawtooth-core/tree/master/protos)

Dan (Wed, 08 Feb 2017 14:58:06 GMT):
Intended usage is just to generate priv/pub keys and sign/verify messages. The encoding/decoding methods that were there before become private and are handled implicitly by the remaining calls. details in commit msg. http://bit.ly/2kmnyhq.

Dan (Wed, 08 Feb 2017 14:59:02 GMT):
The main reason to do all this was to adopt the libsecp256k1 implementation in lieu of the slower python implementations.

amundson (Wed, 08 Feb 2017 14:59:39 GMT):
@jsmitchell and I were talking about language bindings (Java, Javascript, etc.) and the difficulty in supporting this vs. the old bitcoin library approach

amundson (Wed, 08 Feb 2017 14:59:52 GMT):
sounded like this might be easier as there is less encoding?

Dan (Wed, 08 Feb 2017 15:03:32 GMT):
I hope so. :) This c library spits out the signatures in DER encoding which is a little more standard than the bitcoin formats. The latter encode some things that are specific to bitcoin whereas DER is just line encoding for numbers.

Dan (Wed, 08 Feb 2017 15:04:46 GMT):
So the protobufs are mostly handling hex strings which should be able to be decoded without handling bitcoinisms.

Dan (Wed, 08 Feb 2017 15:06:05 GMT):
So that's true of the signatures. But for now I've kept the keys WIF (bitcoin) encoded because I wasn't sure about legacy client interaction with .8.

Dan (Wed, 08 Feb 2017 15:07:02 GMT):
I could strip that out and make them DER encoded if we don't have any need for WIF. That would also eliminate I think the last remaining dependency on pybitcointools.

amundson (Wed, 08 Feb 2017 15:10:36 GMT):
if we change the key format, we should pick a new extension and update keygen

boydjohnson (Wed, 08 Feb 2017 15:16:03 GMT):
My Pr that refactors Interconnect and network into one implementation that get different behavior based on the dispatcher that is used is up. I commented for cian montgomery on the pr which commits touch journal. Since it is a rather large PR that is a significant refactor, I would be looking for further reviewers.

zac (Wed, 08 Feb 2017 15:24:37 GMT):
Has joined the channel.

boydjohnson (Wed, 08 Feb 2017 15:55:20 GMT):
https://github.com/hyperledger/sawtooth-core/pull/65 Here's the PR.

amundson (Wed, 08 Feb 2017 16:09:56 GMT):
@boydjohnson - what's the story on MessageList in the python sdk. was that just broken before or did you change the approach?

boydjohnson (Wed, 08 Feb 2017 16:12:39 GMT):
I thought since we were just wrapping 1 message in a messagelist it didn't serve a purpose so I changed that in the interconnect code. If we try to sweep messages in or out up to a certain number of messages maybe it would make more sense. Also pyzmq has send_multipart where you can send a list of things so it would be [msg1_bytes, msg2_bytes... making MessageList not needed.

amundson (Wed, 08 Feb 2017 16:15:57 GMT):
makes sense, we added that when we were attempting to make up for grpc slowness, IIRC

jsmitchell (Wed, 08 Feb 2017 16:16:45 GMT):
@boydjohnson: this ProcessPoolExecutor strategy for parallel signature validation is sweet

amundson (Wed, 08 Feb 2017 16:29:41 GMT):
@boydjohnson - scanned through quickly, looks very nice

boydjohnson (Wed, 08 Feb 2017 16:31:00 GMT):
Thanks, the interconnect.py file is longer than advertised, but I think it is a nice implementation.

Dan (Wed, 08 Feb 2017 18:12:26 GMT):
For 0.8... once legacy code is removed will we have a python3 requirement? i.e. the system is not expected to be py2 compatible?

amundson (Wed, 08 Feb 2017 18:45:53 GMT):
python3 only

jjason (Wed, 08 Feb 2017 18:46:26 GMT):
Has joined the channel.

jsmitchell (Wed, 08 Feb 2017 19:12:03 GMT):
@boydjohnson: you probably want to drop commit e9d67f from your branch

jsmitchell (Wed, 08 Feb 2017 19:12:15 GMT):
removing that unit_signing.yaml was an error

boydjohnson (Wed, 08 Feb 2017 19:12:29 GMT):
Yeah, I'll drop that commit. Thanks.

jsmitchell (Wed, 08 Feb 2017 19:12:40 GMT):
@adamludvik merged in the fix

boydjohnson (Wed, 08 Feb 2017 19:12:56 GMT):
Cool, I'll also rebase on current master

rjones (Wed, 08 Feb 2017 19:15:56 GMT):
Has joined the channel.

rjones (Wed, 08 Feb 2017 19:18:03 GMT):
I have two small documentation PRs - https://github.com/hyperledger/sawtooth-docs/pull/11 and https://github.com/hyperledger/sawtooth-core/pull/66 . I noticed PR66 failed Jenkins, but I can't see why. Could I sign up for a jenkins account somewhere?

jsmitchell (Wed, 08 Feb 2017 19:18:58 GMT):
we had a commit which passed in our internal jenkins but broke in external jenkins

rjones (Wed, 08 Feb 2017 19:19:19 GMT):
OK, thanks.

jsmitchell (Wed, 08 Feb 2017 19:19:36 GMT):
if you rebase and have c464e0d6, hopefully the build should succeed

boydjohnson (Wed, 08 Feb 2017 19:25:23 GMT):
@jsmitchell Because of the time delay between internal and external github I rebased on internal master, and pushed some commits that aren't yet on external github to my PR. I will rebase once they have been pushed out.

rbuysse (Wed, 08 Feb 2017 19:41:50 GMT):
Has joined the channel.

jsmitchell (Wed, 08 Feb 2017 20:35:30 GMT):
@boydjohnson: are you seeing a ~10 sec delay on intkey load before stuff starts getting processed?

jsmitchell (Wed, 08 Feb 2017 20:35:33 GMT):
```[20:33:19 DEBUG interconnect] receiving CLIENT_BATCH_SUBMIT_REQUEST message [20:33:20 DEBUG interconnect] receiving CLIENT_BATCH_SUBMIT_REQUEST message [20:33:20 DEBUG interconnect] receiving CLIENT_BATCH_SUBMIT_REQUEST message [20:33:31 DEBUG interconnect] sending GOSSIP_MESSAGE to None [20:33:31 DEBUG interconnect] sending GOSSIP_MESSAGE to None [20:33:31 DEBUG interconnect] sending GOSSIP_MESSAGE to None ```

boydjohnson (Wed, 08 Feb 2017 20:39:59 GMT):
Yeah, that because signature verification. It doesn't get broadcast until we verify the signatures.

boydjohnson (Wed, 08 Feb 2017 20:39:59 GMT):
Yeah, that's because signature verification. It doesn't get broadcast until we verify the signatures.

jsmitchell (Wed, 08 Feb 2017 20:41:09 GMT):
so, all the signature verification for all batches is happening before the first batch is sent to the publisher?

boydjohnson (Wed, 08 Feb 2017 20:43:13 GMT):
Yeah, that is maybe a data model problem. To simplify the dispatcher and handlers we constrain it to sending the same input to each handler. BatchLists come in and the first batchlist (for intkey load: 1 batch 100 txns) gets verified and isn't sent to the broadcast handler until it is the whole batchlist is verified.

jsmitchell (Wed, 08 Feb 2017 20:44:42 GMT):
I'm also seeing an ordering problem with intkey load now, presumably due to the lack of formal dependencies (either on the create side, or on the publishing side, or probably both) between set and inc/dec.

jsmitchell (Wed, 08 Feb 2017 20:44:59 GMT):
so, inc/dec transactions are coming in first before the set and are being declared invalid

boydjohnson (Wed, 08 Feb 2017 20:48:04 GMT):
Yeah, I have seen that. It is on both the creating the batches and internally. The ordering problem is that the first batchlist is bigger than the second batchlist, so it takes longer in signature verification. Also I wrote some test code (not included in the PR) that shows that the dispatcher does not always preserver ordering even on fair handlers.

jsmitchell (Wed, 08 Feb 2017 20:48:56 GMT):
do we have a story for getting dependencies to work on both sides?

boydjohnson (Wed, 08 Feb 2017 20:49:42 GMT):
I have stories for the completer which is my understanding handles both batch and block dependencies, but not for the intkey create_batch.

boydjohnson (Wed, 08 Feb 2017 20:54:06 GMT):
@pschwarz I think I was bitten by the timeout error on the intkey smoke test. That was one that you were talking about.

pschwarz (Wed, 08 Feb 2017 21:26:05 GMT):
@boydjohnson was that against master?

boydjohnson (Wed, 08 Feb 2017 21:53:31 GMT):
Yeah, external jenkins.

pschwarz (Wed, 08 Feb 2017 22:51:43 GMT):
There is a task to fix this issue, so just run the build again

cianx (Thu, 09 Feb 2017 00:31:11 GMT):
Has joined the channel.

danieldewar (Thu, 09 Feb 2017 10:25:13 GMT):
Has joined the channel.

jonreid (Thu, 09 Feb 2017 11:41:48 GMT):
Has joined the channel.

FlyingTiger (Thu, 09 Feb 2017 11:59:23 GMT):
Has joined the channel.

FlyingTiger (Thu, 09 Feb 2017 11:59:58 GMT):
Hi, guys :)

rbuysse (Thu, 09 Feb 2017 14:02:45 GMT):
Hello!

boydjohnson (Thu, 09 Feb 2017 14:45:10 GMT):
Hi, @FlyingTiger

Dan (Thu, 09 Feb 2017 14:45:52 GMT):
Welcome to RocketChat :D

jsmitchell (Thu, 09 Feb 2017 15:02:28 GMT):
:rocket:

crow15 (Thu, 09 Feb 2017 15:12:22 GMT):
Has joined the channel.

amundson (Thu, 09 Feb 2017 16:28:41 GMT):
@agunde - considering splitting tests/scheduler into tests/scheduler_serial and tests/scheduler_parallel

agunde (Thu, 09 Feb 2017 21:14:34 GMT):
@amundson I think that would be fine. But it would start the precedent of having multiple tests files in a directory (such as test_scheduler) instead of the discussed convention of only having tests.py file in most cases.

amundson (Fri, 10 Feb 2017 00:11:30 GMT):
ok

seanbarclay (Fri, 10 Feb 2017 11:57:43 GMT):
Has joined the channel.

jsmitchell (Fri, 10 Feb 2017 17:23:02 GMT):
@FlyingTiger: are you online?

jsmitchell (Fri, 10 Feb 2017 17:45:14 GMT):
@FlyingTiger: we're trying to spin up a 0-7 instance and are running into a couple of things that a few of your master PRs might fix

toddojala (Fri, 10 Feb 2017 18:30:17 GMT):
Has joined the channel.

toddojala (Fri, 10 Feb 2017 18:30:29 GMT):
hello

boydjohnson (Fri, 10 Feb 2017 18:35:34 GMT):
So the GenesisController PR was merged and I would like to alert people to the fact that validators started up by the cluster command will behave in a different way. validator-000 is the genesis node and if you "intkey load --url 127.0.0.1:40002" (in a three node network) it will broadcast batches out to the other validators but only validator-000 will make blocks since it alone has genesis. Also I have seen intermittent failures 1/5 on xo-smoke when running bin/run_tests that probably has to do with timing issues.

rjones (Fri, 10 Feb 2017 19:41:32 GMT):
I tagged all of the github/sawtooth* repos using the new `topics` feature from github. LMK if you want more/different tags. for instance if you look here: https://github.com/hyperledger/sawtooth-core you'll see the topics under the description.

jsmitchell (Fri, 10 Feb 2017 20:00:30 GMT):
sweet, thanks @rjones

Dan (Fri, 10 Feb 2017 20:42:40 GMT):
yeah thanks... reminds me we might have some old repos out there. Should we purge those?

Dan (Fri, 10 Feb 2017 20:42:51 GMT):
e.g. https://github.com/hyperledger/sawtooth-validator

rjones (Fri, 10 Feb 2017 21:19:21 GMT):
@Dan I can migrate them to github/hyperledge-archives if you like, just send me a list

boydjohnson (Fri, 10 Feb 2017 22:11:08 GMT):
Just to advertise to the channel, that when running a single validator node, it is required to run "sawtooth-0.8 admin genesis". And clean the /home/ubuntu directory.

Dan (Fri, 10 Feb 2017 22:52:31 GMT):
what do you mean clean the directory? Like after you run that command or you need to clean out some keys before then?

Dan (Fri, 10 Feb 2017 22:53:20 GMT):
thanks @ry. I'll put together a list and see if anyone on the channel is remembering some reason for those to still be there.

Dan (Fri, 10 Feb 2017 22:56:30 GMT):
@all Any reason these repos should NOT be archived and removed from github? sawtooth-arcade, sawtooth-validator, sawtooth-mktplace, sawtooth-dev-tools

boydjohnson (Fri, 10 Feb 2017 23:21:23 GMT):
@Dan Apparently it is just rm ~/block-chain-id, and then sawtooth-0.8 admin genesis && validator -vv.

PacoEcotrust (Sun, 12 Feb 2017 14:17:25 GMT):
Maybe that was treated before, sorry, I would like to ask fi the 8 version is ready to test? thanks

PacoEcotrust (Sun, 12 Feb 2017 14:17:25 GMT):
Maybe that was treated before, sorry, I would like to ask if the 8 version is ready to test? thanks

amundson (Sun, 12 Feb 2017 16:01:32 GMT):
@PacoEcotrust - we are targeting late April for the core of 0.8 to have the minimum features required to run a network of validators in a non-development setting (tests, PoCs, etc.); shortly following that (maybe a month) we expect 0.8 to include all interesting features that were present in 0.7 (stats client, etc.)

amundson (Sun, 12 Feb 2017 16:07:54 GMT):
0.8 is far enough along to write transaction families with the SDKs (python, javascript, java), and there is example code for each language. there is also a pattern for testing transaction families in an isolated way. the REST API has enough implementation to write CLI clients for the transaction families (we have a couple, for intkey, xo)

amundson (Sun, 12 Feb 2017 16:09:08 GMT):
but, you are essentially limited to a single validator instance since new journal and consensus modules are currently in implementation

PacoEcotrust (Sun, 12 Feb 2017 20:42:27 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=nr7pHa8WB6Jwvx6jx) @amundson Thanks very much!!

PacoEcotrust (Sun, 12 Feb 2017 20:42:27 GMT):
@amundson Thanks very much!!

PacoEcotrust (Sun, 12 Feb 2017 20:43:18 GMT):
Thanks very much

amundson (Sun, 12 Feb 2017 23:32:44 GMT):
master builds are broken

amundson (Sun, 12 Feb 2017 23:36:07 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/master/42/console

Dan (Mon, 13 Feb 2017 18:58:54 GMT):
@rjones I don't see anyone begging for those old repos, so I think it's safe to archive them. Thanks.

rjones (Mon, 13 Feb 2017 19:00:39 GMT):
@Dan 👍

fz (Mon, 13 Feb 2017 19:08:25 GMT):
I have been trying to follow the sawtooth tutorial at http://intelledger.github.io/tutorial.html and I am at the step of creating an empty cookie jar for Chocolate Chip cookies. I get the following error when I try to submit a transaction ```//carol> holding reg --name /jars/choc_chip --account /account --asset //mkt/asset/cookie/choc_chip [18:48:34 mktplace.mktplace_communication WARNING] operation failed with response: 400 [18:48:34 mktplace.mktplace_communication WARNING] Error from server, detail information: �eerrorpName isn't validierrorTypewInvalidTransactionErrorfstatus� [18:48:34 mktplace.mktplace_client ERROR] message post failed for some unusual reason Traceback (most recent call last): File "/project/sawtooth-core/extensions/mktplace/mktplace/mktplace_client.py", line 172, in _sendtxn msg File "/project/sawtooth-core/extensions/mktplace/mktplace/mktplace_communication.py", line 179, in postmsg .format(err_content)) InvalidTransactionError: Error from server: failed to create transaction //carol> ```

fz (Mon, 13 Feb 2017 19:09:00 GMT):
At the validator side. I see the following logs..

fz (Mon, 13 Feb 2017 19:09:10 GMT):
```[18:48:34 INFO base_page] BlockPage.do_get /block [18:48:34 WARNING root_page] /mktplace.transactions.MarketPlace/Transaction - NoResource [18:48:34 WARNING root_page] ['mktplace.transactions.MarketPlace', 'Transaction'] - 2 [18:48:34 INFO forward_page] starting local validation for txn id: 08c204d7252e58dc type: /MarketPlaceTransaction [18:48:34 INFO forward_page] RegisterHolding Updates [18:48:34 INFO forward_page] submitted transaction fails transaction family validation check: /mktplace.transactions.MarketPlace/Transaction; {'PublicKey': None, '__SIGNATURE__': 'G3+IfmIX5YXSWG/ROdch0rF/exTenJePlQlUROiBR+0qN1lY/jTEtyr2fKV8vZ4ZiD+k9V4wAdv5gv7AaqzATvw=', '__TYPE__': '/mktplace.transactions.MarketPlace/Transaction', '__NONCE__': 1487011714.806149, 'Transaction': {'Nonce': 1487011714.776861, 'PublicKey': '04c44f6de186a8eefb676e933a7a0e06408f2ff001369d7547dddce02c354e236fb87687dd2adba3622d913a8d796d8c9e5b8a310e59b1792dcc29d388aa4e9bf2', 'Dependencies': ['c38c98b805db7266', 'e995680600b84fb5', '14d5aabe2193e8d9'], 'Updates': [{'Count': 0L, 'Description': '', 'AssetId': '14d5aabe2193e8d9', 'UpdateType': 'RegisterHolding', 'CreatorId': 'c38c98b805db7266', 'Name': '/jars/choc_chip', 'AccountId': 'e995680600b84fb5'}], 'Signature': 'HE0V43cRcilr5eIdDdGEMCpZfUWlm3+bnQU/o0hTCHI+JP5VhBdFSJbJr/2KLAcZrLZFH3WDi9LEJUnBDZRoggk=', 'TransactionType': '/MarketPlaceTransaction'}} ```

fz (Mon, 13 Feb 2017 19:10:53 GMT):
i am just using carol instead of bob in the example. Everything else is the same.. I am v0-7 branch of sawtooth-lake

fz (Mon, 13 Feb 2017 19:11:18 GMT):
does anyone know why this might be happening?

toddojala (Mon, 13 Feb 2017 19:41:00 GMT):
@fz Taking a look..

fz (Mon, 13 Feb 2017 19:41:54 GMT):
@toddojala thanks..

toddojala (Mon, 13 Feb 2017 19:42:43 GMT):
@fz OK, so you are definitely using v0-7. Was it a "fresh" vagrant machine and environment?

fz (Mon, 13 Feb 2017 19:43:15 GMT):
yes. Its a fresh vagrant machine.

fz (Mon, 13 Feb 2017 19:43:51 GMT):
and environment

boydjohnson (Mon, 13 Feb 2017 19:44:59 GMT):
@fz If I remember correctly names must be globally unique. So if you have a /jars/choc_chip already, somebody else can't have a holding with the same name.

fz (Mon, 13 Feb 2017 19:48:30 GMT):
@boydjohnson got it. I got this error when I tried to create this jars/choc_chip for the first time. I have never created jars/choc_chip before.

boydjohnson (Mon, 13 Feb 2017 19:49:03 GMT):
I'm unsure. You could run with debug logging on (-vv) on the validator and try again.

fz (Mon, 13 Feb 2017 19:50:06 GMT):
sure @boydjohnson. will do.

rjones (Mon, 13 Feb 2017 19:54:20 GMT):
Has left the channel.

jsmitchell (Mon, 13 Feb 2017 20:04:59 GMT):
@boydjohnson: I think this may have to do with our PublicKey issues

jsmitchell (Mon, 13 Feb 2017 20:05:09 GMT):
```{'PublicKey': None```

jsmitchell (Mon, 13 Feb 2017 20:05:38 GMT):
although those changes may not have been merged in yet

boydjohnson (Tue, 14 Feb 2017 14:07:01 GMT):
So I had a thought last night. Right now the flow of CLIENT_BATCH_SUBMIT_REQUESTS either from the rest api or directly from a client goes directly to signature verification and then gossip broadcast and then to the completer which hands it to the journal and then at that point it acks back to the client. I set up the handlers in this order so that signature verification could fail the batchlist and send a error message back to the client. But having the handlers in this order means that for intkey-smoke and xo-smoke integration tests if the ack doesn't get back in 5 seconds, there is an error. A short-term remedy is to ack back as soon as the validator has the batchlist, but because of everything being request-response sending back an error message after you have already sent an ack first doesn't work. @zac I know you are working on batch submit handlers. What are your thoughts?

Dan (Tue, 14 Feb 2017 14:44:46 GMT):
Seems like your existing flow shouldn't be at risk of a 5 sec delay. or does the completer step wait on finding batches? If there's no "wait for something from the network" in that flow then I'd say its better we take a look at why the flow would take 5 seconds rather than changing the flow.

jsmitchell (Tue, 14 Feb 2017 14:45:44 GMT):
two things causing that - 1) large batches with lots of transactions to verify 2) no accelerated verification at the moment

jsmitchell (Tue, 14 Feb 2017 14:46:43 GMT):
@boydjohnson: where does the 5 second timeout come from?

jsmitchell (Tue, 14 Feb 2017 14:51:00 GMT):
is that established in the client?

boydjohnson (Tue, 14 Feb 2017 15:02:55 GMT):
Yeah, the 5 second timeout is in the rest api, the other clients like "intkey load" don't have timeouts.

jsmitchell (Tue, 14 Feb 2017 15:07:40 GMT):
my inclination is for ack to be a network layer response (I received this), rather than an attempt to answer whether the message is processable. I can see an argument for returning something else if the message itself has an error and that can be determined in a small amount of time. Otherwise, I think we're answering a different question about the status of something that was in the message.

jsmitchell (Tue, 14 Feb 2017 15:08:13 GMT):
For example, messages in the future might contain multiple things (batches, let's say)

jsmitchell (Tue, 14 Feb 2017 15:09:07 GMT):
If batch 1 is signed correctly and batch 2 is signed incorrectly, what do we do? Probably best to acknowledge receipt of the message independently from reporting success on batch 1 and error on batch 2

jsmitchell (Tue, 14 Feb 2017 15:10:21 GMT):
Message errors might be along the lines of "can't deserialize" or "unknown message type"

jsmitchell (Tue, 14 Feb 2017 15:10:35 GMT):
(i.e. concerns of the network layer)

boydjohnson (Tue, 14 Feb 2017 15:11:03 GMT):
Yeah, receipt of the message and then later information about the success or failure of that batch seems good. We would have to change handling of futures.

jsmitchell (Tue, 14 Feb 2017 15:11:40 GMT):
I don't know if it's really a future thing

jsmitchell (Tue, 14 Feb 2017 15:12:00 GMT):
it's important to keep messages distinct from their contents

boydjohnson (Tue, 14 Feb 2017 15:13:37 GMT):
So the response to a message would be in most cases (all cases?) ack, but then do we send an error response and who do we send it to, or do we just keep that info for querying?

jsmitchell (Tue, 14 Feb 2017 15:19:37 GMT):
We should talk it over. The 0-7 code polled the web api for status. We could do the same and return either success/error to that query. Being able to subscribe to a set of identifiers for status changes would be quite a bit better.

jsmitchell (Tue, 14 Feb 2017 15:23:45 GMT):
@boydjohnson: so, in that model the network would respond to messages with either Ack or Error indicating success in network receipt and ability to dispatch

boydjohnson (Tue, 14 Feb 2017 15:25:14 GMT):
Yeah, seems good.

jsmitchell (Tue, 14 Feb 2017 15:25:53 GMT):
i don't know, maybe not

jsmitchell (Tue, 14 Feb 2017 15:27:35 GMT):
that probably only applies to things we are delivering to the validator for processing

boydjohnson (Tue, 14 Feb 2017 15:29:23 GMT):
In validator to validator interactions it seems like an ack or "error, what did you send me" response would be mostly what is needed, too.

fz (Tue, 14 Feb 2017 19:24:12 GMT):
Hi everyone. sorry couldn't get back sooner with a followup/update of the cookie exchange tutorial related errors I got yesterday. After a few vagrant destroy && vagrant ups, the errors are not occuring. Here are a couple of observations.I am getting the following warnings whenever execute the following commad. ``` /project/sawtooth-core/docs/source/tutorial/genesis.sh ```

fz (Tue, 14 Feb 2017 19:24:41 GMT):
``` writing file: /home/ubuntu/sawtooth/keys/base000.wif writing file: /home/ubuntu/sawtooth/keys/base000.addr [01:02:18 WARNING signed_object] Identifier dbb0603c6420fe2c of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 879960d6a3a63c01 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier a824333e41fbeb9d of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 9b7d322df5012fa6 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 2ad7fc781b6d3112 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier d172207ba08873f8 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier d172207ba08873f8 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier dbb0603c6420fe2c of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 879960d6a3a63c01 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier a824333e41fbeb9d of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 9b7d322df5012fa6 of SignedObject has no public key and addr used to verify signature [01:02:18 WARNING signed_object] Identifier 2ad7fc781b6d3112 of SignedObject has no public key and addr used to verify signature ubuntu@ubuntu- ```

fz (Tue, 14 Feb 2017 19:27:10 GMT):
Also when I try to view Bob's current offer as mentioned in the tutorial.. I see the following empty set

fz (Tue, 14 Feb 2017 19:27:10 GMT):
``` ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/mktclient --name bob --keyfile validator/keys/bob.wif //bob> holding reg --name /batches/choc_chip001 --account /account --asset //mkt/asset/cookie/choc_chip --count 24 transaction 8413362e93b4a795 submitted //bob> exchangeoffer reg --output /batches/choc_chip001 --input /USD --ratio 2 1 --name /choc_chip_sale transaction 9c91de5624d2e7a0 submitted //bob> holdings --creator //bob 1000 //bob/USD 24 //bob/batches/choc_chip001 1 //bob/holding/token 0 //bob/jars/choc_chip //bob> offers --creator //bob Ratio Input Asset (What You Pay) Output Asset (What You Get) Name //bob> Ratio Input Asset (What You Pay) Output Asset (What You Get) Name //bob> waitforcommit Waiting for 9c91de5624d2e7a0. Transaction committed. //bob> waitforcommit Waiting for 9c91de5624d2e7a0. Transaction committed. //bob> waitforcommit Waiting for 9c91de5624d2e7a0. Transaction committed. //bob> offers --creator //bob Ratio Input Asset (What You Pay) Output Asset (What You Get) Name //bob> exit ```

fz (Tue, 14 Feb 2017 19:28:38 GMT):
``` ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/mktclient --name alice --keyfile validator/keys/alice.wif //alice> exchange --type ExchangeOffer --src /USD --dst /jars/choc_chip --offers //bob/choc_chip_sale --count 24 transaction f3622545f5c14609 submitted //alice> waitforcommit Waiting for f3622545f5c14609. Transaction committed. //alice> holdings --creator //bob 1000 //bob/USD 24 //bob/batches/choc_chip001 1 //bob/holding/token 0 //bob/jars/choc_chip //alice> holdings --creator //alice 1000 //alice/USD 1 //alice/holding/token 0 //alice/jars/choc_chip //alice> ```

fz (Tue, 14 Feb 2017 19:33:39 GMT):

Message Attachments

fz (Tue, 14 Feb 2017 19:35:39 GMT):
As seen above, when I try to view the offers created by Bob, it returns an empty set

fz (Tue, 14 Feb 2017 19:40:14 GMT):
And there is no change in the effective resulting holdings after the transaction. I am not sure if I am missing something here. The validator logs suggest the transactions are in good shape and it gets committed..

Dan (Tue, 14 Feb 2017 20:54:23 GMT):
Great. Looks like smacking vagrant around got you working ok?

Dan (Tue, 14 Feb 2017 20:55:58 GMT):
n/m your post above on holdings showed up after I'd woken rocket chat up a little more.

fz (Tue, 14 Feb 2017 21:40:25 GMT):
hi Dan. yes. It turned out to be an environment issue..I guess

fz (Tue, 14 Feb 2017 21:43:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=jGbMPvKc5qeWSFtK6) @Dan not sure if I understand this comment

amundson (Wed, 15 Feb 2017 03:28:19 GMT):
As some of you may have noticed, we have moved all PR activity to the hyperledger github repo - https://github.com/hyperledger/sawtooth-core/pulls

amundson (Wed, 15 Feb 2017 03:56:12 GMT):
One thing to note is that to re-request review after changes, one has to re-select the reviewers in the pulldown.

PacoEcotrust (Wed, 15 Feb 2017 08:30:56 GMT):
Hi, any one know where is the code of Navigator UI for Marketplace? I think I saw weeks ago but now I have been looking for it and I could not find it, thanks in advance, Fran

boydjohnson (Wed, 15 Feb 2017 12:24:27 GMT):
Hi @PacoEcotrust, Marketplace Navigator is in the 0-7 branch but not master. Here is a link: https://github.com/hyperledger/sawtooth-core/tree/0-7/extensions/mktplace/navigator

boydjohnson (Wed, 15 Feb 2017 14:45:44 GMT):
The smoke test fix PR is merged, so everyone that has PRs up should rebase on master.

amundson (Wed, 15 Feb 2017 20:50:31 GMT):
@rbuysse did you figure out the docker build error problems?

rbuysse (Wed, 15 Feb 2017 20:50:53 GMT):
yeah I think so

rbuysse (Wed, 15 Feb 2017 20:51:09 GMT):
I pushed a commit and forgot to do a PR. sec.

jsmitchell (Wed, 15 Feb 2017 22:10:42 GMT):
@adamludvik are you going to crank up the simulator on bond?

jsmitchell (Wed, 15 Feb 2017 22:10:59 GMT):
or wait for redeploy?

adamludvik (Wed, 15 Feb 2017 22:18:10 GMT):
I was going to leave the current network up for a week and work out the LIBOR issues, then redeploy. So I'll run the simulator against it again. @toddojala Did you get screenshots for the docs yet?

toddojala (Wed, 15 Feb 2017 22:37:42 GMT):
@adamludvik I am starting that about now...

toddojala (Wed, 15 Feb 2017 22:37:56 GMT):
Just give me a window

rbuysse (Wed, 15 Feb 2017 23:12:47 GMT):
i think you're fine any time now

rbuysse (Wed, 15 Feb 2017 23:12:53 GMT):
@toddojala ^

rbuysse (Wed, 15 Feb 2017 23:17:33 GMT):
BTW, I gave jenkins 6 executors (up from the default of 2), please let me know if you see any jobs waiting, or if things are taking longer than they should when a bunch of jobs are running.

TomBarnes (Wed, 15 Feb 2017 23:28:18 GMT):
I'm familiarizing myself with merkle.py. I'm running Pycharm in Windows. I grabbed the unit test code at sawtooth-core\validator\tests\unit\test_merkle_trie.pyto write some tests of my own. when I tried to run the test code with the map_size default of 1024**4 (set in sawtooth-core\validator\sawtooth_validator\database\lmdb_nolock_database.py), it immediately failed complaining that there wasn't enough disk space. I did a quick search and noted that when lmdb creates the database file on Windows, it allocates the entire file on disk; I only had 56GB available.. This might merit some attention to ensure that the behavior is as intended on Windows.

TomBarnes (Wed, 15 Feb 2017 23:32:15 GMT):
..which raises the question - should any platform-specific settings be hard-coded?

jsmitchell (Thu, 16 Feb 2017 14:39:14 GMT):
Once the local config support is in place, we can move this type of thing out of the code

jsmitchell (Thu, 16 Feb 2017 14:39:33 GMT):
It's a shame that windows doesn't support sparse files

jsmitchell (Thu, 16 Feb 2017 14:45:07 GMT):
sparse files are supported in Linux in vagrant. I'd recommend doing your testing work there.

amundson (Thu, 16 Feb 2017 14:56:30 GMT):
another reason to never support windows-native validators and instead run them in docker.

jsmitchell (Thu, 16 Feb 2017 14:59:36 GMT):
http://www.openldap.org/its/index.cgi/Software%20Enhancements?id=8324

adamludvik (Thu, 16 Feb 2017 15:48:32 GMT):
PR 79 which adds linting is printing an error message when trying to create a .pylint.d directory. I think this directory is just used to store information about previous runs of pylint. If we add the `--persistent=no` flag to the pylint call in run_lint, it does not create the directory when I test things locally so this should fix the issue. Is there any reason to keep those stats around? I didn't even know they existed and we already have `--reports=no` set, which is where you would see them.

adamludvik (Thu, 16 Feb 2017 15:48:39 GMT):
http://stackoverflow.com/questions/25475327/how-does-pylint-remember-scores-from-previous-runs

adamludvik (Thu, 16 Feb 2017 15:48:46 GMT):
https://github.com/hyperledger/sawtooth-core/pull/79

amundson (Thu, 16 Feb 2017 16:02:25 GMT):
@adamludvik adding --persistent=no sounds fine to me

VipinB (Thu, 16 Feb 2017 16:11:46 GMT):
Has joined the channel.

jsmitchell (Thu, 16 Feb 2017 16:22:40 GMT):
I'm implementing ZMQ security (using the 'ironhouse' pattern described here: http://hintjens.com/blog:49#toc6)

jsmitchell (Thu, 16 Feb 2017 16:23:10 GMT):
We'll need to have a well known public/private keypair for the 'server' identity of the validators

jsmitchell (Thu, 16 Feb 2017 16:24:25 GMT):
this is for the purposes of authenticating client identity, which will be signed by the client's private key

jsmitchell (Thu, 16 Feb 2017 16:24:51 GMT):
and can be verified by the server

jsmitchell (Thu, 16 Feb 2017 16:25:28 GMT):
we will presumably then need an ephemeral server private/public key pair which is used for actual channel encryption

jsmitchell (Thu, 16 Feb 2017 16:27:07 GMT):
looking for advice on two things. 1) any ways to avoid having a key pair be part of the config 2) alternatives to the two stage approach to the handshake

boydjohnson (Thu, 16 Feb 2017 16:27:29 GMT):
https://github.com/zeromq/pyzmq/blob/550ddc04c3ce67cdb58b6fb6499274dc7f82891c/examples/security/ironhouse.py Here is a pyzmq example for those less fluent with C.

jsmitchell (Thu, 16 Feb 2017 16:29:39 GMT):
changes I've made from that impl - 1) the client is generating ephemeral keys for each connection (zmq.curve_keypair() and server doesn't enforce having to know about the client's public key in a local store) 2) not whitelisting localhost

jsmitchell (Thu, 16 Feb 2017 16:31:24 GMT):
I'm concerned that we'll need to crack into the zmq internals to support this given the (i think) need for a two step process

jsmitchell (Thu, 16 Feb 2017 16:33:00 GMT):
```[16:17:47 DEBUG base] version: b'1.0', request_id: b'1', domain: '', address: '127.0.0.1', identity: b'', mechanism: b'CURVE' [16:17:47 DEBUG base] ALLOWED (CURVE allow any client) [16:17:47 DEBUG base] ZAP reply code=b'200' text=b'OK' [16:17:47 DEBUG interconnect] receiving GOSSIP_REGISTER message [16:17:47 DEBUG gossip_handlers] got peer register message from b'a153df0a4a5183f84c8786b-c6e0552bf84566fddeb9249'. sending ack [16:17:47 DEBUG interconnect] sending GOSSIP_ACK to b'a153df0a4a5183f84c8786b-c6e0552bf84566fddeb9249'```

jsmitchell (Thu, 16 Feb 2017 16:33:15 GMT):
the plumbing works though

jsmitchell (Thu, 16 Feb 2017 17:32:27 GMT):
These docs seem to indicate that the server keys are only important for the authenticating that the client is talking to the expected server. All messages after the handshake are encrypted using the transient keys which are generated and exchanged for the connection

jsmitchell (Thu, 16 Feb 2017 17:32:29 GMT):
https://rfc.zeromq.org/spec:26/CURVEZMQ/

TomBarnes (Thu, 16 Feb 2017 19:55:16 GMT):
Why is protocol buffers used for encoding STL messages but objects within those messages (for instance the the object associates with a Merle tree address) are encoded with CBOR?

jsmitchell (Thu, 16 Feb 2017 19:57:05 GMT):
we're going to change that to protobuf

jsmitchell (Thu, 16 Feb 2017 19:58:55 GMT):
takemiya-san from the Iroha project was making the case for flatbuffers instead of protobuf

jsmitchell (Thu, 16 Feb 2017 19:59:09 GMT):
due to performance and memory footprint

jsmitchell (Thu, 16 Feb 2017 19:59:32 GMT):
it also sounds like they are working on a native flatbuffer store, which sounded cool

jsmitchell (Thu, 16 Feb 2017 19:59:32 GMT):
it also looks like they are working on a native flatbuffer store, which sounded cool

jsmitchell (Thu, 16 Feb 2017 20:00:37 GMT):
but we will stick with protobuf for now until there is a reason to reconsider

TomBarnes (Thu, 16 Feb 2017 20:02:35 GMT):
So when transaction family is published, it will (must) include a protobuf file that describes all of the acceptable state objects that it can handle?

pschwarz (Thu, 16 Feb 2017 20:03:14 GMT):
It doesn't have to be a protobuf file - those encodings are family-specific

pschwarz (Thu, 16 Feb 2017 20:03:52 GMT):
It certainly would need to be documented for consumers of that family, whatever the encoding.

jsmitchell (Thu, 16 Feb 2017 20:04:26 GMT):
yeah, that's just a blob of bytes from the core's perspective

TomBarnes (Thu, 16 Feb 2017 20:07:16 GMT):
The encoding of an object in Python and the object encoding in Java may not create the same number of bytes; if embedded in a message (like trnasction objects are), the hash of the message will be different. I thought that was the entire reason we moved to prototype- explicit serialization.

jsmitchell (Thu, 16 Feb 2017 20:08:31 GMT):
it is the responsibility of the implementers of the transaction processors to ensure that they encodings they choose are deterministic and consistent

jsmitchell (Thu, 16 Feb 2017 20:08:43 GMT):
across all languages that they choose to implement in

adamludvik (Thu, 16 Feb 2017 20:20:52 GMT):
If you look at the xo transaction family, it just uses CSV byte strings to encode the payload.

adamludvik (Thu, 16 Feb 2017 20:21:38 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/sawtooth_xo/processor/handler.py#L55

adamludvik (Thu, 16 Feb 2017 20:21:59 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/sawtooth_xo/processor/handler.py#L186

boydjohnson (Thu, 16 Feb 2017 20:26:43 GMT):
Just wanted to give an update on where I am at with different components in a node stopping and the others behaving in a ok manner. On my branch, the python transaction processor can come and go (if given time to gracefully do so) even during load (There needs to be a minimum of 1 transaction processor for the transaction family that you are loading with). The validator can stop (Still needs 2 sigints) and the transaction processors will make a new connection and send a register request when the validator becomes available. What I haven't solved yet is the validator going down under load and the transaction processors behaving nicely -- probably inferring that they should drop all in process transactions and reregister again when the validator becomes available. I think just describing it here gives me new insight, but wanted to let people know where I'm at.

jsmitchell (Thu, 16 Feb 2017 21:43:42 GMT):
@boydjohnson do you want to look https://github.com/hyperledger/sawtooth-core/pull/94 before it gets merged?

jsmitchell (Thu, 16 Feb 2017 21:43:42 GMT):
@boydjohnson do you want to look https://github.com/hyperledger/sawtooth-core/pull/94 over before it gets merged?

boydjohnson (Thu, 16 Feb 2017 21:44:05 GMT):
Yeah, I'll do so.

boydjohnson (Thu, 16 Feb 2017 21:53:08 GMT):
@jsmitchell What are the implications for hard coded pubkey and private key? Would a next step be local configuration of those keys?

jsmitchell (Thu, 16 Feb 2017 21:54:26 GMT):
so, those keys are associated with the 'server' identity. In a non peer to peer example, you'd have a single server or set of servers with the private key and you'd distribute the server public key to your clients

jsmitchell (Thu, 16 Feb 2017 21:54:46 GMT):
the purpose is to make sure you are talking to a server that can prove they have access to that secret key

jsmitchell (Thu, 16 Feb 2017 21:55:04 GMT):
critically, those keys are _not_ used for encryption of the communications channel

jsmitchell (Thu, 16 Feb 2017 21:56:10 GMT):
encryption is based on transient keys generated by the client (client's pubkey goes to server), and the server generates a transient pubkey which is encrypted with the clients pubkey and is sent to the client

jsmitchell (Thu, 16 Feb 2017 21:57:04 GMT):
because we are peer to peer, everybody needs the private key, and that initial 'server identity check' is meaningless

jsmitchell (Thu, 16 Feb 2017 21:57:30 GMT):
ideally, we could just skip it, but it's baked into the CurveZMQ protocol

jsmitchell (Thu, 16 Feb 2017 21:58:21 GMT):
yes, we may move them to local config

jsmitchell (Thu, 16 Feb 2017 21:58:49 GMT):
also there might be other use cases which justify the complexity of distributing all the keys to permissioned nodes

jsmitchell (Thu, 16 Feb 2017 21:59:07 GMT):
but, we will get permissioned behavior from higher up the stack too

boydjohnson (Thu, 16 Feb 2017 21:59:46 GMT):
Thanks.

amundson (Thu, 16 Feb 2017 22:47:40 GMT):
```dpkg: error processing archive build/debs/python3-sawtooth-sdk_0.8.1~dev1-1_all.deb (--install): trying to overwrite '/usr/lib/python3/dist-packages/sawtooth_protobuf/batch_pb2.py', which is also in package python3-sawtooth-cli 0.8.1~dev1-1 ```

amundson (Thu, 16 Feb 2017 22:47:43 GMT):
oops :)

TomBarnes (Thu, 16 Feb 2017 22:49:21 GMT):
regarding state blobs: got it - thanks!

amundson (Thu, 16 Feb 2017 22:50:59 GMT):
state blobs are the only place we need deterministic encoding; other places, we keep the original bytes around as originally generated (this is different than 0.7)

jsmitchell (Thu, 16 Feb 2017 22:50:59 GMT):
python3-sawtooth-protobuf package coming up

jsmitchell (Thu, 16 Feb 2017 22:54:27 GMT):
@amundson: https://github.com/hyperledger/sawtooth-core/pull/92 is ready to merge

amundson (Thu, 16 Feb 2017 22:55:32 GMT):
thx

amundson (Fri, 17 Feb 2017 14:48:44 GMT):
this was mentioned in #general - http://opentracing.io/

amundson (Fri, 17 Feb 2017 14:49:13 GMT):
would be pretty cool to submit a transaction and see it's lifetime across rest api, validator, tp, consensus, etc.

pschwarz (Fri, 17 Feb 2017 15:43:30 GMT):
With the merging of https://github.com/hyperledger/sawtooth-core/pull/96, the data directory has change from `` to `/data` or `/var/lib/sawtooth` if no `SAWTOOTH_HOME` is set. The vagrant environment will have this variable set to `~/sawtooth`.

pschwarz (Fri, 17 Feb 2017 15:43:30 GMT):
With the merging of https://github.com/hyperledger/sawtooth-core/pull/96, the data directory for 0.8 has change from `` to `/data` or `/var/lib/sawtooth` if no `SAWTOOTH_HOME` is set. The vagrant environment will have this variable set to `~/sawtooth`.

rcampos@altus.cr (Fri, 17 Feb 2017 15:55:52 GMT):
Has left the channel.

amundson (Fri, 17 Feb 2017 17:52:30 GMT):
which means, for native windows installs, you must set SAWTOOTH_HOME for now

pschwarz (Fri, 17 Feb 2017 18:13:11 GMT):
Trying to decide where a validator's identity key should live. Would this also make sense in the data directory, or peer of that? The later makes sense when there `SAWTOOTH_HOME` is set, but less so with `/var/lib/sawtooth`

adamludvik (Fri, 17 Feb 2017 19:04:26 GMT):
I know this has come up before, but I'd like to propose that the sawtooth-validator docker container should also start up the additional processes needed to make it useful. According to docker's own best practices page "it is not necessarily true that there should be only one operating system process per container" (https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) Having these processes startup in the sawtooth validator container would make it easier to keep code that depends on the container up to date because it would shift the responsibility of orchestration into the container. This would also reduce code duplication across tests that startup a working validator. Finally, it would make the sawtooth-validator container more of a logical "whole" since I am not sure the validator is very useful without the rest_api, validator registry processor, and configuration processor.

amundson (Fri, 17 Feb 2017 19:08:23 GMT):
pschwarz: likely SAWTOOTH_HOME/etc/keys/ or /etc/sawtooth/keys/

amundson (Fri, 17 Feb 2017 19:08:23 GMT):
@pschwarz: likely SAWTOOTH_HOME/etc/keys/ or /etc/sawtooth/keys/

amundson (Fri, 17 Feb 2017 19:13:20 GMT):
@adamludvik - validator registry is poet specific and wouldn't apply to another consensus mechanism; config processor could in theory be swapped out with another txn family that updates those settings using a different authorization approach; and combining them into the validator's docker container would make managing them special (they work different than all other TPs) which seems undesirable.

adamludvik (Fri, 17 Feb 2017 19:25:39 GMT):
I guess that makes sense. Perhaps it would make sense to have a "sawtooth-poet-validator" or "sawtooth-std-validator" container that started up a selection of processes? Or are we are getting into the domain of docker-compose then... It just seems odd to have a lot of docker containers that have limited usefulness in isolation.

amundson (Fri, 17 Feb 2017 20:04:24 GMT):
Well, if we put it all in one docker, we may as well have used a vm

cianx (Sat, 18 Feb 2017 00:19:30 GMT):
I made this change https://github.com/hyperledger/sawtooth-core/pull/101/files#diff-d98fd4214fe743c74766d752fb839083R24 to the sawtooth_base docker file. Now run_tests hangs(10min+) during the docker build on that step. How do I resolve this?

cianx (Sat, 18 Feb 2017 00:27:12 GMT):
I finally got a time out message from the apt, unclear why it can't reach the internet today. The rest of the vagrant box can.

amundson (Sat, 18 Feb 2017 00:47:36 GMT):
maybe docker needs different proxy settings. @rbuysse has probably played with that the most

cianx (Sat, 18 Feb 2017 02:08:06 GMT):
Looks like that is the issue. If I log out of vpn I can get it to run. The proxy is set up correctly in vagrant. There must be a way to tell docker about it.

amundson (Sat, 18 Feb 2017 14:59:00 GMT):
IIRC, the hard part is doing that and not modifying the dockerfile directly

amundson (Mon, 20 Feb 2017 15:48:09 GMT):
I'm a bit nervous about too much **kwargs stuff going in. If we are going to have the pattern where we hide the protobuf classes within another class and then construct using **kwargs, seems like we might want to make sure that methodology is constrained to just a few places and not used everywhere.

amundson (Mon, 20 Feb 2017 15:48:09 GMT):
I'm a bit nervous about too much kwargs stuff going in. If we are going to have the pattern where we hide the protobuf classes within another class and then construct using kwargs, seems like we might want to make sure that methodology is constrained to just a few places and not used everywhere.

pschwarz (Mon, 20 Feb 2017 16:03:16 GMT):
Is that in reference to a particular PR?

boydjohnson (Mon, 20 Feb 2017 16:45:54 GMT):
What did we figure out about squashing commits on a PR. It is probably still a good idea to leave the commits unsquashed until approval happens?

vikas.singh (Mon, 20 Feb 2017 17:16:16 GMT):
Has joined the channel.

adamludvik (Mon, 20 Feb 2017 17:29:21 GMT):
@cianx I'll look into the VPN issue today

adamludvik (Mon, 20 Feb 2017 18:55:15 GMT):
@cianx What do you do to get the proxy working within vagrant? I am not able to do `sudo apt-get update` within vagrant when connected to the VPN.

adamludvik (Mon, 20 Feb 2017 22:20:41 GMT):
@cianx I created a PR assigned to you to fix the issue

boydjohnson (Mon, 20 Feb 2017 22:58:43 GMT):
@pschwarz Is my thinking right that we would always require the config transaction processor if there are batches in the GenesisData, and that any other required transaction processor would be set via on chain configuration? Then require_txn_processors in the executor could be called require_config?

amundson (Mon, 20 Feb 2017 23:05:39 GMT):
yes, at least for now, if the setting is empty for the txn family list, then it should default to the list containing only the config transaction family

amundson (Mon, 20 Feb 2017 23:07:03 GMT):
could we simplify the rule to say, if it's not set, then they are all required?

amundson (Mon, 20 Feb 2017 23:07:46 GMT):
that way, we could support alternate config family implementations during this bootstrap process as well

amundson (Mon, 20 Feb 2017 23:07:59 GMT):
(without ever explicitly setting it in the conf file)

boydjohnson (Mon, 20 Feb 2017 23:11:43 GMT):
So that would be if there are no listed required txn processors in on chain configuration, all transactions would wait until there is a transaction processor of the right type online?

amundson (Mon, 20 Feb 2017 23:13:59 GMT):
yes, with the assumption that the very first transactions should set that list on-chain

allwelder (Tue, 21 Feb 2017 08:31:56 GMT):
Has joined the channel.

boydjohnson (Tue, 21 Feb 2017 15:18:24 GMT):
@amundson and I were talking about having a trace logging level that would show more than debug since some of our debug logging could be helpful in some situations but probably isn't necessary even at the debug level. Here is a stackoverflow answer that shows how to set a custom debug level. http://stackoverflow.com/a/16955098

adamludvik (Tue, 21 Feb 2017 15:23:46 GMT):
@boydjohnson I like the idea. Would we leave trace statements in the code like debug statements? Seems like if there were trace statements everywhere there's a chance it could become unreadable.

boydjohnson (Tue, 21 Feb 2017 15:25:03 GMT):
Yeah, there would be trace logging statements. Do you mean the code would become unreadable or the logs? Some of our current debug logging statements could turn into trace logging statements.

adamludvik (Tue, 21 Feb 2017 15:29:10 GMT):
Lol, well worst case scenario, the code could become unreadable if there was a trace statement for every python statement, but I don't think that would happen I'd be more concerned that, especially if we have a lot of concurrency and parallelism, the logs may be too cluttered.

adamludvik (Tue, 21 Feb 2017 15:29:10 GMT):
Lol, well worst case scenario, the code could become unreadable if there was a trace statement for every python statement, but I don't think that would happen. I'd be more concerned that, especially if we have a lot of concurrency and parallelism, the logs may be too cluttered.

amundson (Tue, 21 Feb 2017 15:29:44 GMT):
I think my idea for how to do it is cleaner - just get a "LOGGER_TRACE = logging.getLogger("trace." + __name__)"

adamludvik (Tue, 21 Feb 2017 15:30:24 GMT):
That would be very greppable

amundson (Tue, 21 Feb 2017 15:30:37 GMT):
well, it specifically doesn't require any additional shared code

amundson (Tue, 21 Feb 2017 15:31:04 GMT):
it does require configuring the trace. logger namespace turn it off

adamludvik (Tue, 21 Feb 2017 15:32:33 GMT):
Do we have any definitions for what the different logging levels mean right now?

amundson (Tue, 21 Feb 2017 15:53:35 GMT):
not explicitly stated, no

drozd (Tue, 21 Feb 2017 20:18:47 GMT):
Has joined the channel.

boydjohnson (Tue, 21 Feb 2017 21:00:56 GMT):
We don't have anything to set config settings on the fly, do we? I have set them in the config batch used by the genesis tool, but nowhere else.

amundson (Tue, 21 Feb 2017 22:22:32 GMT):
you can use 'sawtooth config' to generate a file with the appropriate batches

pschwarz (Tue, 21 Feb 2017 22:23:17 GMT):
We don't, yet, have a CLI tool for submitting those transactions to a already-running validator

pschwarz (Tue, 21 Feb 2017 22:23:17 GMT):
We don't, yet, have a CLI tool for submitting sawtooth_config transactions to a already-running validator

amundson (Tue, 21 Feb 2017 22:23:21 GMT):
I don't think we have 'sawtooth submit' yet...

amundson (Tue, 21 Feb 2017 22:23:43 GMT):
wonder if intkey tool will send whatever branches with it's load command

boydjohnson (Tue, 21 Feb 2017 22:24:01 GMT):
Yeah, it might...

boydjohnson (Tue, 21 Feb 2017 23:18:12 GMT):
"intkey load -f config.batch" works.

boydjohnson (Tue, 21 Feb 2017 23:19:36 GMT):
I also want to mention that I seemed to introduce a bug. When transaction processors are waiting to reregister after the validator has gone away they max out their cpu. I will look into it tonight.

boydjohnson (Wed, 22 Feb 2017 15:58:11 GMT):
So to turn on debug logging inside asyncio you can "export PYTHONASYNCIODEBUG=1". When doing that the bug I mentioned yesterday happens less often but when it does it gives this output indefinitely: ```[15:20:30 DEBUG base_events] poll took 0.032 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.024 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.078 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.026 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.021 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.021 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.025 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.020 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.025 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.217 ms: 0 events ```

boydjohnson (Wed, 22 Feb 2017 15:58:11 GMT):
So to turn on debug logging inside asyncio you can "export PYTHONASYNCIODEBUG=1". When doing that the bug I mentioned yesterday happens less often but when it does it gives this output indefinitely: ```[15:20:30 DEBUG base_events] poll took 0.032 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.024 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.078 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.026 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.021 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.021 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.025 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.020 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.025 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.023 ms: 0 events [15:20:30 DEBUG base_events] poll took 0.217 ms: 0 events ```

amundson (Wed, 22 Feb 2017 19:44:49 GMT):
A large PR just went in which removes legacy code from master.

boydjohnson (Wed, 22 Feb 2017 22:32:15 GMT):
I noticed we aren't linting the manage package and there are a few things that the linter would be able to catch. @toddojala

toddojala (Wed, 22 Feb 2017 22:34:42 GMT):
I shall fix 'em

boydjohnson (Wed, 22 Feb 2017 22:35:06 GMT):
Cool, Thanks!

rbuysse (Wed, 22 Feb 2017 23:11:08 GMT):
I'm getting an error when running the tests on windows.

rbuysse (Wed, 22 Feb 2017 23:11:40 GMT):
the DevModeTestSuite is throwing:

rbuysse (Wed, 22 Feb 2017 23:11:42 GMT):
Checking for pre-existing state: WARNING:txnintegration.integer_key_communication:operation failed: [Errno 10061] No connection could be made because the target machine actively refused it

rbuysse (Wed, 22 Feb 2017 23:12:31 GMT):
this last passed before the signing stuff was committed on Feb 15, any chance those things are related?

bartcant (Thu, 23 Feb 2017 02:18:47 GMT):
Has joined the channel.

amundson (Thu, 23 Feb 2017 02:40:44 GMT):
seems likely

amundson (Thu, 23 Feb 2017 16:01:28 GMT):
The python toml library does not return very good error messages when you make a syntax error in the toml file

amundson (Thu, 23 Feb 2017 16:02:12 GMT):
```Traceback (most recent call last): File "./bin/validator", line 37, in main() File "/project/sawtooth-core/validator/sawtooth_validator/server/cli.py", line 95, in main path_config = load_path_config() File "/project/sawtooth-core/validator/sawtooth_validator/config/path.py", line 88, in load_path_config toml_config = load_toml_path_config(conf_file) File "/project/sawtooth-core/validator/sawtooth_validator/config/path.py", line 51, in load_toml_path_config toml_config = toml.loads(fd.read()) File "/usr/lib/python3/dist-packages/toml.py", line 331, in loads value, vtype = load_value(pair[1]) File "/usr/lib/python3/dist-packages/toml.py", line 471, in load_value v = int(v) ValueError: invalid literal for int() with base 10: '/tmp/v' ```

amundson (Thu, 23 Feb 2017 16:02:24 GMT):
that's the error fi you forget to quote a string

amundson (Thu, 23 Feb 2017 17:53:05 GMT):
anyone else seeing this when starting up a vaildator?

amundson (Thu, 23 Feb 2017 17:53:11 GMT):
```Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 166, in on_chain_updated self._candidate_block = self._build_block(chain_head) File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 73, in _build_block prev_state = self._get_previous_block_root_state_hash(chain_head) File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 63, in _get_previous_block_root_state_hash if blkw.previous_block_id == NULL_BLOCK_IDENTIFIER: AttributeError: 'NoneType' object has no attribute 'previous_block_id' ```

amundson (Thu, 23 Feb 2017 17:54:15 GMT):
@boydjohnson - the validator.stop() call in finally: in validator main() doesn't make sense to me

boydjohnson (Thu, 23 Feb 2017 17:55:12 GMT):
Yeah, the validator shutdown is something that I've wanted to get to.

agunde (Thu, 23 Feb 2017 17:55:23 GMT):
@amundson Did you do the genesis command? That looks like the chain_head was not set correctly.

amundson (Thu, 23 Feb 2017 17:56:07 GMT):
@agunde: I did not

amundson (Thu, 23 Feb 2017 17:58:28 GMT):
@pschwarz ^

jjason (Thu, 23 Feb 2017 19:05:24 GMT):
@amundson Yes. I was having that problem yesterday. @pschwarz set me on the straight and narrow. I had failed to create the genesis block.

amundson (Thu, 23 Feb 2017 19:17:54 GMT):
I created a JIRA task for it

pschwarz (Thu, 23 Feb 2017 19:37:44 GMT):
@mfford and I added a task for documenting the start up process (a missing element for people)

joacomoreno (Fri, 24 Feb 2017 17:53:36 GMT):
Has joined the channel.

adamludvik (Fri, 24 Feb 2017 18:53:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=8jnkcnhxuQbJk6Nv8) @jsmitchell Did we find a work around for this, or are we not supporting lmdb on Windows?

adamludvik (Fri, 24 Feb 2017 18:54:38 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=iti2dZZSBzH3uy3n7) @Tom Barnes Probably a better post to reference...

jsmitchell (Fri, 24 Feb 2017 23:11:28 GMT):
Once the local config stuff is in place we can switch to a platform/machine specific config setting for the database size

jsmitchell (Fri, 24 Feb 2017 23:12:37 GMT):
Or we might insist that validators run in containers that have file systems that support sparse files with good performance

rjones (Fri, 24 Feb 2017 23:48:50 GMT):
Has joined the channel.

rjones (Fri, 24 Feb 2017 23:49:33 GMT):
I set up a test project with a new JIRA workflow, could you try it out and let me know if you want something like it for sawtoothlake? https://jira.hyperledger.org/projects/WFT/issues/?filter=allopenissues let me know who should be an admin

Dan (Sun, 26 Feb 2017 16:21:37 GMT):
@mfford --^

PacoEcotrust (Mon, 27 Feb 2017 08:54:06 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=sW89LdXs3Jjae7mnZ) @boydjohnson , thank you very much. I would like to ask to the developer of Marketplace Navigator, why is necessary a new server?. it would not be enough change only the User Interface (Terminal for Navigator)

mansoor (Mon, 27 Feb 2017 14:56:25 GMT):
Has joined the channel.

boydjohnson (Mon, 27 Feb 2017 15:31:55 GMT):
@pschwarz I am making changes to my transaction processor configuration list support in the Transaction Executor PR branch and a thought came to me that wasn't addressed by anyone's comments: Since there can be 1 Executor with several Executor threads the waiting for transaction processor functionality should probably be owned by the TransactionExecutor not the TransactionExecutorThread, since configuration and processors registered don't change by thread.

pschwarz (Mon, 27 Feb 2017 15:32:27 GMT):
That makes sense

boydjohnson (Mon, 27 Feb 2017 15:32:42 GMT):
Sounds good. Thanks!

pschwarz (Mon, 27 Feb 2017 15:34:37 GMT):
Just to make sure I'm thinking it makes sense: in this case, if one txn processor is blocking, others can still process txns on other families that may have available processors, correct?

boydjohnson (Mon, 27 Feb 2017 15:35:37 GMT):
Yeah, that will work with my implementation, but we won't see it until we have the parallel scheduler.

pschwarz (Mon, 27 Feb 2017 15:37:14 GMT):
Ok, still making sense then :)

boydjohnson (Mon, 27 Feb 2017 15:37:26 GMT):
Cool.

jsmitchell (Mon, 27 Feb 2017 16:33:36 GMT):
@boydjohnson: have you done any testing with interconnect using ipc transport uris?

jsmitchell (Mon, 27 Feb 2017 16:33:48 GMT):
i.e. ipc:///tmp/somefile

boydjohnson (Mon, 27 Feb 2017 16:34:07 GMT):
I have not except. The monitor socket in Stream in the python sdk uses ipc.

jsmitchell (Mon, 27 Feb 2017 16:34:22 GMT):
for some reason is is not working

jsmitchell (Mon, 27 Feb 2017 16:34:36 GMT):
the validator never sees the connection from the transaction processor

boydjohnson (Mon, 27 Feb 2017 16:35:18 GMT):
Hmm. I would have thought it would work. I'll try sometime.

jsmitchell (Mon, 27 Feb 2017 16:35:37 GMT):
i lied, it actually does work

boydjohnson (Mon, 27 Feb 2017 16:35:49 GMT):
Oh, was it the three slashes?

jsmitchell (Mon, 27 Feb 2017 16:35:58 GMT):
but it doesn't print out any kind of error if it can't open the fd

jsmitchell (Mon, 27 Feb 2017 16:36:18 GMT):
(I had started the validator as root and the tp not)

boydjohnson (Mon, 27 Feb 2017 16:36:47 GMT):
On the client side, right? oh. That is because the thread inside of the Stream class swallows errors.

boydjohnson (Mon, 27 Feb 2017 16:38:24 GMT):
@zac Saw similar issues on a bad hostname, where the Stream class wouldn't connect to it and there was an error, but the thread inside of the Stream class swallowed the error, possibly because it is a daemon thread.

jsmitchell (Mon, 27 Feb 2017 16:39:46 GMT):
can you create a jira about investigating a fix for that?

boydjohnson (Mon, 27 Feb 2017 16:39:56 GMT):
Yeah, I'll do that.

jsmitchell (Mon, 27 Feb 2017 17:17:06 GMT):
@boydjohnson @agunde @jjason @cianx: can one of you review/approve https://github.com/hyperledger/sawtooth-core/pull/118

jjason (Mon, 27 Feb 2017 18:19:01 GMT):
Done

boydjohnson (Mon, 27 Feb 2017 22:20:49 GMT):
@jsmitchell I have an initial network level test task that it is my understanding is a test for validator network functionality. Sort of like a gossip smoke test. Because it seems like you have some interesting network changes around peering that might be up soon, do you think it makes sense for me to base my current work off of your branch?

jsmitchell (Mon, 27 Feb 2017 22:56:14 GMT):
@boydjohnson: can you defer it for a few days, or do you need to work on it now?

boydjohnson (Tue, 28 Feb 2017 01:19:54 GMT):
@jsmitchell I can defer it.

boydjohnson (Tue, 28 Feb 2017 15:31:04 GMT):
`intkey load batches: 1001 batch/sec: 304.1413737474129`

boydjohnson (Tue, 28 Feb 2017 15:31:04 GMT):
What do you make of the difference between ours? Mine is on my fix threading shutdown-startup issues branch.

jsmitchell (Tue, 28 Feb 2017 15:31:30 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/intkey load batches: 1001 batch/sec: 743.2837209911658 ```

boydjohnson (Tue, 28 Feb 2017 15:33:10 GMT):
Nice speedup on the secp signing! Is that about what you have been seeing for batches per second?

jsmitchell (Tue, 28 Feb 2017 15:33:26 GMT):
you should run intkey create_batch :)

boydjohnson (Tue, 28 Feb 2017 15:34:02 GMT):
Yeah, I saw that is much faster. It blew up for me without doing that.

boydjohnson (Tue, 28 Feb 2017 15:39:40 GMT):
I'm guessing "intkey create_batch -B 10" with the maximum txns per batch being 10 for your run?

jsmitchell (Tue, 28 Feb 2017 15:40:04 GMT):
@boydjohnson: have you seen a thing where a node gets more than the 2-tuple on initial recv_multipart and it throws ValueError on the unpack?

boydjohnson (Tue, 28 Feb 2017 15:40:40 GMT):
I have seen that while working on the SendReceive, but not on master.

jsmitchell (Tue, 28 Feb 2017 15:40:49 GMT):
for some reason this message contains multiple identities

jsmitchell (Tue, 28 Feb 2017 15:40:56 GMT):
prior to the payload

boydjohnson (Tue, 28 Feb 2017 15:41:09 GMT):
If you set an identity on the Router socket it will receive it on every message.

jsmitchell (Tue, 28 Feb 2017 15:41:21 GMT):
```[15:32:18.313 DEBUG gossip_handlers] got peer register message from b'tcp://0.0.0.0:8802-ab2b105fe389a01b126c455'. sending ack [15:32:18.314 DEBUG gossip] Added identity b'tcp://0.0.0.0:8802-ab2b105fe389a01b126c455', connected identities are now [b'tcp://0.0.0.0:8801-37ba9c769772e1d98b713a9', b'tcp://0.0.0.0:8802-ab2b105fe389a01b126c455'] [15:32:18.314 DEBUG interconnect] ServerThread sending GOSSIP_ACK to b'tcp://0.0.0.0:8802-ab2b105fe389a01b126c455' [15:32:18.321 CRITICALinterconnect] TOO MUCH FROM RECV_MULTIPART: [b'tcp://0.0.0.0:8801-37ba9c769772e1d98b713a9', b'tcp://0.0.0.0:8802-79688e7ad3bc8b6cd1baf99', b'\x08\xcb\x01\x12\x80\x018cba4e4e26a44433b982bcde9aa8fd5bc452e99015a554cee83b3f8db5eb7055510134147ca51e662c29230c1f20d79bd8670f4005430ba82636cba85338bcdb'] ```

boydjohnson (Tue, 28 Feb 2017 15:41:23 GMT):
as well as the dealer's identity.

jsmitchell (Tue, 28 Feb 2017 15:41:56 GMT):
@boydjohnson: I think I just did `intkey create_batch -c 1000`

boydjohnson (Tue, 28 Feb 2017 15:42:27 GMT):
Wow, that is the default, I think.

boydjohnson (Tue, 28 Feb 2017 15:43:16 GMT):
In your branch have you changed SendReceive.setup(), where only the Dealer socket gets an identity?

jsmitchell (Tue, 28 Feb 2017 15:43:20 GMT):
(I changed the first part of the identity to be endpoint so I could make sense of what was going on)

jsmitchell (Tue, 28 Feb 2017 15:44:10 GMT):
yep, only the dealer has an identity set in setup()

boydjohnson (Tue, 28 Feb 2017 15:44:16 GMT):
Hmm.

jsmitchell (Tue, 28 Feb 2017 15:58:38 GMT):
the node being connected to also sends two acks as a result of this

boydjohnson (Tue, 28 Feb 2017 16:02:27 GMT):
Looking through those logging statements there look to be 2 8802 identities. In the line just before the CRITICAL logging it sends an ack to 8802 with one identity and receives a message where one identity is 8802.

jsmitchell (Tue, 28 Feb 2017 16:03:26 GMT):
yeah, it's like it does it twice

jsmitchell (Tue, 28 Feb 2017 16:03:40 GMT):
once correctly, and then with the extra identity

jsmitchell (Tue, 28 Feb 2017 16:15:31 GMT):
i see what it is

wheelsinar (Wed, 01 Mar 2017 13:25:52 GMT):
Has joined the channel.

amundson (Wed, 01 Mar 2017 14:59:50 GMT):
join #sawtoothlake-pr-review for PR notifications

jsmitchell (Wed, 01 Mar 2017 15:09:28 GMT):
@boydjohnson or @agunde: Could one of you do a quick review of https://github.com/hyperledger/sawtooth-core/pull/132

boydjohnson (Wed, 01 Mar 2017 15:11:05 GMT):
@jsmitchell Looking at it right now.

jsmitchell (Wed, 01 Mar 2017 15:11:15 GMT):
cheers

rjones (Wed, 01 Mar 2017 15:18:00 GMT):
the automatic PR notifications in #sawtoothlake-pr-review aren't quite hooked up yet, I'm still working on it :)

jsmitchell (Wed, 01 Mar 2017 15:18:31 GMT):
thanks, ry

rjones (Wed, 01 Mar 2017 15:33:54 GMT):
it should fire now on PR, let's wait and see

boydjohnson (Wed, 01 Mar 2017 15:35:26 GMT):
@jsmitchell I approved the PR. Something to think about when doing more of the peering stuff is keeping threadsafety during removing a connection to a peer. The dispatcher.remove_send_message modifies the dispatcher._send_message dict that could be being accessed from within the dispatcher thread.

jsmitchell (Wed, 01 Mar 2017 15:59:58 GMT):
are you suggesting I wrap the add and del in with self._condition: ?

awalias (Wed, 01 Mar 2017 16:03:51 GMT):
Has joined the channel.

jsmitchell (Wed, 01 Mar 2017 16:14:09 GMT):
@rjones: seem to be getting some dups on the PRs

boydjohnson (Wed, 01 Mar 2017 16:18:05 GMT):
@jsmitchell that seems like the easiest way to do it. You could make a threadsafe dict implementation just for this purpose. I don't fully know the best way. Since the _condition is also being used to keep theadsafety on _message_information it might make more sense to make a threadsafe dict and use it for both message_information and _send_message.

boydjohnson (Wed, 01 Mar 2017 16:18:05 GMT):
@jsmitchell that seems like the easiest way to do it. You could make a threadsafe dict implementation just for this purpose. I don't fully know the best way. Since the condition is also being used to keep theadsafety on message_information it might make more sense to make a threadsafe dict and use it for both message_information and _send_message.

boydjohnson (Wed, 01 Mar 2017 16:18:05 GMT):
@jsmitchell that seems like the easiest way to do it. You could make a threadsafe dict implementation just for this purpose. I don't fully know the best way. Since the condition is also being used to keep theadsafety on message_information it might make more sense to make a threadsafe dict and use it for both message_information and send_message.

jsmitchell (Wed, 01 Mar 2017 16:19:45 GMT):
premature optimization maybe. Let's take a closer look at it when we get to perf tuning and look at lock durations.

boydjohnson (Wed, 01 Mar 2017 16:20:07 GMT):
Sounds good.

mfford (Wed, 01 Mar 2017 18:49:38 GMT):
@rjones you can make me the admin of the Sawtooth Lake project in JIRA. As far as the test workflow goes, we are looking at requirements for further utilizing the Hyperledger JIRA for STL and will get back to you.

zac (Wed, 01 Mar 2017 19:17:24 GMT):
@amundson: Have had a chat with @boydjohnson and @agunde regarding `CLIENT_BATCH_SUBMIT_RESPONSE` Messages waiting until the batch has been committed or rejected to send. Would like to run an approach by you.

zac (Wed, 01 Mar 2017 19:18:10 GMT):
The idea is that a handler would be added to the batch submit process at the end, which would wait on a Condition from the block store and the batch cache

zac (Wed, 01 Mar 2017 19:18:47 GMT):
If the block store added the submitted batch, the handler is notified and sends the ZMQ response

rjones (Wed, 01 Mar 2017 19:19:06 GMT):
@mfford you already were an admin on JIRA for STL

zac (Wed, 01 Mar 2017 19:19:37 GMT):
Similarly, if the batch is removed from the batch cache but _not_ added to the block store, a response is sent back, notifying the client that the batch was rejected

mfford (Wed, 01 Mar 2017 19:49:08 GMT):
@rjones yup. Just was confirming that I retain that role, but I could have certainly said it better.

rjones (Wed, 01 Mar 2017 21:01:43 GMT):
@jsmitchell here is the javascript for the inbound hook: https://gist.github.com/rjones-lf/fbe68e5fc9cef6ae6a8847df7d08f739 this is a copy of the default one. I will be offline for a couple weeks but feel free to kibitz on how you want that hook (the one that generates traffic in #sawtoothlake-pr-review) modified

rjones (Wed, 01 Mar 2017 21:02:12 GMT):
or if you come up with anything you want changed in the next... three hours or so? I can make changes

amundson (Wed, 01 Mar 2017 23:16:56 GMT):
@rjones is someone your backup for the next few weeks?

rjones (Thu, 02 Mar 2017 00:00:15 GMT):
@amundson yes, @jwagantall will be

jwagantall (Thu, 02 Mar 2017 00:00:15 GMT):
Has joined the channel.

jwagantall (Thu, 02 Mar 2017 00:00:32 GMT):
me \o/

jwagantall (Thu, 02 Mar 2017 00:00:40 GMT):
:raised_hands:

jsmitchell (Thu, 02 Mar 2017 00:05:54 GMT):
nice! Thanks @rjones - see you in a few weeks

jsmitchell (Thu, 02 Mar 2017 00:06:16 GMT):
hi @jwagantall

jwagantall (Thu, 02 Mar 2017 00:06:28 GMT):
hi! :) tell me

domingohui (Thu, 02 Mar 2017 02:33:27 GMT):
Has joined the channel.

Dan (Thu, 02 Mar 2017 14:32:07 GMT):
@amundson for local config settings, I'll switch spec from StudlyCaps to snake_case for variables unless someone has a strong feeling for some other style.

adamludvik (Thu, 02 Mar 2017 14:58:34 GMT):
Jenkins is going down for a minute to create a backup image.

adamludvik (Thu, 02 Mar 2017 15:01:25 GMT):
Back up

boydjohnson (Thu, 02 Mar 2017 16:40:17 GMT):
Hi @pschwarz Can you confirm my understanding? The key provided for the config txns would be the wif key associated with whoever is making the batch, probably not the validator key. Then after the genesis file is made, with or without genesis batches, and the validator starts up it signs the genesis block with its own key.

jsmitchell (Thu, 02 Mar 2017 16:42:27 GMT):
@zac: looks like https://github.com/hyperledger/sawtooth-core/pull/146 is ready for merge

zac (Thu, 02 Mar 2017 16:43:11 GMT):
Merged

pschwarz (Thu, 02 Mar 2017 16:44:39 GMT):
@boydjohnson that's correct

pauln (Fri, 03 Mar 2017 06:54:33 GMT):
Has joined the channel.

Romanix (Fri, 03 Mar 2017 09:04:34 GMT):
Has joined the channel.

Romanix (Fri, 03 Mar 2017 09:13:42 GMT):
Hi. I intend to do a little shared ledger / blockchain prototype - with transaction confidentiality (not all nodes should see all transaction details). From the documentation https://intelledger.github.io/ it's not clear whether Sawtooth Lake transactions are visible to all nodes or not i.e. whether it's possible to encrypt transaction details or not.

Dan (Fri, 03 Mar 2017 16:55:06 GMT):
@Romanix Good question. Short answer is you can write a transaction family that uses encrypted transactions. The pattern I've seen emerging for this is that participants sign a transaction on the side, and then the encrypted result or its hash is stored back to the blockchain.

Dan (Fri, 03 Mar 2017 16:55:30 GMT):
That opaque transaction is what is reflected in the shared ledger.

Dan (Fri, 03 Mar 2017 16:56:33 GMT):
I will say that these side-band transaction models feel at odds with the premise of a shared database.

Dan (Fri, 03 Mar 2017 16:59:10 GMT):
To fit this model into sawtooth you'd have a more sophisticated client that would orchestrate the multi-sig. Then that client would submit the encrypted result or its hash to the blockchain proper.

boydjohnson (Fri, 03 Mar 2017 16:59:10 GMT):
@Dan Does the transaction family do much checking then, if the transaction is encrypted?

kelly_ (Fri, 03 Mar 2017 17:11:02 GMT):
@boydjohnson the transaction family could check signatures of relevant parties

kelly_ (Fri, 03 Mar 2017 17:11:15 GMT):
e.g party a and party b have both signed txn hash xyz

kelly_ (Fri, 03 Mar 2017 17:11:25 GMT):
that is how IBM Fabric works I believe

kelly_ (Fri, 03 Mar 2017 18:27:41 GMT):
yup, just checked with IBM

kelly_ (Fri, 03 Mar 2017 18:27:50 GMT):
slash fabric

kelly_ (Fri, 03 Mar 2017 18:28:16 GMT):
you could define a transaction family as requring signatures on an encrypted blob before it gets added to the journal

kelly_ (Fri, 03 Mar 2017 18:28:32 GMT):
then at least you have agreement from relevant parties on the blog prior to adding it to ledger

boydjohnson (Fri, 03 Mar 2017 19:15:11 GMT):
@kelly_ Would the pubkeys of the signers be added to the ledger? Like pubkey A, pubkey B are tied to the transaction?

pschwarz (Fri, 03 Mar 2017 19:33:57 GMT):
@jsmitchell Any reason we can't have `__contains__` on the MerkleDatabase for a given address?

boydjohnson (Fri, 03 Mar 2017 19:36:25 GMT):
https://docs.python.org/3.5/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe This is from the Python docs about operations on builtin data structures that are threadsafe

jsmitchell (Fri, 03 Mar 2017 21:13:28 GMT):
@pschwarz Seems eminently feasible

pauln (Sat, 04 Mar 2017 00:03:16 GMT):
Has anyone tried running (successfully I hope) Sawtooth on Bash on Ubuntu on Windows (Bash/WSL)?

boydjohnson (Sat, 04 Mar 2017 00:09:14 GMT):
Hi @pauln, I haven't heard of anyone doing that. One thing to know is that there is a big difference between the 0.7 branch and master. If you have time let us know what you find. For the master branch we have some docker support, so that would be an option too.

pauln (Sat, 04 Mar 2017 00:11:50 GMT):
From what I'm reading on installing vagrant and other VM stuff, Bash/WSL is not ready for prime time. I'll keep poking/googling around. In the mean time I'll RTFM and follow the instruction to install on a WIN10 platform. Thanks @boydjohnson !

boydjohnson (Sat, 04 Mar 2017 00:13:28 GMT):
Your welcome!

boydjohnson (Sat, 04 Mar 2017 00:13:28 GMT):
You're welcome!

jsmitchell (Mon, 06 Mar 2017 16:02:55 GMT):
@boydjohnson or @agunde: do we have an example of returning an error instead of an ack yet?

boydjohnson (Mon, 06 Mar 2017 16:03:54 GMT):
I thought pull #162 does that.

boydjohnson (Mon, 06 Mar 2017 16:03:54 GMT):
I thought PR #162 does that.

jsmitchell (Mon, 06 Mar 2017 16:05:15 GMT):
i mean in a network response

boydjohnson (Mon, 06 Mar 2017 16:05:29 GMT):
Oh, sorry. No.

jsmitchell (Mon, 06 Mar 2017 16:06:23 GMT):
Any concerns with a GOSSIP_ERROR concept?

jsmitchell (Mon, 06 Mar 2017 16:07:03 GMT):
where the message handler would either return a GOSSIP_ACK or GOSSIP_ERROR depending on the condition

boydjohnson (Mon, 06 Mar 2017 16:08:10 GMT):
Would that be a Status enum with those two types? I would probably make sense since we might not want to be too detailed in how it was an error.

jsmitchell (Mon, 06 Mar 2017 16:08:43 GMT):
no, I was thinking a separate message type/protobuf

jsmitchell (Mon, 06 Mar 2017 16:09:00 GMT):
for ERROR

jsmitchell (Mon, 06 Mar 2017 16:09:18 GMT):
which could contain error code and message

jsmitchell (Mon, 06 Mar 2017 16:09:55 GMT):
I guess there is already this ack.status

jsmitchell (Mon, 06 Mar 2017 16:10:12 GMT):
I'll just use that for now

boydjohnson (Mon, 06 Mar 2017 16:10:33 GMT):
Ok.

boydjohnson (Mon, 06 Mar 2017 16:20:03 GMT):
@jjason @jsmitchell https://sphinxcontrib-napoleon.readthedocs.io/en/latest/ Several comments on a PR about picking a style of doc string. Some people are using the rst style docstring and some people are using Python Google docstring style. Napolean is a plugin for sphinx (packaged with sphinx 1.3 and above). The above post makes the case for Google docstrings. As an aside the autodoc plugin for Pycharm will allow you (after setting some settings) will help you write Google style docstrings.

jsmitchell (Mon, 06 Mar 2017 16:20:43 GMT):
@boydjohnson: yep, that's the approach we took for 0.7 (napoleon + google style)

amundson (Mon, 06 Mar 2017 16:25:14 GMT):
I prefer the google style. We need to write up some text explaining the desired format, etc. Perhaps as part of http://intelledger.github.io/0.8/community/contributing.html

amundson (Mon, 06 Mar 2017 16:26:19 GMT):
@rbuysse @jsmitchell - should the validator aggressively attempt to create directories if they don't exist, such as data dir and key dir?

jsmitchell (Mon, 06 Mar 2017 16:26:44 GMT):
super aggressively

amundson (Mon, 06 Mar 2017 16:27:34 GMT):
trying to think of any other daemon process that creates directories if they don't exist

amundson (Mon, 06 Mar 2017 16:27:37 GMT):
I don't think it's a thing

amundson (Mon, 06 Mar 2017 16:28:13 GMT):
so it seems to me that the correct behavior is to exit if the directories don't exist (if they are needed)

amundson (Mon, 06 Mar 2017 16:28:29 GMT):
data_dir, log_dir are certainly needed

jsmitchell (Mon, 06 Mar 2017 16:29:23 GMT):
i think key generation should be explicit too

jsmitchell (Mon, 06 Mar 2017 16:29:49 GMT):
exit if not key_dir

jsmitchell (Mon, 06 Mar 2017 16:30:03 GMT):
exit if keys not found

amundson (Mon, 06 Mar 2017 16:31:07 GMT):
ok, how about this: 1) die w/message if data_dir, log_dir don't exist; 2) die w/message if key file can't be loaded; 3) continue to load if conf_dir does not exist

amundson (Mon, 06 Mar 2017 16:31:31 GMT):
for (2), it seems like the error should be about the key file, and we don't write to the directory, so we don't really need the directory to exist per-se

jsmitchell (Mon, 06 Mar 2017 16:32:12 GMT):
@boydjohnson: thoughts on how to dispatch/handle responses which resolve futures in _receive_message()?

jsmitchell (Mon, 06 Mar 2017 16:32:12 GMT):
@boydjohnson: thoughts on how to dispatch/handle responses which resolve futures in _receive_ message()?

jsmitchell (Mon, 06 Mar 2017 16:32:12 GMT):
@boydjohnson: thoughts on how to dispatch/handle responses which resolve futures in ```_receive_message()```?

jsmitchell (Mon, 06 Mar 2017 16:32:12 GMT):
@boydjohnson: thoughts on how to dispatch/handle responses which resolve futures in '_receive_message()'?

jsmitchell (Mon, 06 Mar 2017 16:32:26 GMT):
@amundson: sounds fine

boydjohnson (Mon, 06 Mar 2017 16:33:02 GMT):
Wouldn't the component that called send have the future and be able to do what it needs to with it?

jsmitchell (Mon, 06 Mar 2017 16:33:33 GMT):
yeah, but what's the calling event?

boydjohnson (Mon, 06 Mar 2017 16:34:24 GMT):
Oh, there also are callbacks on the server futures.

jsmitchell (Mon, 06 Mar 2017 16:34:32 GMT):
I'm looking at that try, except, else in '_receive_message()'

jsmitchell (Mon, 06 Mar 2017 16:35:08 GMT):
ahh

jsmitchell (Mon, 06 Mar 2017 16:35:16 GMT):
add_callback on set_result

jsmitchell (Mon, 06 Mar 2017 16:35:22 GMT):
nice

boydjohnson (Mon, 06 Mar 2017 16:35:57 GMT):
Yeah, it isn't so great right now because each time it starts up a new thread, but me validator shutdown pr will run those in a threadpool.

boydjohnson (Mon, 06 Mar 2017 16:35:57 GMT):
Yeah, it isn't so great right now because each time it starts up a new thread, but my validator shutdown pr will run those in a threadpool.

amundson (Mon, 06 Mar 2017 16:37:39 GMT):
I think this don't-create-the-directory approach also prevents race conditions between components

jjason (Mon, 06 Mar 2017 16:54:58 GMT):
@boydjohnson @jsmitchell Okay. I am going to keep doing what I am doing as I unwittingly was doing the "right" thing....and I had PyCharm there to help me out.

vkandy (Mon, 06 Mar 2017 18:07:23 GMT):
Has joined the channel.

amundson (Mon, 06 Mar 2017 19:18:32 GMT):
what is the right approach to determine whether the contents of a wif key are valid?

amundson (Mon, 06 Mar 2017 19:19:51 GMT):
```[19:17:22.601 INFO keys] Loading signing key: /home/ubuntu/sawtooth/keys/validator.wif Traceback (most recent call last): File "./bin/validator", line 37, in main() File "/project/sawtooth-core/validator/sawtooth_validator/server/cli.py", line 115, in main key_name='validator') File "/project/sawtooth-core/validator/sawtooth_validator/server/keys.py", line 55, in load_identity_signing_key signing.decode_privkey(wif_key), 'hex') File "/project/sawtooth-core/signing/sawtooth_signing/secp256k1_signer.py", line 105, in decode_privkey return _decode_privkey_to_bytes(encoded_privkey, encoding_format) File "/project/sawtooth-core/signing/sawtooth_signing/secp256k1_signer.py", line 77, in _decode_privkey_to_bytes priv = pybitcointools.encode_privkey(encoded_privkey, 'hex') File "/usr/local/lib/python3.5/dist-packages/bitcoin/main.py", line 224, in encode_privkey return encode_privkey(decode_privkey(priv), formt, vbyte) File "/usr/local/lib/python3.5/dist-packages/bitcoin/main.py", line 237, in decode_privkey if not formt: formt = get_privkey_format(priv) File "/usr/local/lib/python3.5/dist-packages/bitcoin/main.py", line 217, in get_privkey_format bin_p = b58check_to_bin(priv) File "/usr/local/lib/python3.5/dist-packages/bitcoin/main.py", line 427, in b58check_to_bin assert bin_dbl_sha256(data[:-4])[:4] == data[-4:] AssertionError ```

amundson (Mon, 06 Mar 2017 19:20:24 GMT):
that's with a .wif file with a prepended 'a' in it

jsmitchell (Mon, 06 Mar 2017 19:24:30 GMT):
``` def get_privkey_format(priv): if isinstance(priv, int_types): return 'decimal' elif len(priv) == 32: return 'bin' elif len(priv) == 33: return 'bin_compressed' elif len(priv) == 64: return 'hex' elif len(priv) == 66: return 'hex_compressed' else: bin_p = b58check_to_bin(priv) if len(bin_p) == 32: return 'wif' elif len(bin_p) == 33: return 'wif_compressed' else: raise Exception("WIF does not represent privkey")```

jsmitchell (Mon, 06 Mar 2017 19:24:37 GMT):
how pybitcointools does it

jsmitchell (Mon, 06 Mar 2017 19:24:57 GMT):
```def b58check_to_bin(inp): leadingzbytes = len(re.match('^1*', inp).group(0)) data = b'\x00' * leadingzbytes + changebase(inp, 58, 256) assert bin_dbl_sha256(data[:-4])[:4] == data[-4:] return data[1:-4]```

amundson (Mon, 06 Mar 2017 19:26:18 GMT):
``` try: decoded_key = signing.decode_privkey(wif_key) except AssertionError: raise LocalConfigurationError( "Could not decode key contained in file (AssertionError): " "{}".format(key_path))```

amundson (Mon, 06 Mar 2017 19:26:25 GMT):
how about something like that for now?

amundson (Mon, 06 Mar 2017 19:26:38 GMT):
I think there should be an is_valid type of thing in signing if it gets more complex

jsmitchell (Mon, 06 Mar 2017 19:26:41 GMT):
seems legit

adamludvik (Mon, 06 Mar 2017 20:27:09 GMT):
Anybody want to review a PR for me?

jsmitchell (Mon, 06 Mar 2017 20:35:14 GMT):
yeah, sure @adamludvik

adamludvik (Mon, 06 Mar 2017 20:35:26 GMT):
https://github.com/hyperledger/sawtooth-core/pull/159

adamludvik (Mon, 06 Mar 2017 20:35:28 GMT):
Thanks!

jsmitchell (Mon, 06 Mar 2017 21:56:01 GMT):
The sdk doesn't care for unknown message types

jsmitchell (Mon, 06 Mar 2017 21:56:07 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/tp_intkey_python tcp://loost:40000 -vv [21:46:59 DEBUG selector_events] Using selector: ZMQSelector [21:46:59 INFO core] register attempt: OK [21:47:07 DEBUG core] received message of type: GOSSIP_PING Traceback (most recent call last): File "./bin/tp_intkey_python", line 39, in main() File "/project/sawtooth-core/sdk/examples/intkey_python/sawtooth_intkey/processor/main.py", line 93, in main processor.start() File "/project/sawtooth-core/sdk/python/sawtooth_sdk/processor/core.py", line 207, in start self._process_future(fut) File "/project/sawtooth-core/sdk/python/sawtooth_sdk/processor/core.py", line 162, in _process_future self._process(msg) File "/project/sawtooth-core/sdk/python/sawtooth_sdk/processor/core.py", line 102, in _process self._find_handler(header).apply(request, state) File "/project/sawtooth-core/sdk/python/sawtooth_sdk/processor/core.py", line 65, in _find_handler self._handlers))[0] IndexError: list index out of range```

boydjohnson (Mon, 06 Mar 2017 22:02:39 GMT):
I'll make a jira for it.

jsmitchell (Mon, 06 Mar 2017 22:06:11 GMT):
thanks!

WeDoIoE (Tue, 07 Mar 2017 00:16:34 GMT):
Has joined the channel.

alihendavi (Tue, 07 Mar 2017 06:30:31 GMT):
Has joined the channel.

jsmitchell (Tue, 07 Mar 2017 15:30:27 GMT):
@boydjohnson: I have occasionally seen ZMQ bind issues when no processes are running

jsmitchell (Tue, 07 Mar 2017 15:30:33 GMT):
```Traceback (most recent call last): File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "/usr/lib/python3.5/threading.py", line 862, in run self._target(*self._args, **self._kwargs) File "/project/sawtooth-core/validator/sawtooth_validator/networking/interconnect.py", line 240, in setup self._socket.bind(self._address) File "zmq/backend/cython/socket.pyx", line 487, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5156) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:7535) zmq.error.ZMQError: Address already in use```

jsmitchell (Tue, 07 Mar 2017 15:31:05 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ ps -ef | grep python ubuntu 15003 14538 0 15:30 pts/0 00:00:00 grep --color=auto python```

jsmitchell (Tue, 07 Mar 2017 15:32:29 GMT):
I will attempt to catch it with lsof next time I see it

boydjohnson (Tue, 07 Mar 2017 15:37:36 GMT):
So that might be happening because of bad validator shutdown. When you shutdown a validator under load sometimes the multiprocessing processes hang on to sockets (for some strange reason). Doing "netstat -tp" sometimes shows processes, but other times it doesn't show a process, but just "TIME_WAIT". I hope it will be fixed in my validator shutdown task that will have a PR soon.

jsmitchell (Tue, 07 Mar 2017 20:27:40 GMT):
@agunde @boydjohnson @Dan: Can one of you give me a second review of https://github.com/hyperledger/sawtooth-core/pull/169

boydjohnson (Tue, 07 Mar 2017 20:40:30 GMT):
@jsmitchell I had a comment on it, but asked for changes or clarification.

jsmitchell (Tue, 07 Mar 2017 21:10:42 GMT):
@boydjohnson: updated

boydjohnson (Tue, 07 Mar 2017 21:10:55 GMT):
Cool, I'll take a look.

jsmitchell (Tue, 07 Mar 2017 23:17:38 GMT):
@boydjohnson: I put some logging in Interconnect.stop() for reasons and I noticed that stop() is getting called very early in validator startup, which confused me. Any clues?

boydjohnson (Tue, 07 Mar 2017 23:19:10 GMT):
Yes, validator.start doesn't wait anywhere and it falls through to finally in cli.py where validator.stop sits at service.stop() which has a join in it. Very bad behavior.

jsmitchell (Tue, 07 Mar 2017 23:19:23 GMT):
naughty naughty

boydjohnson (Tue, 07 Mar 2017 23:28:46 GMT):
So switching 'n' in the Lmdb block store constructor to '' or anything else really, seems too work. A test that starts validator (with genesis), tp_intkey_python, rest_api, then sigints them all, then starts them all again, and then runs intkey-smoke on them passes mostly with intermittent errors that don't seem validator related. I will no include the restart test in my PR since it is slowing me down. I will try to push up a PR this evening.

boydjohnson (Tue, 07 Mar 2017 23:28:46 GMT):
So switching 'n' in the Lmdb block store constructor to '' or anything else really, seems too work. A test that starts validator (with genesis), tp_intkey_python, rest_api, then sigints them all, then starts them all again, and then runs intkey-smoke on them passes mostly with intermittent errors that don't seem validator related. I will not include the restart test in my PR since it is slowing me down. I will try to push up a PR this evening.

Suma (Wed, 08 Mar 2017 15:45:02 GMT):
Has joined the channel.

jjason (Wed, 08 Mar 2017 18:17:32 GMT):
Stupid question. Anyone seen the following and can tell what stupid thing I am forgetting to do. The error results when I try to import transaction_pb2: File "/project/sawtooth-core/validator/sawtooth_validator/journal/consensus/poet/poet_consensus/poet_block_publisher.py", line 35, in import sawtooth_sdk.protobuf.transaction_pb2 as transaction_pb2 File "/project/sawtooth-core/sdk/python/sawtooth_sdk/protobuf/transaction_pb2.py", line 22, in serialized_pb=_b('\n\'sawtooth_sdk/protobuf/transaction.proto\"\xe7\x01\n\x11TransactionHeader\x12\x16\n\x0e\x62\x61tcher_pubkey\x18\x01 \x01(\t\x12\x14\n\x0c\x64\x65pendencies\x18\x02 \x03(\t\x12\x13\n\x0b\x66\x61mily_name\x18\x03 \x01(\t\x12\x16\n\x0e\x66\x61mily_version\x18\x04 \x01(\t\x12\x0e\n\x06inputs\x18\x05 \x03(\t\x12\r\n\x05nonce\x18\x06 \x01(\t\x12\x0f\n\x07outputs\x18\x07 \x03(\t\x12\x18\n\x10payload_encoding\x18\x08 \x01(\t\x12\x16\n\x0epayload_sha512\x18\t \x01(\t\x12\x15\n\rsigner_pubkey\x18\n \x01(\t\"H\n\x0bTransaction\x12\x0e\n\x06header\x18\x01 \x01(\x0c\x12\x18\n\x10header_signature\x18\x02 \x01(\t\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\x42\x19\n\x15sawtooth.sdk.protobufP\x01\x62\x06proto3') File "/usr/local/lib/python3.5/dist-packages/google/protobuf/descriptor.py", line 824, in __new__ return _message.default_pool.AddSerializedFile(serialized_pb) TypeError: Couldn't build proto file into descriptor pool!

jjason (Wed, 08 Mar 2017 18:18:21 GMT):
Invalid proto descriptor for file "sawtooth_sdk/protobuf/transaction.proto": TransactionHeader.batcher_pubkey: "TransactionHeader.batcher_pubkey" is already defined in file "sawtooth_validator/protobuf/transaction.proto".

boydjohnson (Wed, 08 Mar 2017 18:25:15 GMT):
So I see weirdness, in that something on the validator/sawtooth_validator path would be importing something from sawtooth_sdk. When the protobuf classes are generated they are put in the sdk and sawtooth_validator and mixing them causes weird errors.

jjason (Wed, 08 Mar 2017 18:26:21 GMT):
Fair enough....let me fix that.

jjason (Wed, 08 Mar 2017 18:26:38 GMT):
I was cut-and-pasting from another file.....

boydjohnson (Wed, 08 Mar 2017 18:26:47 GMT):
Ahh.

boydjohnson (Wed, 08 Mar 2017 18:32:22 GMT):
Did that fix the error?

jjason (Wed, 08 Mar 2017 18:36:48 GMT):
Well...I ran into another problem first. A previous validator seems to have grabbed TCP port 40000 and won't let go (netstat tells me that the port is in ESTABLISHED state). I cannot find the process.... :(

boydjohnson (Wed, 08 Mar 2017 18:37:09 GMT):
netstat -tp doesn't show a process?

jjason (Wed, 08 Mar 2017 18:39:03 GMT):
Thx...that was the magic flag I was reading through the man page for ;)

jjason (Wed, 08 Mar 2017 18:39:14 GMT):
Saved me a couple of minutes of reading....

jjason (Wed, 08 Mar 2017 18:40:05 GMT):
Now I just have to wait for TIME_WAIT period to expire....

jjason (Wed, 08 Mar 2017 19:58:40 GMT):
@boydjohnson Thanks...got past that error and ran into other problems, working through them.

jsmitchell (Wed, 08 Mar 2017 19:59:52 GMT):
@jjason: I have seen address in use errors too. Does lsof -i :40000 show anything?

jsmitchell (Wed, 08 Mar 2017 20:02:25 GMT):
@boydjohnson: suggestions that linger settings may help

jsmitchell (Wed, 08 Mar 2017 20:02:38 GMT):
TIME_WAIT: https://hea-www.harvard.edu/~fine/Tech/addrinuse.html

boydjohnson (Wed, 08 Mar 2017 20:15:58 GMT):
@jsmitchell Thanks for that link, I added the linger stuff to the sdk, but somehow overlooked in the validator shutdown PR. I will add that right now.

jjason (Wed, 08 Mar 2017 21:47:57 GMT):
@jsmitchell Thanks. I'll try lsof next time. wrt TIME_WAIT, easy to kill transaction processors before killing validator....and although I like not having to stop transaction processors every time I restart the validator, if it means not waiting for the timeout....

yairfr (Thu, 09 Mar 2017 07:21:47 GMT):
Has joined the channel.

yairfr (Thu, 09 Mar 2017 15:06:36 GMT):
Hi, I'm trying to set up sawtoothlake for the first time and encountered problems.

yairfr (Thu, 09 Mar 2017 15:08:43 GMT):
It looks like it relates to the fact that I'm behinf a proxy. Figured to to set it up for vagrant, but it seems that I need to apply some more settings for npm :(

boydjohnson (Thu, 09 Mar 2017 15:11:08 GMT):
Hi @yairfr, are you using the 0-7 branch or master/0-8?

yairfr (Thu, 09 Mar 2017 15:22:23 GMT):
I think 0.8, but how can I verify?

yairfr (Thu, 09 Mar 2017 15:23:02 GMT):
(At least i try to follow the 0.8 instructions)

yairfr (Thu, 09 Mar 2017 15:24:19 GMT):
git clone https://github.com/IntelLedger/sawtooth-core.git

boydjohnson (Thu, 09 Mar 2017 15:41:49 GMT):
git clone will get you the current master, which we call 0-8. If git status says you are on branch master then that would tell you also. You mentioned npm, are you running the javascript sdk transaction processor?

yairfr (Thu, 09 Mar 2017 15:42:48 GMT):
Your branch is up-to-date with 'origin/master'.

yairfr (Thu, 09 Mar 2017 15:42:57 GMT):
anyway made some progress.

yairfr (Thu, 09 Mar 2017 15:43:13 GMT):
it seems that npm should respect the procy env cariables

yairfr (Thu, 09 Mar 2017 15:43:20 GMT):
those are correctly defined

yairfr (Thu, 09 Mar 2017 15:44:33 GMT):
there was a problem with the host file i bypassed it by adding ubuntu-xenial as an alias to localhost, it solved that problem

yairfr (Thu, 09 Mar 2017 15:44:44 GMT):
tthe current one is more difficult

yairfr (Thu, 09 Mar 2017 15:45:06 GMT):
npm install -g yarn fails

yairfr (Thu, 09 Mar 2017 15:45:19 GMT):
but no meaningful data in the logs

yairfr (Thu, 09 Mar 2017 15:46:11 GMT):
I'm still tryingto setup --> vagrant up

boydjohnson (Thu, 09 Mar 2017 15:49:52 GMT):
http://stackoverflow.com/questions/7559648/is-there-a-way-to-make-npm-install-the-command-to-work-behind-proxy This post talks about setting up npm for use behind a proxy. You have probably already seen it/done it.

yairfr (Thu, 09 Mar 2017 15:54:29 GMT):
I wasn't able to bring up the VM even once... so I can't configure npm. and it seems that the proxy environment variables are not propagated to the VM

yairfr (Thu, 09 Mar 2017 15:55:30 GMT):
FWIW i'm folowing http://intelledger.github.io/0.8/tutorial.html and stuck in the first vagrant VM setup

boydjohnson (Thu, 09 Mar 2017 15:56:22 GMT):
If you are getting to the install_js.sh script I would think the VM is running but not provisioned. After vagrant up exits with an error, what does vagrant status tell you?

yairfr (Thu, 09 Mar 2017 15:58:30 GMT):
running...

boydjohnson (Thu, 09 Mar 2017 15:59:29 GMT):
So there are a few things you could try. If you can vagrant ssh into the vm you could try setting up the proxy settings for npm and then manually running the install_js.sh script.

yairfr (Thu, 09 Mar 2017 16:08:43 GMT):
defenitly not a proxy problem since apt was successful. I'll try to see why npm can't install yarn

jsmitchell (Thu, 09 Mar 2017 16:09:15 GMT):
are you behind a corporate firewall that is selectively blocking sites?

yairfr (Thu, 09 Mar 2017 16:09:33 GMT):
yes

yairfr (Thu, 09 Mar 2017 16:10:03 GMT):
I'm being tempted just to that the whole thing home and set it there...

boydjohnson (Thu, 09 Mar 2017 16:14:20 GMT):
I might be wrong, but I thought npm uses https by default and apt uses http by default, so that might be an issue.

yairfr (Thu, 09 Mar 2017 16:15:56 GMT):
FFX seems to be able to get to https://registry.npmjs.org/yarn but the log show this error " https://registry.npmjs.org/yarn info retry will retry, error on last attempt: Error: tunneling socket could not be established, cause=socket hang up"

yairfr (Thu, 09 Mar 2017 16:16:26 GMT):
GTG will continue working on this next week... thank for helping me make ptogress

boydjohnson (Thu, 09 Mar 2017 16:16:42 GMT):
No problem. Good luck @yairfr.

jsmitchell (Thu, 09 Mar 2017 16:27:03 GMT):
@pschwarz: looks like https://github.com/hyperledger/sawtooth-core/pull/177 is ready to merge

Dan (Thu, 09 Mar 2017 17:24:51 GMT):
Does the `sawtooth admin genesis` command depend on having first generated config transactions?

boydjohnson (Thu, 09 Mar 2017 17:26:45 GMT):
@Dan No, you *can* (and in a production environment would) give it batches created by sawtooth config, but you can create genesis data without any batches.

Dan (Thu, 09 Mar 2017 17:29:19 GMT):
Ok, so it won't error, but I can I use that genesis batch in a meaningful way? i.e. if I was going to explain how to use the system to someone is the expected flow 1. create config transactions 2 . 3. create the genesis batch consuming transactions from 1 and 2?

boydjohnson (Thu, 09 Mar 2017 17:32:03 GMT):
Yes.

Dan (Thu, 09 Mar 2017 17:32:22 GMT):
thx

pschwarz (Thu, 09 Mar 2017 17:43:36 GMT):
@jsmitchell merged

GanapathyRajalingam (Thu, 09 Mar 2017 18:16:28 GMT):
Has joined the channel.

Dan (Fri, 10 Mar 2017 15:42:50 GMT):
@cianx what's an example of when consensus.blockpublisher.initialize_block(...) would return false?

cianx (Fri, 10 Mar 2017 15:46:52 GMT):
Validator does not have valid sign up info registered in global state for poet.

cianx (Fri, 10 Mar 2017 15:47:52 GMT):
Any case where it is a violation of the consensus algorithm for this validator to claim a block.

JatinderBali (Fri, 10 Mar 2017 15:51:17 GMT):
Has joined the channel.

Dan (Fri, 10 Mar 2017 20:24:16 GMT):
when addressing PR feedback, what does the author need to do to signal reviewers he or she is done with corrections? For example, @toddojala updated his PR but I didn't get it back in my review queue.

agunde (Fri, 10 Mar 2017 20:26:50 GMT):
The author needs to re-add them as a reviewer, by going back to the reviewer box, and adding the reviewer again the same way they had originally. This will reset the fact that you have a review request without removing your previously requested changes.

Dan (Fri, 10 Mar 2017 20:39:31 GMT):
thx @agunde

Dan (Fri, 10 Mar 2017 21:00:19 GMT):
What's the command to start the REST service?

boydjohnson (Fri, 10 Mar 2017 21:01:01 GMT):
rest_api

Dan (Fri, 10 Mar 2017 21:01:58 GMT):
think that's intuitive do you? :P

boydjohnson (Fri, 10 Mar 2017 21:02:24 GMT):
Ha!

Dan (Fri, 10 Mar 2017 21:05:49 GMT):
so the pattern looks a little different than bringing up the transaction processors. ```ubuntu@ubuntu-xenial:/project/sawtooth-core$ rest_api -v tcp://127.0.0.1:40000 usage: rest_api [-h] [--port PORT] [--host HOST] [--stream-url STREAM_URL] [--timeout TIMEOUT]` rest_api: error: unrecognized arguments: -v tcp://127.0.0.1:40000``` is host and port the host and port of the validator?

Dan (Fri, 10 Mar 2017 21:05:49 GMT):
so the pattern looks a little different than bringing up the transaction processors. `ubuntu@ubuntu-xenial:/project/sawtooth-core$ rest_api -v tcp://127.0.0.1:40000 usage: rest_api [-h] [--port PORT] [--host HOST] [--stream-url STREAM_URL] [--timeout TIMEOUT] rest_api: error: unrecognized arguments: -v tcp://127.0.0.1:40000` is host and port the host and port of the validator?

Dan (Fri, 10 Mar 2017 21:05:49 GMT):
so the pattern looks a little different than bringing up the transaction processors. `ubuntu@ubuntu-xenial:/project/sawtooth-core$ rest_api -v tcp://127.0.0.1:40000` `usage: rest_api [-h] [--port PORT] [--host HOST] [--stream-url STREAM_URL]` ` [--timeout TIMEOUT]` `rest_api: error: unrecognized arguments: -v tcp://127.0.0.1:40000` is host and port the host and port of the validator?

agunde (Fri, 10 Mar 2017 21:07:51 GMT):
No, the port and host is for the api, the stream-url is the validator

Dan (Fri, 10 Mar 2017 21:09:07 GMT):
trying to list blocks I get this:

Dan (Fri, 10 Mar 2017 21:09:09 GMT):
Error: (503) The validator is not yet ready to be queried

agunde (Fri, 10 Mar 2017 21:09:27 GMT):
Do you have a running validator?

Dan (Fri, 10 Mar 2017 21:09:33 GMT):
yet the rest_api process says this:

Dan (Fri, 10 Mar 2017 21:09:33 GMT):
Handling GET request for /blocks

Dan (Fri, 10 Mar 2017 21:09:46 GMT):
lemme make sure the validator is still alive...

Dan (Fri, 10 Mar 2017 21:10:05 GMT):
[21:08:37.578 DEBUG interconnect] ServerThread sending CLIENT_BLOCK_LIST_RESPONSE to b'6a1898424cb55466'

boydjohnson (Fri, 10 Mar 2017 21:10:55 GMT):
Oh, so the validator can be in a not good state and it will say that, even though the validator process is there.

Dan (Fri, 10 Mar 2017 21:11:45 GMT):
so it looks like the validator thinks it's responding to the client, but the client is like hey that validator isn't ready yet.

Dan (Fri, 10 Mar 2017 21:11:45 GMT):
so it looks like the validator thinks its responding to the client, but the client is like hey that validator isn't ready yet.

Dan (Fri, 10 Mar 2017 21:11:57 GMT):
and the rest_api in the middle is like everything is cool.

boydjohnson (Fri, 10 Mar 2017 21:12:18 GMT):
What do your startup logging statements look like? Do you have a "building on top of block None"?

Dan (Fri, 10 Mar 2017 21:12:40 GMT):
I built on top of block f4343

Dan (Fri, 10 Mar 2017 21:13:35 GMT):
oh I take that back

Dan (Fri, 10 Mar 2017 21:14:28 GMT):
it is on top of None

Dan (Fri, 10 Mar 2017 21:14:32 GMT):
'[20:46:04.783 INFO publisher] Now building on top of block: None`

Dan (Fri, 10 Mar 2017 21:14:32 GMT):
`[20:46:04.783 INFO publisher] Now building on top of block: None`

agunde (Fri, 10 Mar 2017 21:14:37 GMT):
Did you run genesis?

jjason (Fri, 10 Mar 2017 21:14:47 GMT):
Is your computer on?>

Dan (Fri, 10 Mar 2017 21:14:49 GMT):
genesis w/ no config or anything

Dan (Fri, 10 Mar 2017 21:15:05 GMT):
wait... @jjason how do you check?

jjason (Fri, 10 Mar 2017 21:15:34 GMT):
First, you need to go down to the breaker box in your garage/basement/...

Dan (Fri, 10 Mar 2017 21:15:56 GMT):
@agunde @boydjohnson don't worry about it. I'm just trying to get to canonical operation so I can double check the tutorial. I think this is close enough.

agunde (Fri, 10 Mar 2017 21:17:32 GMT):
Okay

boydjohnson (Fri, 10 Mar 2017 21:17:51 GMT):
Thanks @Dan, it is good to get a n+1 pair of eyes on things.

Dan (Fri, 10 Mar 2017 21:18:13 GMT):
I do have many eyes.

agunde (Fri, 10 Mar 2017 21:18:22 GMT):
More than 2?

Dan (Fri, 10 Mar 2017 21:18:35 GMT):
I'm like a walking potato

boydjohnson (Fri, 10 Mar 2017 21:18:52 GMT):
We need an Eye of Sauron bug seer.

Dan (Fri, 10 Mar 2017 21:19:10 GMT):
n+1 eyes where n=i+1

Romanix (Sat, 11 Mar 2017 21:17:38 GMT):
Does Sawtooth Lake have a UTXO model? If not, is it more like Ethereum?

jsmitchell (Sat, 11 Mar 2017 21:20:08 GMT):
Hi @Romanix: Sawtooth pushes these implementation details out to Transaction Families. It would be easy to write a transaction family that does UTXO, or a transaction family that stores and executes bytecode 'smart contracts'

jsmitchell (Sat, 11 Mar 2017 21:20:33 GMT):
Both types of transactions could even coexist on the same instance of the blockchain

Romanix (Sat, 11 Mar 2017 21:42:29 GMT):
@jsmitchell Thanks.

jsmitchell (Sat, 11 Mar 2017 21:43:06 GMT):
Have you taken a look at our 0.8 transaction family documentation?

jsmitchell (Sat, 11 Mar 2017 21:44:28 GMT):
http://intelledger.github.io/0.8/txn_family_tutorial.html

jsmitchell (Sat, 11 Mar 2017 21:44:52 GMT):
And http://intelledger.github.io/0.8/architecture/transactions_and_batches.html

boydjohnson (Mon, 13 Mar 2017 14:27:27 GMT):
@agunde noticed that sawtooth admin keygen doesn't allow you to specify where the key goes, and it is in a different place than, by default, the validator expects it.

boydjohnson (Mon, 13 Mar 2017 14:28:22 GMT):
@amundson ^

Dan (Mon, 13 Mar 2017 14:47:48 GMT):
Would others find the PR channel more useful it it was just announcing a PR created? It's a little too noisy for my use right now.

pschwarz (Mon, 13 Mar 2017 14:48:19 GMT):
Yes - it's way too noisy

cianx (Mon, 13 Mar 2017 17:21:59 GMT):
@toddojala @dan can we make http://intelledger.github.io/ default to 0.8 instead of 0.7?

jsmitchell (Mon, 13 Mar 2017 17:23:57 GMT):
@rbuysse: ^

rbuysse (Mon, 13 Mar 2017 17:26:07 GMT):
that is achievable

boydjohnson (Mon, 13 Mar 2017 17:28:26 GMT):
@agunde amends my previous comment. The sawtooth admin keygen command can be given a directory to put the key in. That would fix cluster.

toddojala (Mon, 13 Mar 2017 18:19:07 GMT):
@cianx yes!

adamludvik (Mon, 13 Mar 2017 18:48:58 GMT):
Hey all, I added a new build step that needs to happen before run_tests will pass. Putting up a PR now, but the extra build steps are listed in the top of docker/sawtooth-build-java and docker/sawtooth-build-javascript

adamludvik (Mon, 13 Mar 2017 18:48:58 GMT):
Hey all, I added a new build step that needs to happen before run_tests will pass. Putting up a PR now to add this to build_all, but the extra build steps are listed in the top of docker/sawtooth-build-java and docker/sawtooth-build-javascript

pschwarz (Mon, 13 Mar 2017 22:11:50 GMT):
With the merge of https://github.com/hyperledger/sawtooth-core/pull/175, creating config transactions for the genesis block has changed slightly. Now, you do the following:```

pschwarz (Mon, 13 Mar 2017 22:11:50 GMT):
With the merge of https://github.com/hyperledger/sawtooth-core/pull/175, creating config transactions for the genesis block has changed slightly. Now, you do the following:

pschwarz (Mon, 13 Mar 2017 22:12:04 GMT):
```

pschwarz (Mon, 13 Mar 2017 22:12:04 GMT):
```

pschwarz (Mon, 13 Mar 2017 22:12:04 GMT):
```

pschwarz (Mon, 13 Mar 2017 22:14:06 GMT):
``` $ sawtooth config proposal set -k -o config.batch my.setting.1=foo my.setting.2=bar ```

pschwarz (Mon, 13 Mar 2017 22:14:06 GMT):
``` $ sawtooth config proposal create -k -o config.batch my.setting.1=foo my.setting.2=bar ```

pschwarz (Mon, 13 Mar 2017 22:15:06 GMT):
To submitted settings to a running validator: ``` $ sawtooth config proposal set -k --url http:// my.setting.1=foo my.setting.2=bar ```

pschwarz (Mon, 13 Mar 2017 22:15:06 GMT):
To submitted settings to a running validator: ``` $ sawtooth config proposal create -k --url http:// my.setting.1=foo my.setting.2=bar ```

pschwarz (Mon, 13 Mar 2017 22:15:37 GMT):
Or, omit the `--url`, and submit against `localhost`

pschwarz (Mon, 13 Mar 2017 22:15:51 GMT):
This does require running the `rest_api` process

jjason (Tue, 14 Mar 2017 04:30:57 GMT):
@adamludvik Running `docker run -v $(pwd):/project/sawtooth-core sawtooth-build-javascript` fails in vagrant on Windows. Crappy Windows does not support symlinks. Adding `--no-bin-links` to `yarn install --force` in both `bin/build_javascript` and `bin/build_intkey_javascript` seems to have fixed problem for me.

jjason (Tue, 14 Mar 2017 04:53:56 GMT):
BTW, don't know what the side effects of this will be on OSes that actually support symlinks. Sigh.

adamludvik (Tue, 14 Mar 2017 12:14:02 GMT):
@jjason thanks. I am working on PR 201 to cleanup a few things. Will add this and make you a reviewer.

Dan (Tue, 14 Mar 2017 13:07:53 GMT):
@rbuysse not withstanding your other work, maybe you and Ry can put your heads together on a narrower trigger for #sawtoothlake-pr-review

amundson (Tue, 14 Mar 2017 13:35:21 GMT):
@Dan there is hook (some Javascript code) on the rocket.chat side. many of the lines in #sawtoothlake-pr-review are assignee/reviewer related, so if we cut them out, it should be better

Dan (Tue, 14 Mar 2017 13:36:37 GMT):
Sounds like something only @Ry has access to?

jsmitchell (Tue, 14 Mar 2017 13:42:25 GMT):
here's the hook: https://gist.github.com/rjones-lf/fbe68e5fc9cef6ae6a8847df7d08f739

jsmitchell (Tue, 14 Mar 2017 13:42:32 GMT):
@jwagantall also can help

adamludvik (Tue, 14 Mar 2017 14:17:04 GMT):
@drozd and I are now seeing the tests pass with the startup sleep statements removed. Was there a change that went in recently that this is attributed to? I would like to remove them if possible, but want to understand why first.

amundson (Tue, 14 Mar 2017 14:28:56 GMT):
@adamludvik - recent changes to add jdk/js stuff to run_tests breaks it on vagrant without extra work (installing java, extra build steps) - is this addressed in anything you have in-progress?

adamludvik (Tue, 14 Mar 2017 14:29:12 GMT):
yes

adamludvik (Tue, 14 Mar 2017 14:29:37 GMT):
https://github.com/hyperledger/sawtooth-core/pull/201

adamludvik (Tue, 14 Mar 2017 14:32:26 GMT):
@jjason pointed out one more thing I needed to do, which I just pushed up

adamludvik (Tue, 14 Mar 2017 14:32:58 GMT):
Tested locally and it is passing, just need to verify it works on Jenkins now

amundson (Tue, 14 Mar 2017 14:33:44 GMT):
@adamludvik - I will test locally

agunde (Tue, 14 Mar 2017 14:34:02 GMT):
You may need to update virtualBox for it to work

adamludvik (Tue, 14 Mar 2017 14:34:46 GMT):
Thanks. I think you need VirtualBox >= 5.1.10

amundson (Tue, 14 Mar 2017 14:34:54 GMT):
@adamludvik - you should rebase so you have the install_cryptograph.sh fix

adamludvik (Tue, 14 Mar 2017 14:36:32 GMT):
will do. you can also test it on mac if you have docker installed.

adamludvik (Tue, 14 Mar 2017 14:36:32 GMT):
will do. you ~can also~ should be able to test it on mac if you have docker installed.

adamludvik (Tue, 14 Mar 2017 14:38:23 GMT):
Rebase is done.

adamludvik (Tue, 14 Mar 2017 14:47:08 GMT):
As soon as you are done testing it should be good to merge.

paulw (Tue, 14 Mar 2017 18:09:33 GMT):
Has joined the channel.

jsmitchell (Tue, 14 Mar 2017 19:31:17 GMT):
@agunde: I think I am seeing a regression in the completer where the publisher is reporting that it has batches with missing deps

jsmitchell (Tue, 14 Mar 2017 19:31:23 GMT):
```[19:29:53.868 DEBUG publisher] Transaction rejected due missing dependency, transaction 098d5100747cb71a53c3db3f8ef08afafdd6b48d5bf11e3a3673bc336b54ab7021e967949472ecdd6521571e3cae45f984b79055b264976a4173dd35bc332b22 depends on b02e001be0fbd1fddb7e4c380bbde1e9b32c6f4249c5ae46980e6102e0c61d7a029bc72099a1495fa357a69145963511231b2275343c6e81946eb496a10ae634 [19:29:53.869 DEBUG publisher] Dropping batch due to missing dependencies: d98761270e9f335b4bbd8da28e010fcb5a21204aaf9fc5417b8de6550538318953757a5914bb5b0de6b2c397741d5e956763da8c4363f82ba0d31623df06183c```

agunde (Tue, 14 Mar 2017 19:32:19 GMT):
Is this on master or your peering branch?

jsmitchell (Tue, 14 Mar 2017 19:32:34 GMT):
my branch

jsmitchell (Tue, 14 Mar 2017 19:46:23 GMT):
@agunde: PR raised on that branch https://github.com/hyperledger/sawtooth-core/pull/213

jsmitchell (Tue, 14 Mar 2017 19:46:32 GMT):
but I suspect the same thing would be visible on master

jsmitchell (Tue, 14 Mar 2017 19:46:34 GMT):
i'll check

jsmitchell (Tue, 14 Mar 2017 19:48:32 GMT):
yeah, same thing on master

jsmitchell (Tue, 14 Mar 2017 19:48:43 GMT):
start up a single validator and send it a couple of thousand intkey batches

jsmitchell (Tue, 14 Mar 2017 19:48:52 GMT):
it'll start spewing those

agunde (Tue, 14 Mar 2017 19:51:38 GMT):
okay i will take a look when i have a moment

pschwarz (Tue, 14 Mar 2017 20:13:48 GMT):
Sorry all mistyped the config proposal usage (edited in the original message: ``` $ sawtooth config proposal create ... ```

pschwarz (Tue, 14 Mar 2017 20:13:54 GMT):
not `set`

balashevich (Wed, 15 Mar 2017 12:37:43 GMT):
Has joined the channel.

victorsintnicolaas (Wed, 15 Mar 2017 13:13:24 GMT):
Has joined the channel.

TomBarnes (Wed, 15 Mar 2017 22:28:28 GMT):
When a client posts a /batches message directly to a validator via the REST interface, should it use the same key to sign both the transaction header and the batch, or should it use separate keys? It seams to me that it should use the same key, because it is acting as both the originator of the transaction and as the batcher.

jsmitchell (Wed, 15 Mar 2017 22:28:55 GMT):
yep, same key is the simple case

jsmitchell (Wed, 15 Mar 2017 22:29:53 GMT):
batcher_pubkey in the transaction header must also match

jsmitchell (Wed, 15 Mar 2017 22:30:27 GMT):
if a transaction signer wants to give another signer permission to include the transaction in a batch, then batcher_pubkey must be set appropriately in the transaction header

TomBarnes (Wed, 15 Mar 2017 22:50:24 GMT):
ok - thanks

ShowKobayashi (Thu, 16 Mar 2017 08:06:48 GMT):
Has joined the channel.

PacoEcotrust (Thu, 16 Mar 2017 11:35:31 GMT):
Has left the channel.

PacoEcotrust (Thu, 16 Mar 2017 11:44:56 GMT):
Has joined the channel.

amundson (Thu, 16 Mar 2017 17:41:04 GMT):
For http://intelledger.github.io/0.8/transaction_family_specifications/config_transaction_family.html, we could start by removing authorization_type and have it always be ballot-mode.

amundson (Thu, 16 Mar 2017 17:41:31 GMT):
Then have the CLI fill in sawtooth.config.vote.authorized_keys by default with it's authorized key? it is less clear if this works from a flow perspective, but the idea would be to usually set it.

jsmitchell (Thu, 16 Mar 2017 17:41:47 GMT):
@amundson: what's this in context of?

amundson (Thu, 16 Mar 2017 17:42:21 GMT):
simplifying the config txn family to have a more secure default mode (where at least one key is set)

amundson (Thu, 16 Mar 2017 17:46:42 GMT):
my original concept with respect to authorization_type no longer applies now that we have the broader idea of being a reference implementation that can be replaced

pschwarz (Thu, 16 Mar 2017 18:09:09 GMT):
That would probably work

pschwarz (Thu, 16 Mar 2017 18:10:14 GMT):
We might want have the genesis tool require input batches, as well, so at least some level of on-chain settings have been applied

adamludvik (Thu, 16 Mar 2017 18:20:53 GMT):
# Docker Build Update With the recent changes, it should now be possible to build sawtooth and run tests from an arbitrary environment that has docker installed and configured to run with a linux kernel. Some substantial changes have gone into the build process to accomplish this, and this document is a quick overview of the process for current developers. ## tl;dr If you are just doing python development for sawtooth, you should now be able to build and run the tests from vagrant or Mac by doing the following: ``` $ ./bin/build_all -l python $ ./bin/run_tests -x java_sdk -x javascript_sdk ``` The build process may be faster if it is run from Mac instead of within vagrant. To install docker on Mac, download https://download.docker.com/mac/stable/Docker.dmg, drag docker into applications, and open it. You will also need to have python3 and PyYAML installed for run_tests to work. ## Building Sawtooth The old build_all script has been moved to build_python and docker_build_all has been moved to build_all. The “new” build_all script handles building all the docker images that are usually needed by a developer. Some of these build images are also used to build the source code in sawtooth. This includes running protogen, maven, yarn, etc. To make development in one language easier, it is now possible to pass flags to the build_all script. ``` sawtooth-lake/sawtooth-core » ./bin/build_all -h Usage: ./bin/build_all [-l Language] [-x Language] Options: -h print usage and exit -l Language only build the specified language(s) -x Language exclude the specified language(s) ``` The -l flag can be used multiple times to hand pick the languages that should be built. The -x flag can be used to pick languages that should be skipped. For example, to only build the python components of sawtooth you would do: ``` $ build_all -l python ``` Or to skip building java but still build python and javascript: ``` $ build_all -x java ``` One final note, if you are running in vagrant and do not want to build any of the docker images, you can still run build_python to just build the python code without using docker in anyway: $ build_python ## Running Tests The run_tests script has also been changed to accommodate finer grained control of which tests should run. run_tests also no longer builds anything before running the tests, so you will need to do build_all before run_tests now. ``` sawtooth-lake/sawtooth-core » ./bin/run_tests -h Usage: ./bin/run_tests [-m Module] [-s Module] (-m and -x can be passed multiple times) Options: -h print usage and exit -m Module only run tests of specified module -x Module exclude the tests of specified module Current modules: cli java_sdk javascript_sdk poet python_sdk rest_api signing validator ``` The -m flag can now be passed multiple times to hand pick which modules should be tested. Alternatively, the -s flag can also be passed multiple times to skip certain modules. For example, to only run the python_sdk and poet modules, you would do: ``` $ run_tests -m python_sdk -m poet ``` Or to skip the java and javascript sdk tests do: ``` $ run_tests -x java_sdk -x javascript_sdk ``` Running Lint The run_lint script has not changed, however it is now being run inside the sawtooth-build-python container on Jenkins. You can still run the script locally from outside of any container (in Vagrant) but to get the same results as you would on Jenkins, you can instead do (after build_all): ``` $ docker run -v $(pwd):/project/sawtooth-core sawtooth-build-python ./bin/run_lint ```

adamludvik (Thu, 16 Mar 2017 18:20:53 GMT):
# Docker Build Update With the recent changes, it should now be possible to build sawtooth and run tests from an arbitrary environment that has docker installed and configured to run with a linux kernel. Some substantial changes have gone into the build process to accomplish this, and this document is a quick overview of the process for current developers. ## tl;dr If you are just doing python development for sawtooth, you should now be able to build and run the tests from vagrant or Mac by doing the following: ``` $ ./bin/build_all -l python $ ./bin/run_tests -x java_sdk -x javascript_sdk ``` The build process may be faster if it is run from Mac instead of within vagrant. To install docker on Mac, download https://download.docker.com/mac/stable/Docker.dmg, drag docker into applications, and open it. You will also need to have python3 and PyYAML installed for run_tests to work. ## Building Sawtooth The old build_all script has been moved to build_python and docker_build_all has been moved to build_all. The “new” build_all script handles building all the docker images that are usually needed by a developer. Some of these build images are also used to build the source code in sawtooth. This includes running protogen, maven, yarn, etc. To make development in one language easier, it is now possible to pass flags to the build_all script. ``` sawtooth-lake/sawtooth-core » ./bin/build_all -h Usage: ./bin/build_all [-l Language] [-x Language] Options: -h print usage and exit -l Language only build the specified language(s) -x Language exclude the specified language(s) ``` The -l flag can be used multiple times to hand pick the languages that should be built. The -x flag can be used to pick languages that should be skipped. For example, to only build the python components of sawtooth you would do: ``` $ build_all -l python ``` Or to skip building java but still build python and javascript: ``` $ build_all -x java ``` One final note, if you are running in vagrant and do not want to build any of the docker images, you can still run build_python to just build the python code without using docker in anyway: $ build_python ## Running Tests The run_tests script has also been changed to accommodate finer grained control of which tests should run. run_tests also no longer builds anything before running the tests, so you will need to do build_all before run_tests now. ``` sawtooth-lake/sawtooth-core » ./bin/run_tests -h Usage: ./bin/run_tests [-m Module] [-s Module] (-m and -x can be passed multiple times) Options: -h print usage and exit -m Module only run tests of specified module -x Module exclude the tests of specified module Current modules: cli java_sdk javascript_sdk poet python_sdk rest_api signing validator ``` The -m flag can now be passed multiple times to hand pick which modules should be tested. Alternatively, the -s flag can also be passed multiple times to skip certain modules. For example, to only run the python_sdk and poet modules, you would do: ``` $ run_tests -m python_sdk -m poet ``` Or to skip the java and javascript sdk tests do: ``` $ run_tests -x java_sdk -x javascript_sdk ``` Running LintThe run_lint script has not changed, however it is now being run inside the sawtooth-build-python container on Jenkins. You can still run the script locally from outside of any container (in Vagrant) but to get the same results as you would on Jenkins, you can instead do (after build_all): ``` $ docker run -v $(pwd):/project/sawtooth-core sawtooth-build-python ./bin/run_lint ```

adamludvik (Thu, 16 Mar 2017 18:20:53 GMT):
# Docker Build Update With the recent changes, it should now be possible to build sawtooth and run tests from an arbitrary environment that has docker installed and configured to run with a linux kernel. Some substantial changes have gone into the build process to accomplish this, and this document is a quick overview of the process for current developers. ## tl;dr If you are just doing python development for sawtooth, you should now be able to build and run the tests from vagrant or Mac by doing the following: ``` $ ./bin/build_all -l python $ ./bin/run_tests -x java_sdk -x javascript_sdk ``` The build process may be faster if it is run from Mac instead of within vagrant. To install docker on Mac, download https://download.docker.com/mac/stable/Docker.dmg, drag docker into applications, and open it. You will also need to have python3 and PyYAML installed for run_tests to work. ## Building Sawtooth The old build_all script has been moved to build_python and docker_build_all has been moved to build_all. The “new” build_all script handles building all the docker images that are usually needed by a developer. Some of these build images are also used to build the source code in sawtooth. This includes running protogen, maven, yarn, etc. To make development in one language easier, it is now possible to pass flags to the build_all script. ``` sawtooth-lake/sawtooth-core » ./bin/build_all -h Usage: ./bin/build_all [-l Language] [-x Language] Options: -h print usage and exit -l Language only build the specified language(s) -x Language exclude the specified language(s) ``` The -l flag can be used multiple times to hand pick the languages that should be built. The -x flag can be used to pick languages that should be skipped. For example, to only build the python components of sawtooth you would do: ``` $ build_all -l python ``` Or to skip building java but still build python and javascript: ``` $ build_all -x java ``` One final note, if you are running in vagrant and do not want to build any of the docker images, you can still run build_python to just build the python code without using docker in anyway: $ build_python ## Running Tests The run_tests script has also been changed to accommodate finer grained control of which tests should run. run_tests also no longer builds anything before running the tests, so you will need to do build_all before run_tests now. ``` sawtooth-lake/sawtooth-core » ./bin/run_tests -h Usage: ./bin/run_tests [-m Module] [-s Module] (-m and -x can be passed multiple times) Options: -h print usage and exit -m Module only run tests of specified module -x Module exclude the tests of specified module Current modules: cli java_sdk javascript_sdk poet python_sdk rest_api signing validator ``` The -m flag can now be passed multiple times to hand pick which modules should be tested. Alternatively, the -s flag can also be passed multiple times to skip certain modules. For example, to only run the python_sdk and poet modules, you would do: ``` $ run_tests -m python_sdk -m poet ``` Or to skip the java and javascript sdk tests do: ``` $ run_tests -x java_sdk -x javascript_sdk ``` ## Running Lint The run_lint script has not changed, however it is now being run inside the sawtooth-build-python container on Jenkins. You can still run the script locally from outside of any container (in Vagrant) but to get the same results as you would on Jenkins, you can instead do (after build_all): ``` $ docker run -v $(pwd):/project/sawtooth-core sawtooth-build-python ./bin/run_lint ```

Dan (Thu, 16 Mar 2017 18:22:55 GMT):
@adamludvik wins :medal: for biggest post. :-D Seriously tho thanks for the update.

adamludvik (Thu, 16 Mar 2017 18:23:23 GMT):
Tried to upload it as file but :rocket: complained...

jjason (Thu, 16 Mar 2017 22:03:46 GMT):
what's the magic sauce for getting through Intel proxy?

jjason (Thu, 16 Mar 2017 22:03:59 GMT):
Besides connecting to the internet outside the firewall ;)

rbuysse (Thu, 16 Mar 2017 22:18:09 GMT):
@jjason we're passing four environment variables from the local machine into the docker images with the build_all script

rbuysse (Thu, 16 Mar 2017 22:18:58 GMT):
if you have http_proxy, https_proxy, HTTP_PROXY, and/or HTTPS_PROXY set on your local machine, those will get passed in to the docker containers.

jjason (Thu, 16 Mar 2017 22:19:09 GMT):
Shoot....I have them set.

rbuysse (Thu, 16 Mar 2017 22:19:30 GMT):
hmmmmmm

jsmitchell (Thu, 16 Mar 2017 22:19:34 GMT):
unplug your ethernet cable and see if anything is jamming it

jjason (Thu, 16 Mar 2017 22:19:35 GMT):
HTTPS_PROXY=http://proxy-us.intel.com:912 HTTP_PROXY=http://proxy-us.intel.com:911 http_proxy=http://proxy-us.intel.com:911 https_proxy=http://proxy-us.intel.com:912

rbuysse (Thu, 16 Mar 2017 22:20:00 GMT):
are you running build_all in vagrant?

jjason (Thu, 16 Mar 2017 22:20:03 GMT):
Oh crap. The problem was that someone in the break room was using the microwave and it f***ed with my WiFi ;)

jjason (Thu, 16 Mar 2017 22:20:29 GMT):
Yes....in vagrant....I am relegated to that because of the Windows laptop.

jjason (Thu, 16 Mar 2017 22:21:00 GMT):
Um....I think that problem is that the token from the token ring fell out on the floor...let me find it and put it back in.

jjason (Thu, 16 Mar 2017 22:21:00 GMT):
Um....I think that problem is the the token from the token ring fell out on the floor...let me find it and put it back in.

jjason (Thu, 16 Mar 2017 22:21:00 GMT):
Um....I think the problem is that the token from the token ring fell out on the floor...let me find it and put it back in.

rbuysse (Thu, 16 Mar 2017 22:21:45 GMT):
and when you type "env" the proxy variables are set?

jjason (Thu, 16 Mar 2017 22:22:11 GMT):
ubuntu@ubuntu-xenial:/project/sawtooth-core$ env | grep http http_proxy=http://proxy-us.intel.com:911 https_proxy=http://proxy-us.intel.com:912 HTTPS_PROXY=http://proxy-us.intel.com:912 HTTP_PROXY=http://proxy-us.intel.com:911

rbuysse (Thu, 16 Mar 2017 22:22:36 GMT):
gimme a sec.

rbuysse (Thu, 16 Mar 2017 22:22:41 GMT):
I will test locally

jjason (Thu, 16 Mar 2017 22:25:56 GMT):
Also, while you are at that....I am having problems running `./bin/run_lint` locally in vagrant in that it is tripping up importing modules that I could swear that I have in `PYTHONPATH`. Anyone else or did I just mess up somewhere.

rbuysse (Thu, 16 Mar 2017 22:34:16 GMT):
well I guess the good news is that I am experiencing behavior here other than what I would expect

rbuysse (Thu, 16 Mar 2017 22:34:24 GMT):
gimme a bit to take better look.

jjason (Thu, 16 Mar 2017 22:35:47 GMT):
sure

jjason (Thu, 16 Mar 2017 22:36:14 GMT):
Time to go work at Starbucks...where they don't have no stinkin' firewall ;)

jjason (Thu, 16 Mar 2017 23:27:14 GMT):
Stand down everyone. False alarm. The problem was apparently with Intel IT. Everything seems to be getting through proxy successfully now. Thx @rbuysse

rbuysse (Thu, 16 Mar 2017 23:27:35 GMT):
^5 glad you're up and running.

jjason (Thu, 16 Mar 2017 23:27:52 GMT):
Please return to Defcon 5.

jjason (Thu, 16 Mar 2017 23:28:25 GMT):
A strange game. The only winning move is not to play. How about a nice game of chess?

sstone1 (Thu, 16 Mar 2017 23:50:16 GMT):
Has joined the channel.

amundson (Fri, 17 Mar 2017 03:03:48 GMT):
I bumped the tolkien ring, and it made a big thud as it hit the floor.

jsmitchell (Fri, 17 Mar 2017 03:04:07 GMT):
that one ring?

tiennv (Fri, 17 Mar 2017 09:58:35 GMT):
Has joined the channel.

tiennv (Fri, 17 Mar 2017 10:00:38 GMT):
Hi,

tiennv (Fri, 17 Mar 2017 10:01:25 GMT):
Sawtooth Lake is a private or public blockchain?

tiennv (Fri, 17 Mar 2017 10:02:15 GMT):
I wan to know about privacy and security of Sawtooth Lake.

tiennv (Fri, 17 Mar 2017 10:02:35 GMT):
Please tell me what resources I can refer to?

Romanix (Fri, 17 Mar 2017 13:23:11 GMT):
@tiennv I think you can compare it with the Ethereum *Software*. The software is once used for the public Ethereum blockchain (mainnet), but is also used for various private blockchains.

jsmitchell (Fri, 17 Mar 2017 14:23:43 GMT):
@boydjohnson: I'm trying to do some things on exit of the validator. I put a finally: after the try: validator.start() in server/cli.py, but that is executed immediately. This behavior differs from doing the same thing in the transaction processors (it works as expected there). Do you have some advice on where to do this?

boydjohnson (Fri, 17 Mar 2017 15:02:31 GMT):
So this may sound strange, but I would put a try-except in finally in server/cli.py and except a KeyboardInterrupt there and do your shutdown stuff in the except clause.

Dan (Fri, 17 Mar 2017 16:49:15 GMT):
@boydjohnson you mentioned in passing something about integration tests failing on master or false negatives... I got lost in the double negatives. Are things clean or broken right now?

boydjohnson (Fri, 17 Mar 2017 16:51:10 GMT):
Everything is good, except locally I found a way to trick the run_docker_test script into giving me a green light when it should have been a red light. I will push up a small change to the run_docker_test script that will make it less easy to trick.

Dan (Fri, 17 Mar 2017 16:53:58 GMT):
Nothing wrong with a little extra green today ;)

boydjohnson (Fri, 17 Mar 2017 16:55:04 GMT):
We could add a "Luck of the Irish" feature to the test script.

jjason (Fri, 17 Mar 2017 16:57:46 GMT):
Sound like you need to write a unit test to test the unit test tester.

jjason (Fri, 17 Mar 2017 16:57:59 GMT):
@boydjohnson ^^^^

boydjohnson (Fri, 17 Mar 2017 17:00:03 GMT):
Yeah, yesterday @amundson and I were talking about a way to deterministically start multiple threads in a unittest, and @jsmitchell said we should work on it as a research topic in our own time. We can add a unittest test testing framework to the research.

moeentariq (Fri, 17 Mar 2017 17:11:46 GMT):
Has joined the channel.

jjason (Fri, 17 Mar 2017 17:11:47 GMT):
:warning::warning::warning::warning::warning::warning::warning::warning::warning: Just merged PR 228, which moves stuff around for PoET. It know that it will directly affect @pschwarz. Anyone else working on PoET or validator registry code will be affected as well. My apologies. https://github.com/hyperledger/sawtooth-core/pull/228 :warning::warning::warning::warning::warning::warning::warning::warning::warning:

jjason (Fri, 17 Mar 2017 17:14:10 GMT):
If you update, you will need to re-provision your vagrant VM because of updates.

boydjohnson (Fri, 17 Mar 2017 17:20:18 GMT):
Addendum to the Addendum: I had convinced @adamludvik that the script wasn't right, but it was. Turns out when you manually 'echo $?' but you had previously run 'echo ?' (IDK) it echos the return code of the previously echo command not the test script.

MadhavaReddy (Fri, 17 Mar 2017 17:52:19 GMT):
Has joined the channel.

pschwarz (Fri, 17 Mar 2017 18:08:38 GMT):
W

boydjohnson (Fri, 17 Mar 2017 18:44:39 GMT):
https://github.com/hyperledger/sawtooth-core/pull/217 PR 217 is passing tests consistently and has received a green check from @pschwarz. @jjason @jsmitchell @amundson @agunde @drozd

jsmitchell (Fri, 17 Mar 2017 18:47:06 GMT):
I find that PR intimidating

jsmitchell (Fri, 17 Mar 2017 18:48:11 GMT):
it is a failing inside me @boydjohnson, not you

boydjohnson (Fri, 17 Mar 2017 18:49:07 GMT):
As long as the tests don't fail, I am fine with personal failings.

zac (Fri, 17 Mar 2017 19:14:52 GMT):
Yo, various stake holders: I'm starting to build the paging controls for the ZMQ API

zac (Fri, 17 Mar 2017 19:15:10 GMT):
Does anyone have a preference on how paging works by default?

zac (Fri, 17 Mar 2017 19:16:05 GMT):
Specifically, do you want to just get everything if you don't specify any paging controls, or do you want everything to always be paginated?

zac (Fri, 17 Mar 2017 19:16:32 GMT):
(perhaps unless you send some "don't paginate" command)

jsmitchell (Fri, 17 Mar 2017 19:17:52 GMT):
@boydjohnson: your "one weird trick" for doing stuff on KeyboardInterrupt didn't work

zac (Fri, 17 Mar 2017 19:18:30 GMT):
Those are always just click bait

jsmitchell (Fri, 17 Mar 2017 19:20:08 GMT):
@zac: clients shouldn't be able to DOS the rest api by forming a request for 40GB of stuff

jsmitchell (Fri, 17 Mar 2017 19:20:53 GMT):
if pagination enforces smallish responses, we can use rate limiting to keep things sane

jsmitchell (Fri, 17 Mar 2017 19:25:09 GMT):
@boydjohnson: I'm on tenterhooks here

boydjohnson (Fri, 17 Mar 2017 19:25:48 GMT):
@jsmitchell Looking at server/cli now, it seems to have changed in the recent past. Looking at it, there is no way to run shutdown tasks. It appears that most threads are started non-daemon (seems good). Main thread exits after validator.start and the long running nature of the validator is that the other threads don't shutdown.

adamludvik (Fri, 17 Mar 2017 19:32:49 GMT):
I restarted LR1 with bond and intkey and it forked again right away. I am trying an easier workload to see if it can handle that. My gut reaction is that eitherranger

adamludvik (Fri, 17 Mar 2017 19:37:43 GMT):
I restarted LR1 running a bond and intkey workload and it forked again right away. My gut says that either the changes to stats lib are causing the most recent block id to be reported incorrectly, given the impression of forking, or that it is related to adding the CloudPassage/halo service to all our AWS boxes. @Tom Barnes @nconde can you please review the PR that went in again to see if you can come up with any theories? I am restarting LR1 again with an easier workload to see if that helps.

adamludvik (Fri, 17 Mar 2017 19:37:43 GMT):
I restarted LR1 running a bond and intkey workload and it forked again right away. My gut says that either the changes to stats lib are causing the most recent block ids to be reported incorrectly, giving the impression of forking, or that it is related to adding the CloudPassage/halo service to all our AWS boxes. @Tom Barnes @nconde can you please review the PR that went in again to see if you can come up with any theories? I am restarting LR1 again with an easier workload to see if that helps.

nconde (Fri, 17 Mar 2017 19:37:43 GMT):
Has joined the channel.

boydjohnson (Fri, 17 Mar 2017 19:40:10 GMT):
700a0b7194c27eaa177ca4ef5e9684d224e0dd7f @jsmitchell this commit removed the finally from validator cli. Are you saying if you put a finally: back in with validator.stop() and then do your shutdown things in a new except clause in that finally, it doesn't work?

jsmitchell (Fri, 17 Mar 2017 19:40:32 GMT):
``` try: yappi.set_clock_type('cpu') yappi.start(builtins=True) validator.start() except KeyboardInterrupt: print("Interrupted!", file=sys.stderr) sys.exit(1) except LocalConfigurationError as local_config_err: LOGGER.error(str(local_config_err)) sys.exit(1) except GenesisError as genesis_err: LOGGER.error(str(genesis_err)) sys.exit(1) except Exception as e: LOGGER.exception(e) sys.exit(1) finally: try: pass except KeyboardInterrupt: stats = yappi.get_func_stats() stats.print_all() yappi.get_thread_stats().print_all() stats.save("validator-callgrind.prof", type='callgrind')```

jsmitchell (Fri, 17 Mar 2017 19:40:35 GMT):
doesn't work

boydjohnson (Fri, 17 Mar 2017 19:41:27 GMT):
the pass should be validator.stop().

jsmitchell (Fri, 17 Mar 2017 19:41:57 GMT):
woot!

boydjohnson (Fri, 17 Mar 2017 19:42:19 GMT):
Does the woot! mean it worked?

jsmitchell (Fri, 17 Mar 2017 19:42:26 GMT):
what else would it mean?

jsmitchell (Fri, 17 Mar 2017 19:42:30 GMT):
HECK YES IT WORKED

boydjohnson (Fri, 17 Mar 2017 19:42:44 GMT):
Yay!

jsmitchell (Fri, 17 Mar 2017 19:43:05 GMT):
there is about to be callgrinding

Dan (Fri, 17 Mar 2017 19:43:19 GMT):
@adamludvik if it's not a lot of extra work you could try running LR1 with HEAD~1 and see if behavior holds.

adamludvik (Fri, 17 Mar 2017 19:44:51 GMT):
Sure. I am going to try just intkey on the current commit as I just started up that network, but will rollback to the latest version after.

adamludvik (Fri, 17 Mar 2017 19:47:36 GMT):
just an fyi, this does not affect the demonet or restarting it, as they are already pegged to a specific version

adamludvik (Fri, 17 Mar 2017 20:32:04 GMT):
Okay, LR1 seems to be doing fine with an 80TPM intkey workload. May just be that I left the settings for LR1 in a particularly nasty state. Going to set it back to the original 300TPM with the most recent commit.

Dan (Fri, 17 Mar 2017 21:30:01 GMT):
I'll be interested to hear how that goes @adamludvik

Dan (Fri, 17 Mar 2017 21:31:37 GMT):
In the future @here let's only commit critical fixes to 0.7.

zac (Fri, 17 Mar 2017 21:32:29 GMT):
Wow. Rocketchat's notification settings are . . . aggressive.

Dan (Fri, 17 Mar 2017 21:38:30 GMT):
Oh ya? was that pretty loud?

Dan (Fri, 17 Mar 2017 21:39:32 GMT):
It wouldn't let me do "@all". I took that to mean it wouldn't send a notice if you weren't logged in.

Dan (Fri, 17 Mar 2017 21:40:00 GMT):

Message Attachments

Dan (Fri, 17 Mar 2017 21:40:19 GMT):
rocket.cat ... cute eh?

jsmitchell (Fri, 17 Mar 2017 21:40:32 GMT):
hey @rocket.cat, can you turn off all notifications?

rocket.cat (Fri, 17 Mar 2017 21:40:32 GMT):
Has joined the channel.

Dan (Fri, 17 Mar 2017 21:41:00 GMT):
Do not taunt @rocket.cat

jjason (Fri, 17 Mar 2017 21:47:41 GMT):
I think that before you try to blast out to all, you need to either throw a yarn ball or shine a laser to distract @rocket.cat

adamludvik (Fri, 17 Mar 2017 21:48:56 GMT):

Message Attachments

boydjohnson (Fri, 17 Mar 2017 21:50:11 GMT):
I started @adamludvik on this path, but am not responsible for where the path took him.

jsmitchell (Fri, 17 Mar 2017 21:50:23 GMT):
did you do that by hand with graphviz?

boydjohnson (Fri, 17 Mar 2017 21:50:36 GMT):
pyreverse in pylint creates the dot file.

jsmitchell (Fri, 17 Mar 2017 21:51:05 GMT):
ok, so you could load the dot file into gephi and make the layout a lot better

adamludvik (Fri, 17 Mar 2017 21:51:13 GMT):
ahah

jsmitchell (Fri, 17 Mar 2017 21:51:21 GMT):
https://gephi.org/

boydjohnson (Fri, 17 Mar 2017 21:51:47 GMT):
Sweet.

jsmitchell (Fri, 17 Mar 2017 21:51:53 GMT):
the UI is fun to figure out

adamludvik (Fri, 17 Mar 2017 21:52:19 GMT):
I feel like I just upgraded my Sheikah Slate with a new rune..

adamludvik (Fri, 17 Mar 2017 22:06:30 GMT):
@Dan LR1 is now running fine with a 300TPM intkey load, which was the original LR1 test before I started messing with the workload. My guess is that I left the workload settings in a state that LR1 was already failing on, but didn't realize it. We'll see how long it lasts with 300TPM.

dragosh (Sat, 18 Mar 2017 00:14:14 GMT):
Has joined the channel.

bkman (Sat, 18 Mar 2017 02:44:28 GMT):
Has joined the channel.

midside (Mon, 20 Mar 2017 13:06:33 GMT):
Has joined the channel.

boydjohnson (Mon, 20 Mar 2017 16:45:12 GMT):
So our general pattern to do startup tasks in a validator container in a test has been to put bash -c "sawtooth admin keygen && sawtooth admin genesis &&..." in the entrypoint. This doesn't work for if you want to 1) send sig term or sig int to the validator process 2) stop and then start the process within the container (without doing the startup stuff again. I solve this by using a "startup tasks" container that shares directories with the validator container. @rbuysse @drozd @adamludvik It would be nice to be able to refer to a collection of services by name as one service, like validator-genesis is a genesis container along with a validator container and validator-non-genesis is a keygen container along with a validator container. Any thoughts?

adamludvik (Mon, 20 Mar 2017 16:49:43 GMT):
Are you suggesting we have a container for every command needed to startup a validator?

boydjohnson (Mon, 20 Mar 2017 16:50:50 GMT):
Not for every command, but every validator getting a "startup commands" container solves some problems, but seems messy.

adamludvik (Mon, 20 Mar 2017 17:02:40 GMT):
Would it be more clean to dynamically change the entrypoint as needed?

adamludvik (Mon, 20 Mar 2017 17:04:26 GMT):
Hmmm, that doesn't solver your signal issues

adamludvik (Mon, 20 Mar 2017 17:04:26 GMT):
Hmmm, that doesn't solve your signal issues

boydjohnson (Mon, 20 Mar 2017 17:05:25 GMT):
Yeah, if I understand you correctly that would solve 2) but not 1).

adamludvik (Mon, 20 Mar 2017 17:18:47 GMT):
Per offline discussion, I think it may make more sense to start the container with an entrypoint that doesn't do anything besides start the container. (`docker run -it --entrypoint=/bin/cat [image-name]` seems to work) Then you can send additional commands to the container using `docker exec`. Open question is whether you can read the exit code of the process started by `docker exec`.

adamludvik (Mon, 20 Mar 2017 17:18:47 GMT):
Per offline discussion, I think it may make more sense to start the container with an entrypoint that doesn't do anything besides start the container. `docker run -it --entrypoint=/bin/cat [image-name]` seems to work. Then you can send additional commands to the container using `docker exec`. Open question is whether you can read the exit code of the process started by `docker exec`.

ananth_s (Mon, 20 Mar 2017 17:41:54 GMT):
Has joined the channel.

dhuseby (Mon, 20 Mar 2017 17:55:34 GMT):
Has joined the channel.

Dan (Mon, 20 Mar 2017 18:07:56 GMT):
is this for launching with docker specifically or the pattern for starting sawtooth generally?

adamludvik (Mon, 20 Mar 2017 18:25:19 GMT):
This is just in reference to running integration tests that use multiple validators. This would not be user facing.

travin (Tue, 21 Mar 2017 12:29:33 GMT):
Has joined the channel.

PacoEcotrust (Tue, 21 Mar 2017 13:06:29 GMT):
I have changed softly the marketplace extension but I have a problem with one transaction. This transaction is identified as valid but it is never validated. I have deploy it over ubuntu not over docket and using only 1 validator with poet0. The transaction is to creat participant. >//UNKNOWN> participant reg --name emkt --description "The new Marketplace" The client is always asking for committing this transacction and the validator send 302 code. Some idea?

Dan (Tue, 21 Mar 2017 13:13:12 GMT):
hi @PacoEcotrust can I ask you some questions on your environment? What does this report? `$ git describe --tags`

adamludvik (Tue, 21 Mar 2017 14:48:46 GMT):
I need to define the entrypoint (command you type in bash to run the package you just installed) for each of the sawtooth deb packages that has one. The sawtooth-rest-api package already had `stl-rest-api` defined as the command you run to start the rest_api when installed, but this is different then our bin scripts. The sawtooth-cli package on the other hand defines `sawtooth` as the entrypoint. I also need to define entrypoints for sawtooth-validator and the existing transaction processors. Does anyone have any strong opinions about what these entrypoints should be or do we already have a naming convention established?

pschwarz (Tue, 21 Mar 2017 14:52:50 GMT):
@Dan @boydjohnson When you get a chance, can you review https://github.com/hyperledger/sawtooth-core/pull/232

adamludvik (Tue, 21 Mar 2017 15:16:14 GMT):
Hearing no strong opinions, I am going to impose the rule that the entrypoint has to match what is in sawtooth-core/bin and ask that we update the names of the bin scripts at a later date so we aren't installing generic names like `rest_api` to the users path.

jsmitchell (Tue, 21 Mar 2017 15:23:29 GMT):
@adamludvik: sounds reasonable

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] checking RegisterParticipant Updates with 1 updates [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] update [] [18:13:43 [PoolThread-WebThreadPool-0] txnserver.web_pages.forward_page INFO] transaction 729cbbadb6381bed is valid [18:13:43 [PoolThread-WebThreadPool-0] gossip.gossip_core DEBUG] calling handler for message 57351650 from 17A5QHJk of type /emktplace.transactions.EMarketPlace/Transaction [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.messages.transaction_message DEBUG] handle transaction message with identifier 729cbbadb6381bed [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.journal_core DEBUG] txnid: 729cbbad - add_pending_transaction [18:13:51 [MainThread] gossip.gossip_core DEBUG] calling handler for message 4f824066 from 17A5QHJk of type /journal.messages.TransactionBlockMessage/BlockRetry [18:13:55 [PoolThread-WebThreadPool-0] txnserver.web_pages.base_page INFO] TransactionPage.do_get /transaction/729cbbadb6381bed

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan Hello Dan, I do not know if you are going to catch some thing. [16:42:11 INFO validator_cli] validator started with arguments: ['/home/kiko/project/sawtooth-core/bin/txnvalidator', '-v'] [16:42:11 INFO validator_cli] read signing key from /etc/sawtooth-validator/keys/base000.wif [16:42:16 WARNING validator_cli] validator pid is 3172 [16:42:16 INFO gossip_core] listening on IPv4Address(UDP, '0.0.0.0', 54184) [16:42:16 INFO global_store_manager] create blockstore from file /var/lib/sawtooth-validator/base000_state.dbm with flag c [16:42:16 INFO validator] set administration node to None [16:42:16 INFO validator] starting ledger base000 with id 17A5QHJk at network address ('127.0.0.1', 54184) [16:42:16 INFO web_api] listen for HTTP requests on (ip='localhost', port=8800) [16:42:16 INFO validator_cli] adding transaction family: ledger.transaction.integer_key [16:42:16 INFO validator_cli] adding transaction family: emktplace.transactions.market_place [16:42:17 INFO journal_core] restore ledger state from persistence [16:42:17 INFO global_store_manager] add block 0a96be662e72daea to the queue for loading [16:42:17 INFO global_store_manager] add block 98e0efcd233b6981 to the queue for loading [16:42:17 INFO global_store_manager] load block 98e0efcd233b6981 from storage [16:42:17 INFO global_store_manager] load block 0a96be662e72daea from storage [16:42:17 INFO journal_core] commit head: 0a96be662e72daea [16:42:19 INFO validator] ledger connections using RandomWalk topology [16:42:19 INFO random_walk] initiate random walk topology update [16:42:22 INFO validator] ledger initialization complete [16:42:22 INFO journal_core] process initial transactions and blocks [16:42:22 INFO validator] register endpoint 17A5QHJk with name base000 .........continue below

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] checking RegisterParticipant Updates with 1 updates [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] update [] [18:13:43 [PoolThread-WebThreadPool-0] txnserver.web_pages.forward_page INFO] transaction 729cbbadb6381bed is valid [18:13:43 [PoolThread-WebThreadPool-0] gossip.gossip_core DEBUG] calling handler for message 57351650 from 17A5QHJk of type /emktplace.transactions.EMarketPlace/Transaction [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.messages.transaction_message DEBUG] handle transaction message with identifier 729cbbadb6381bed [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.journal_core DEBUG] txnid: 729cbbad - add_pending_transaction [18:13:51 [MainThread] gossip.gossip_core DEBUG] calling handler for message 4f824066 from 17A5QHJk of type /journal.messages.TransactionBlockMessage/BlockRetry [18:13:55 [PoolThread-WebThreadPool-0] txnserver.web_pages.base_page INFO] TransactionPage.do_get /transaction/729cbbadb6381bed

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan Hello Dan, I do not know if you are going to catch some thing. [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] checking RegisterParticipant Updates with 1 updates [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] update [] [18:13:43 [PoolThread-WebThreadPool-0] txnserver.web_pages.forward_page INFO] transaction 729cbbadb6381bed is valid [18:13:43 [PoolThread-WebThreadPool-0] gossip.gossip_core DEBUG] calling handler for message 57351650 from 17A5QHJk of type /emktplace.transactions.EMarketPlace/Transaction [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.messages.transaction_message DEBUG] handle transaction message with identifier 729cbbadb6381bed [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.journal_core DEBUG] txnid: 729cbbad - add_pending_transaction [18:13:51 [MainThread] gossip.gossip_core DEBUG] calling handler for message 4f824066 from 17A5QHJk of type /journal.messages.TransactionBlockMessage/BlockRetry [18:13:55 [PoolThread-WebThreadPool-0] txnserver.web_pages.base_page INFO] TransactionPage.do_get /transaction/729cbbadb6381bed

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan Hello Dan, I do not know if you are going to catch some thing. [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] checking RegisterParticipant Updates with 1 updates [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] update [] [18:13:43 [PoolThread-WebThreadPool-0] txnserver.web_pages.forward_page INFO] transaction 729cbbadb6381bed is valid [18:13:43 [PoolThread-WebThreadPool-0] gossip.gossip_core DEBUG] calling handler for message 57351650 from 17A5QHJk of type /emktplace.transactions.EMarketPlace/Transaction [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.messages.transaction_message DEBUG] handle transaction message with identifier 729cbbadb6381bed [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.journal_core DEBUG] txnid: 729cbbad - add_pending_transaction [18:13:51 [MainThread] gossip.gossip_core DEBUG] calling handler for message 4f824066 from 17A5QHJk of type /journal.messages.TransactionBlockMessage/BlockRetry [18:13:55 [PoolThread-WebThreadPool-0] txnserver.web_pages.base_page INFO] TransactionPage.do_get /transaction/729cbbadb6381bed................... the client command was:

PacoEcotrust (Tue, 21 Mar 2017 15:24:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=JvNpYYfxYXvqpvzWC) @Dan Hello Dan, I do not know if you are going to catch some thing. [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] checking RegisterParticipant Updates with 1 updates [18:13:42 [PoolThread-WebThreadPool-0] journal.transaction DEBUG] update [] [18:13:43 [PoolThread-WebThreadPool-0] txnserver.web_pages.forward_page INFO] transaction 729cbbadb6381bed is valid [18:13:43 [PoolThread-WebThreadPool-0] gossip.gossip_core DEBUG] calling handler for message 57351650 from 17A5QHJk of type /emktplace.transactions.EMarketPlace/Transaction [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.messages.transaction_message DEBUG] handle transaction message with identifier 729cbbadb6381bed [18:13:43 [PoolThread-twisted.internet.reactor-0] journal.journal_core DEBUG] txnid: 729cbbad - add_pending_transaction [18:13:51 [MainThread] gossip.gossip_core DEBUG] calling handler for message 4f824066 from 17A5QHJk of type /journal.messages.TransactionBlockMessage/BlockRetry [18:13:55 [PoolThread-WebThreadPool-0] txnserver.web_pages.base_page INFO] TransactionPage.do_get /transaction/729cbbadb6381bed................... the client command was: emktclient -v --name emkt --keyfile /home/kiko/project/sawtooth-core/validator/keys/emkt.wif --config /home/kiko/project/sawtooth-core/extensions/emktplace/etc/mktclient.js //UNKNOWN> participant reg --name emkt --description "The New Marketplace". In this command all time asking for commit the transaction

PacoEcotrust (Tue, 21 Mar 2017 16:10:48 GMT):
[16:42:22 WARNING signed_object] Identifier 08b5d3480bb011dc of SignedObject has no public key and addr used to verify signature [16:42:22 INFO journal_core] build transaction block to extend 0a96be66 with 1 transactions [16:42:22 INFO wait_timer] wait timer created; TIMER, 5.00, 7.59, ra8rcvdvd67h8gks [16:42:29 INFO journal_core] node base000 validates block with 1 transactions [16:42:29 INFO wait_certificate] wait certificate created; CERT, 5.00, 7.59, rdcjsu3akg4gzgxj, ra8rcvdvd67h8gks [16:42:30 INFO market_place] prepare to claim block 1aa846a079269264 [16:42:30 WARNING signed_object] Identifier 1aa846a079269264 of SignedObject has no public key and addr used to verify signature [16:42:30 WARNING signed_object] Identifier 1aa846a079269264 of SignedObject has no public key and addr used to verify signature [16:42:30 WARNING signed_object] Identifier 08b5d3480bb011dc of SignedObject has no public key and addr used to verify signature [16:42:30 INFO journal_core] blkid: 1aa846a0 - commit block from base000 with previous blkid: 0a96be66 [16:43:09 INFO base_page] BlockPage.do_get /block [16:43:09 INFO base_page] StorePage.do_get /store/EMarketPlaceTransaction/* [16:43:09 INFO base_page] BlockPage.do_get /block [16:43:38 WARNING root_page] /emktplace.transactions.EMarketPlace/Transaction - NoResource [16:43:38 WARNING root_page] ['emktplace.transactions.EMarketPlace', 'Transaction'] - 2 [16:43:38 INFO forward_page] starting local validation for txn id: 00c35d13d76e77a0 type: /EMarketPlaceTransaction [16:43:38 INFO forward_page] RegisterParticipant Updates [16:43:38 INFO forward_page] transaction 00c35d13d76e77a0 is valid [16:43:38 INFO base_page] TransactionPage.do_get /transaction/00c35d13d76e77a0 [16:43:43 INFO base_page] TransactionPage.do_get /transaction/00c35d13d76e77a0 [16:43:58 INFO base_page] TransactionPage.do_get /transaction/00c35d13d76e77a0the client command was: emktclient -v --name emkt --keyfile /home/kiko/project/sawtooth-core/validator/keys/emkt.wif --config /home/kiko/project/sawtooth-core/extensions/emktplace/etc/mktclient.js //UNKNOWN> participant reg --name emkt --description "The New Marketplace". In this command all time asking for commit the transaction

Dan (Tue, 21 Mar 2017 16:29:34 GMT):
@PacoEcotrust two quick thoughts... First it looks like you are launching your ledger restoring from a previous database. It might help to purge that and start fresh. Really it should work either way though. Second, I see some signed object warnings. That could mean that you don't have key files. Take a look at keygen .. sorry I'd look up the place in the docs but I'm on my way to a meeting.

PacoEcotrust (Tue, 21 Mar 2017 16:39:30 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=xtq9RCDv7Po98neQ9) @D , thankyou, could be the Second. I will take at look

Amanskywalker (Tue, 21 Mar 2017 18:14:05 GMT):
Has joined the channel.

Dan (Tue, 21 Mar 2017 18:38:14 GMT):
Hi @PacoEcotrust if your code is online somewhere like github any of us on the channel can take a look at your modified marketplace transaction family. The next place I'd look is the validation method.. something like check_valid().

PacoEcotrust (Tue, 21 Mar 2017 18:40:08 GMT):
Thanks, I will try to go deeper. I will to report you about my progress

boydjohnson (Tue, 21 Mar 2017 18:51:58 GMT):
@zac Did you see that the aiohttp test_utils package just changed in the last few days? https://github.com/aio-libs/aiohttp/commit/02145b1792f251fc2ca32f167fc30ccb4e0fd400

zac (Tue, 21 Mar 2017 20:19:46 GMT):
Yeah, 2.0 just dropped

zac (Tue, 21 Mar 2017 20:19:59 GMT):
There are a couple of possible breaking changes

zac (Tue, 21 Mar 2017 20:20:16 GMT):
I think we should stick with 1.x for now

boydjohnson (Tue, 21 Mar 2017 20:35:33 GMT):
Yeah, aiohttp==1.3.5 allows for all the rest api tests to pass.

tkuhrt (Tue, 21 Mar 2017 21:14:10 GMT):
Has joined the channel.

speffers (Wed, 22 Mar 2017 01:39:44 GMT):
Has joined the channel.

taishi (Wed, 22 Mar 2017 03:19:28 GMT):
Has joined the channel.

taishi (Wed, 22 Mar 2017 03:40:46 GMT):
Hi.I am a beginner. Please let question. Is there a detailed document about PoET? I do not understand even if I read the official docs. Also, is Sawtooth Lake assuming a permissoned environment?

foobarometer (Wed, 22 Mar 2017 05:56:42 GMT):
hi, i'm also beginner. i was going thru the tutorial http://intelledger.github.io/tutorial.html & it seems some commands needed to be executed twice in order to take effect. near the end: ``` //alice> exchange --type ExchangeOffer --src /USD --dst /jars/choc_chip --offers //bob/choc_chip_sale --count 24 http://localhost:8800/block?blockcount=10 transaction ee36338a123d4790 submitted //alice> waitforcommit Waiting for ee36338a123d4790. Transaction committed. //alice> holdings --creator //bob 1000 //bob/USD 24 //bob/batches/choc_chip001 1 //bob/holding/token 0 //bob/jars/choc_chip //alice> holdings --creator //alice 1000 //alice/USD 1 //alice/holding/token 0 //alice/jars/choc_chip //alice> waitforcommit Waiting for ee36338a123d4790. Transaction committed. //alice> holdings --creator //alice 1000 //alice/USD 1 //alice/holding/token 0 //alice/jars/choc_chip //alice> holdings --creator //bob 1000 //bob/USD 24 //bob/batches/choc_chip001 1 //bob/holding/token 0 //bob/jars/choc_chip //alice> exchange --type ExchangeOffer --src /USD --dst /jars/choc_chip --offers //bob/choc_chip_sale --count 24 http://localhost:8800/block?blockcount=10 http://localhost:8800/store/MarketPlaceTransaction/*?delta=1&blockid=e62acd704c025c6a transaction eb8735fa2f2ba81d submitted //alice> holdings --creator //bob 1024 //bob/USD 12 //bob/batches/choc_chip001 1 //bob/holding/token 0 //bob/jars/choc_chip //alice> holdings --creator //alice 976 //alice/USD 1 //alice/holding/token 12 //alice/jars/choc_chip ```

foobarometer (Wed, 22 Mar 2017 06:00:19 GMT):
the other one that seemed to need a 2nd run was: ``` //bob> exchangeoffer reg --output /batches/choc_chip001 --input /USD --ratio 2 1 --name /choc_chip_sale ``` I ran `waitforcommit` after this command. it said it was `commited`. However, when I tried to look at offers, I got: ``` //bob> offers --creator //bob Ratio Input Asset (What You Pay) Output Asset (What You Get) Name //bob> ```

foobarometer (Wed, 22 Mar 2017 06:00:19 GMT):
the other one that seemed to need a 2nd run was: ``` //bob> exchangeoffer reg --output /batches/choc_chip001 --input /USD --ratio 2 1 --name /choc_chip_sale ``` I ran `waitforcommit` after this command. it said it was `committed`. However, when I tried to look at offers, I got: ``` //bob> offers --creator //bob Ratio Input Asset (What You Pay) Output Asset (What You Get) Name //bob> ```

foobarometer (Wed, 22 Mar 2017 06:01:58 GMT):
of course, when I ran it a 2nd time, I got an error: ``` //bob> exchangeoffer reg --output /batches/choc_chip001 --input /USD --ratio 2 1 --name /choc_chip_sale http://localhost:8800/block?blockcount=10 http://localhost:8800/store/MarketPlaceTransaction/*?delta=1&blockid=739231fca7d153bd [05:52:33 mktplace.mktplace_communication WARNING] operation failed with response: 400 [05:52:33 mktplace.mktplace_communication WARNING] Error from server, detail information: ?eerrorpName isn't validierrorTypewInvalidTransactionErrorfstatus? [05:52:33 mktplace.mktplace_client ERROR] message post failed for some unusual reason Traceback (most recent call last): File "/project/sawtooth-core/extensions/mktplace/mktplace/mktplace_client.py", line 172, in _sendtxn msg File "/project/sawtooth-core/extensions/mktplace/mktplace/mktplace_communication.py", line 180, in postmsg .format(err_content)) InvalidTransactionError: Error from server: failed to create transaction ``` but the offer showed up: ``` //bob> offers --creator //bob Ratio Input Asset (What You Pay) Output Asset (What You Get) Name 0.5 //mkt/asset/currency/USD //mkt/asset/cookie/choc_chip //bob/choc_chip_sale ```

sitomani (Wed, 22 Mar 2017 08:48:05 GMT):
Has joined the channel.

Dan (Wed, 22 Mar 2017 14:36:23 GMT):
@toddojala ^

toddojala (Wed, 22 Mar 2017 14:37:59 GMT):
@foobarometer Thanks for sharing that experience. Let me look into that, to find out if anyone else has seen that, or if it's a known issue.

adamludvik (Wed, 22 Mar 2017 14:53:18 GMT):
@pschwarz Do you know what the plan for the poet cli for 0.8 is? Will this be a part of the "sawtooth" command, or a separate command?

pschwarz (Wed, 22 Mar 2017 14:53:33 GMT):
It's a separate command

pschwarz (Wed, 22 Mar 2017 14:53:59 GMT):
Given that poet is (in the long run) an optional feature, this should make sense

adamludvik (Wed, 22 Mar 2017 14:55:28 GMT):
Sounds good. We have a separate sawtooth-poet-cli package which makes sense if that's true. We don't have that command implemented yet though, correct?

pschwarz (Wed, 22 Mar 2017 14:55:40 GMT):
We do!

adamludvik (Wed, 22 Mar 2017 14:56:05 GMT):
... Is it the poet command....

adamludvik (Wed, 22 Mar 2017 14:56:08 GMT):
?

pschwarz (Wed, 22 Mar 2017 14:56:48 GMT):
Should the script at `bin/poet` be in the `consensus/poet/cli` package somewhere?

adamludvik (Wed, 22 Mar 2017 14:56:56 GMT):
I should probably add that as an entrypoint to the sawtooth-poet-cli package so it gets installed to the users path.

adamludvik (Wed, 22 Mar 2017 14:57:00 GMT):
Yes

pschwarz (Wed, 22 Mar 2017 14:57:17 GMT):
Cool - you should do the needful on that, then

adamludvik (Wed, 22 Mar 2017 14:57:28 GMT):
:+1:

jsmitchell (Wed, 22 Mar 2017 14:57:51 GMT):
:musical_note: _do the needful_ _do do do di do do do di_

jsmitchell (Wed, 22 Mar 2017 14:58:02 GMT):
sung to the tune of "Do the Hustle"

adamludvik (Wed, 22 Mar 2017 15:09:14 GMT):
I am creating docker containers based on these deb packages. I have a validator-registry container which runs tp_validator_registry, which requires the sawtooth-poet-families package. Are there any other poet processes we'd like to run in containers?

pschwarz (Wed, 22 Mar 2017 15:48:41 GMT):
We should considered locking the versions of our python dependencies. This will keep the builds more predictable and avoid any future issues like we're currently having the aiohttp library's recent update.

boydjohnson (Wed, 22 Mar 2017 15:52:06 GMT):
We should make a docker-blockchain, where global state controls the specific docker images available to download. This seems like the best fix.

jsmitchell (Wed, 22 Mar 2017 15:52:17 GMT):
dockchain

toddojala (Wed, 22 Mar 2017 15:59:20 GMT):
@foobarometer I will try to reproduce your issue today.

foobarometer (Wed, 22 Mar 2017 16:06:55 GMT):
Thanks!

foobarometer (Wed, 22 Mar 2017 16:06:55 GMT):
Thanks @toddojala !

toddojala (Wed, 22 Mar 2017 18:13:24 GMT):
@taishi This is the documentation we do have on PoET: http://intelledger.github.io/introduction.html#proof-of-elapsed-time-poet

toddojala (Wed, 22 Mar 2017 18:14:04 GMT):
@taishi Could you explain in more detail what you mean by a "permissioned environment"? Thanks!

jsmitchell (Wed, 22 Mar 2017 18:40:40 GMT):
A permissioned environment usually means a private instance of a validator network with specific controls around which nodes may join the network.

adamludvik (Wed, 22 Mar 2017 19:46:49 GMT):
@pschwarz Can you make a JIRA task for that?

Dan (Wed, 22 Mar 2017 19:51:09 GMT):
@taishi Sawtooth does not assume a permissioned network. It is designed to be deployable across a spectrum of public to private policy rules. That is to say that there are many possible policies that could control different aspects of the network. We have a couple policies implemented that reflect different usages, but also serve as examples of how you could customize your distributed ledger / network policy.

jjason (Wed, 22 Mar 2017 19:55:32 GMT):
In the PoET consensus module, because it may need to walk back blocks in the block store to gather information necessary to make a decision about (or gather statistics to make future decisions about) whether or not a block should be initialized or verified, it also needs to be able to create a state view for that block. This means that it needs access to the state view factory. A couple of options: 1. Change the BlockPublisher, BlockVerifier, and ForkResolver interfaces so that the state view factory, in place of the state view, is provided when an object is created. 2. Leave the BlockPublisher and BlockVerifier interfaces alone, but change ForkResolver interface to also take a state view object on creation. In addition, change the state view object so that it has a factory property that is the factory that created it. Publisher/Verifier/Resolver can then use that property to create new state view objects for arbitrary blocks as they see need for. I originally favored 2 as I thought that it would not require a change to the interface, but now am indifferent as I realized that the ForkResolver needs to be updated with a state view object at a minimum anyway.

jjason (Wed, 22 Mar 2017 20:05:33 GMT):
^^^^^^ @jsmitchell @cianx @Dan @pschwarz ^^^^^^^

pschwarz (Wed, 22 Mar 2017 20:21:24 GMT):
I think we would want to pass the combination of (state_hash, state_view_factory), which is equivalent to a single state_view, but gives the consensus module the ability to look at state views from previous blocks.

pschwarz (Wed, 22 Mar 2017 20:22:27 GMT):
I'm also wondering if there's a missing life-cycle seam here - initialize, which could do things like build the consensus cache from an existing chain, and then processing is on a block-by-block basis

pschwarz (Wed, 22 Mar 2017 20:22:27 GMT):
I'm also wondering if there's a missing life-cycle seam here - `initialize`, which could do things like build the consensus cache from an existing chain, and then processing is on a block-by-block basis

jjason (Wed, 22 Mar 2017 20:30:51 GMT):
For the PoET stuff, I was going to hide the building of the consensus cache from the publisher/verifier/resolver so that it thinks it is simply working on a block-by-block basis.

pschwarz (Wed, 22 Mar 2017 20:38:54 GMT):
Does PoET need access to the whole block chain at any other time then rebuilding that cache?

boydjohnson (Wed, 22 Mar 2017 21:12:08 GMT):
So I have two green checkmarks on PR176, the graceful shutdown PR, but wanted to give anyone who wanted to look at it a second chance.

jjason (Wed, 22 Mar 2017 21:47:50 GMT):
@pschwarz In theory, if the PoET consensus module is working properly, the only time it would ever need the entire blockchain would be in the case of the validator coming up with an existing block store but for some reason the consensus store was not there. However, I do need to guard against forks that cause the consensus module to not have complete stats for the blockchain.

pschwarz (Wed, 22 Mar 2017 22:00:10 GMT):
Fair enough

adamludvik (Wed, 22 Mar 2017 22:11:23 GMT):
I am going to put in a request to have the following docker repositories added to the hyperledger namespace unless somebody stops me: ``` sawtooth-rest_api sawtooth-tp_config sawtooth-tp_intkey_python sawtooth-tp_validator_registry sawtooth-tp_xo_python sawtooth-validator ```

jjason (Wed, 22 Mar 2017 22:17:07 GMT):
Anyone besides @pschwarz have feedback on publisher/verifier/resolver interface? If not, I am going to update to have state view factory replace state view in interfaces.

boydjohnson (Wed, 22 Mar 2017 22:36:18 GMT):
@adamludvik Is the intkey javascript docker image not ready? java will soon be ready. Why not grab namespaces for those as well.

jjason (Wed, 22 Mar 2017 22:40:08 GMT):
@adamludvik Should `sawtooth-tp_validator_registry` be `sawtooth-tp_validator_registry_python` for consistency with intkey. Note - that does not mean I am signing up to port the validator registry to JavaScript or Java.

jjason (Wed, 22 Mar 2017 22:40:38 GMT):
@adamludvik Same goes for `sawtooth-tp_config` @pschwarz

pschwarz (Wed, 22 Mar 2017 22:41:25 GMT):
We don't have alternative implementations of those TP's

boydjohnson (Wed, 22 Mar 2017 22:42:31 GMT):
But we might in the future, right?

adamludvik (Wed, 22 Mar 2017 22:43:38 GMT):
@boydjohnson I can reserve those too, but they still need the source mounted.

boydjohnson (Wed, 22 Mar 2017 22:45:06 GMT):
What does source mounted mean in this context?

adamludvik (Wed, 22 Mar 2017 22:45:22 GMT):
@jjason you make a good point. Although doesn't the validator registry depend on PoET and so a non-python implementation would require rewriting PoET?

jjason (Wed, 22 Mar 2017 22:45:49 GMT):
@adamludvik Nope. It would only require rewriting the TP.

jjason (Wed, 22 Mar 2017 22:46:48 GMT):
I could also argue that since Python is the "canonical" language, Python implementations could drop the `_python` moniker.

jjason (Wed, 22 Mar 2017 22:47:07 GMT):
Okay. I have pulled the pin out of the grenade and walked away. My work here is done. ;)

boydjohnson (Wed, 22 Mar 2017 22:47:25 GMT):
I've got to get going, but @jjason could you talk more about the consensus store

adamludvik (Wed, 22 Mar 2017 22:47:36 GMT):
I have not created debs for Java and JavaScript or done any work to make them isolated like the Python components. Theoretically I could just copy the source/compiled code into the image to achieve this though...

boydjohnson (Wed, 22 Mar 2017 22:48:03 GMT):
Oh, thanks @adamludvik.

jjason (Wed, 22 Mar 2017 22:50:54 GMT):
@boydjohnson The PoET consensus module needs to potentially load an arbitrary state view (based upon looking at blocks back in history) to gather enough information to make decisions about whether a validator should initialize a block (BlockPublisher.initialize_block), whether a block should be accepted from another validator (BlockVerifier.verify_block), or which branch of a fork to accept (ForkResolver.compare_forks). Currently, the block publisher and block verifier objects only have the state view for the most-recently-committed block. In order to get the state view for other blocks, they actually need the state view factory.

jjason (Wed, 22 Mar 2017 22:56:28 GMT):
The consensus store would be a mapping of block (block ID, state root hash, whatever) to the PoET consensus state/statistics at that point (for example, the number of blocks claimed by each validator, etc.). That way when a block is to be initialized or verified, the consensus store can be consulted to see if the PoET policies would allow it.

Dan (Thu, 23 Mar 2017 00:07:14 GMT):
@jjason trying to read upwards here... can you clarify for me... The state view is to let consensus look at the data in the merkle trie at a given time. In poet's case specifically for the validator registry? Where as the consensus store is intended to store and manage block metadata (like weight) that is not part of 'state' proper? And you are asking for feedback on consensus receiving a factory method so it can look at state at a variety of states? Can you say more about what that use case is? Is that to calculate c, k, z of the publishing validator?

Dan (Thu, 23 Mar 2017 00:52:58 GMT):
@rjones can you create a sawtooth-consensus channel for us?

jjason (Thu, 23 Mar 2017 03:42:44 GMT):
@dan Yes. The PoET consensus module needs to store additional data that is not part of the state 'proper' and it needs access to the validator registry as it existed when a particular block is the head of the chain (so, for example it knows the PoET public key for a validator). There may be cases in which the consensus module may not have computed statistics for a block and it needs to look up that block's merkle trie to obtain the validator registry at that point in time. These statistics are then used to in the decisions around enforcing the c, k, and z polices when determining in the block publisher whether it should initialize a block (i.e., no reason to initialize a block if it is just going to be rejected by the other validators) or determining in the block verifier if the block should be accepted.

jjason (Thu, 23 Mar 2017 03:42:44 GMT):
@dan Yes. The PoET consensus module needs to store additional data that is not part of the state 'proper' and it needs access to the validator registry as it existed when a particular block was the head of the chain (so, for example it knows the PoET public key for a validator). There may be cases in which the consensus module may not have computed statistics for a block and it needs to look up that block's merkle trie to obtain the validator registry at that point in time. These statistics are then used to in the decisions around enforcing the c, k, and z polices when determining in the block publisher whether it should initialize a block (i.e., no reason to initialize a block if it is just going to be rejected by the other validators) or determining in the block verifier if the block should be accepted.

rjones (Thu, 23 Mar 2017 05:26:36 GMT):
@jjason @Dan I created #sawtooth-consensus for you

Dan (Thu, 23 Mar 2017 13:07:17 GMT):
thanks @rjones!

PacoEcotrust (Thu, 23 Mar 2017 13:13:49 GMT):
hello, the documentation of MarketPlace in the latest tutorial does not appear. why?

PacoEcotrust (Thu, 23 Mar 2017 13:13:49 GMT):
hello, the documentation of MarketPlace in the latest tutorial does not appear. why? It is obsolete with the 0.8 version?

Dan (Thu, 23 Mar 2017 13:14:59 GMT):
Oh sorry about that @PacoEcotrust you hit the project just as we moved from 0.7 to 0.8.

Dan (Thu, 23 Mar 2017 13:15:36 GMT):
No one has ported marketplace into the 0.8 APIs yet

Dan (Thu, 23 Mar 2017 13:16:40 GMT):
You can continue to work through the old tutorial on 0.7 though. If you have the repos you can build the 0.7 docs ... that's not my ideal thing for you to do, but its there.

Dan (Thu, 23 Mar 2017 13:17:29 GMT):
@toddojala are the 0.7 docs still available on github.io? How hard is it to put that dropdown list back on so people can select 0.7?

PacoEcotrust (Thu, 23 Mar 2017 13:19:54 GMT):
ok, thanks, I will try

toddojala (Thu, 23 Mar 2017 13:50:25 GMT):
@PacoEcotrust and @Dan : http://intelledger.github.io/0.7/

toddojala (Thu, 23 Mar 2017 13:50:44 GMT):
The dropdown is still there on http://intelledger.github.io

toddojala (Thu, 23 Mar 2017 13:51:18 GMT):
We switched the default to 0.8, but anyone can still switch to 0.7. If not, let us know. Ryan and I switched and tested, but you never know!

Dan (Thu, 23 Mar 2017 13:51:31 GMT):
thanks @toddojala I could have sworn that dropdown wasn't there last night... maybe its browser dependent ... or maybe I was just too tired. :)

toddojala (Thu, 23 Mar 2017 13:51:38 GMT):
caching issue?

toddojala (Thu, 23 Mar 2017 13:51:56 GMT):
Caches are great, but can be inaccurate. ;)

Dan (Thu, 23 Mar 2017 13:52:08 GMT):
could be. looks good now though. thanks.

Dan (Thu, 23 Mar 2017 16:26:41 GMT):
anyone want to take a stab at expected "normal" transaction size? And max size?

jkilpatr (Thu, 23 Mar 2017 17:36:30 GMT):
Has joined the channel.

jsmitchell (Thu, 23 Mar 2017 17:39:24 GMT):
I have sent 10MB+ blocks over the network

mahesh_rao (Thu, 23 Mar 2017 18:23:10 GMT):
Has joined the channel.

boydjohnson (Thu, 23 Mar 2017 18:41:12 GMT):
```diff --git a/validator/sawtooth_validator/journal/consensus/dev_mode/dev_mode_consensus.py b/validator/sawtooth_validator/journal/consensus/dev_mode/dev_mode_consensus.py index f42b0d3..078bc90 100644 --- a/validator/sawtooth_validator/journal/consensus/dev_mode/dev_mode_consensus.py +++ b/validator/sawtooth_validator/journal/consensus/dev_mode/dev_mode_consensus.py @@ -116,7 +116,8 @@ class BlockVerifier(BlockVerifierInterface): self._state_view = state_view def verify_block(self, block_wrapper): - return block_wrapper.header.consensus == b"Devmode" + # return block_wrapper.header.consensus == b"Devmode" + return True class ForkResolver(ForkResolverInterface):```

jsmitchell (Thu, 23 Mar 2017 18:41:49 GMT):
@cianx ^

boydjohnson (Thu, 23 Mar 2017 18:41:55 GMT):
So this diff causes the poet-smoke test to pass *sometimes*.

boydjohnson (Thu, 23 Mar 2017 18:43:29 GMT):
It is because the config is set in the genesis block so the non-genesis validators aren't using Poet yet, but are using dev-mode. The block fails the dev-mode consensus check on those validators.

jsmitchell (Thu, 23 Mar 2017 18:43:37 GMT):
@nconde ^

jsmitchell (Thu, 23 Mar 2017 18:44:47 GMT):
does the consensus check happen before or after the state transition?

jsmitchell (Thu, 23 Mar 2017 18:45:06 GMT):
seems like the state view should be built on top of the transient state from the block

jsmitchell (Thu, 23 Mar 2017 18:45:09 GMT):
@jjason ^

pschwarz (Thu, 23 Mar 2017 18:51:31 GMT):
In genesis, it is using the transient state. There was an issue that I remember discussing with @jjason where this sort of problem occurred on the first block _post_ genesis

pschwarz (Thu, 23 Mar 2017 18:51:51 GMT):
I recall it being fixed by using the transient state

pschwarz (Thu, 23 Mar 2017 18:52:04 GMT):
Could be misremembering, though... :/

cianx (Thu, 23 Mar 2017 18:56:57 GMT):
That dif is not a fix. This is caused by the genesis controller using partial state to instantiate consensus.

cianx (Thu, 23 Mar 2017 18:56:57 GMT):
That dif is not a fix. This is caused by the genesis controller using partial state to onstantiate

boydjohnson (Thu, 23 Mar 2017 18:57:59 GMT):
Yeah, the diff isn't a good fix.

cianx (Thu, 23 Mar 2017 18:59:08 GMT):
State needs to take effect when the block is commited not in middle of a block transition. Which leaves us with a genesis conundrum. What algorithm should validate genesis? Do consensus algorithm s need to be aware of consensus changes?

cianx (Thu, 23 Mar 2017 18:59:08 GMT):
State needs to take effect when the block is commited not in middle of a block transition. Which leaves us with a genesis conundrum. Who should d

cianx (Thu, 23 Mar 2017 18:59:08 GMT):
State needs to take effect when the block is commited not in middle of a block transition. Which leaves us with a genesis conundrum. What algorithm should validate genesis? Do consensus algorithm s need to be aqare of consensus es changes?

jsmitchell (Thu, 23 Mar 2017 19:06:04 GMT):
what are the arguments against first doing the state transition with the transactions in the block to calculate a transient (unapplied) state, then doing consensus validation using a config view based on that transient state, and then applying the transient state once the block is considered valid in all dimensions?

Dan (Thu, 23 Mar 2017 19:13:21 GMT):
@boydjohnson et al ... no reason to change channels now, but note we now have a consensus channel.

cianx (Thu, 23 Mar 2017 19:14:33 GMT):
@Dan we just can't chat right for you.

jsmitchell (Thu, 23 Mar 2017 19:14:58 GMT):
we are chatting the best we can. can't you see that @dan?!!

Dan (Thu, 23 Mar 2017 19:17:12 GMT):
You're just ungrateful. I go get you a nice shiny new channel and you use the old one.

Dan (Thu, 23 Mar 2017 19:18:54 GMT):
no more presents from me

cianx (Thu, 23 Mar 2017 19:23:08 GMT):
When we publish a block we have to do it in the context of the chain head. Since we have to instantiate a consensus algorithm to approve the next block for publishing. The timing of this block approval for publishing affects the batch list for the block. So the final state root hash of the block is dependent on the timing of the consensus algorithm, using transient state makes determining what consensus algorithm to use indeterminate. The determination of the Consensus algorithm in the BlockValidator needs to match the behavior BlockPublisher.

jsmitchell (Thu, 23 Mar 2017 19:25:17 GMT):
yep

jsmitchell (Thu, 23 Mar 2017 19:25:36 GMT):
i buy that

jsmitchell (Thu, 23 Mar 2017 19:26:20 GMT):
ok, so block validation _must_ be grounded in the previous block's ending state

jsmitchell (Thu, 23 Mar 2017 19:26:23 GMT):
for config view

pschwarz (Thu, 23 Mar 2017 19:29:06 GMT):
Which makes sense (and how I thought things were supposed to work), except in during genesis time, which is special

jsmitchell (Thu, 23 Mar 2017 19:29:18 GMT):
but the specialness is causing breakage here, right?

pschwarz (Thu, 23 Mar 2017 19:29:47 GMT):
Yes, which means it's not actually selecting the right consensus module

jsmitchell (Thu, 23 Mar 2017 19:31:22 GMT):
seems like we need a genesis consensus which is the default

jsmitchell (Thu, 23 Mar 2017 19:31:46 GMT):
and is what the genesis block uses

jsmitchell (Thu, 23 Mar 2017 19:32:08 GMT):
which sets config values and establishes the base state for consensus transition in the next block

cianx (Thu, 23 Mar 2017 19:35:15 GMT):
There is already handling in the BlockValidator for the genesis block. It could be modified to return the genesis block state in the case of the genesis block. That would make the BlockValidate match the genesis controllers behavior.

cianx (Thu, 23 Mar 2017 19:35:27 GMT):
I have to go see if I feel dirty for typing that.

cianx (Thu, 23 Mar 2017 19:36:42 GMT):
def _get_previous_block_root_state_hash(self, blkw): if blkw.previous_block_id == NULL_BLOCK_IDENTIFIER: *return blkw.state_root_hash* else: prev_blkw = self._block_cache[blkw.previous_block_id] return prev_blkw.state_root_hash

cianx (Thu, 23 Mar 2017 19:37:10 GMT):
the bold line would be the change to the block validator.

cianx (Thu, 23 Mar 2017 19:37:24 GMT):
@boydjohnson ^ can you try that patch

boydjohnson (Thu, 23 Mar 2017 19:38:03 GMT):
Yeah, Just a second.

boydjohnson (Thu, 23 Mar 2017 19:43:38 GMT):
My vagrant locked up during running a test. So halting and upping vagrant.

jjason (Thu, 23 Mar 2017 19:52:48 GMT):
Special casing the genesis block in such a way means that PoET consensus needs to special case it as well as now the block will not have a wait certificate as expected.

jjason (Thu, 23 Mar 2017 19:54:08 GMT):
Also, because of the change to the BlockPublisher/et al interfaces, we need to make sure that the code above is put somewhere common so they don't have to worry about special casing when they want to create a state view with the state view factory.

cianx (Thu, 23 Mar 2017 19:54:12 GMT):
@jjason the patch I gave boyd will not create that situation.

jjason (Thu, 23 Mar 2017 19:56:39 GMT):
@cianx Sure

cianx (Thu, 23 Mar 2017 19:57:51 GMT):
The oddity is the system definition of block validation state, the Genesis block is validated in the context of its own state root hash. All other blocks are validated in the context of the previous blocks state root hash.

jsmitchell (Thu, 23 Mar 2017 19:59:59 GMT):
feels like we can make that cleaner

boydjohnson (Thu, 23 Mar 2017 20:04:49 GMT):
'''[20:03:07.980 ERROR chain] 'hash 61ec0eb93c0c3f2477e5dc83cf52a213f538cc0818c4511afa4d304e1854618d not found in database' Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/chain.py", line 193, in validate_block create_view(prev_state) File "/project/sawtooth-core/validator/sawtooth_validator/state/state_view.py", line 41, in create_view return StateView(MerkleDatabase(self._database, state_root_hash)) File "/project/sawtooth-core/validator/sawtooth_validator/state/merkle.py", line 36, in __init__ self.set_merkle_root(merkle_root) File "/project/sawtooth-core/validator/sawtooth_validator/state/merkle.py", line 66, in set_merkle_root self._root_node = self._get_by_hash(merkle_root) File "/project/sawtooth-core/validator/sawtooth_validator/state/merkle.py", line 77, in _get_by_hash raise KeyError("hash {} not found in database".format(key_hash)) KeyError: 'hash 61ec0eb93c0c3f2477e5dc83cf52a213f538cc0818c4511afa4d304e1854618d not found in database''''

boydjohnson (Thu, 23 Mar 2017 20:05:43 GMT):
So when the genesis block comes in to a non-genesis validator, the state root on that block is not in the state of the non-genesis validator.

boydjohnson (Thu, 23 Mar 2017 20:06:16 GMT):
@cianx ^

jjason (Thu, 23 Mar 2017 20:54:58 GMT):
@cianx RE: "The oddity is the ...." means also that giving BlockPublisher, et al, the state factory, creating a state view must be postponed until initialize_block, et al, as trying to do so in the __init__ method when being fired up to process the genesis block results in a different state view being available to it. For example, the BlockPublisher.__init__ method, in the case of the genesis block, the object only has access to the state view asscoiated with INIT_ROOT_KEY because it doesn't have access to a block wrapper yet. However, in the BlockPublisher.initialize_block method it would have access to the state view for the genesis block it is being asked to initialize.

jjason (Thu, 23 Mar 2017 20:56:04 GMT):
Found this out the hard way when trying to start up the enclave and working through why the config TP settings were not being honored (e.g., sawtooth.poet.target_wait_time).

jjason (Thu, 23 Mar 2017 21:03:16 GMT):
Actually....I may be seeing something else...in publisher, it calls _build_block with self._chain_head (line 413). It uses this to create the state view (line 111). At this point, am I right in assuming this is not in the block store/block cache yet? Is the state view for this not-yet-initialized block a copy of the state view from the previous block?

jjason (Thu, 23 Mar 2017 21:03:16 GMT):
Actually....I may be seeing something else...in publisher, it calls `_build_block` with self._chain_head (line 413). It uses this to create the state view (line 111). At this point, am I right in assuming this is not in the block store/block cache yet? Is the state view for this not-yet-initialized block a copy of the state view from the previous block?

cianx (Thu, 23 Mar 2017 21:05:21 GMT):
The candidate block does not exist until after finalize block, as with all other blocks that don't exist it will not exist in the block cache.

jjason (Thu, 23 Mar 2017 21:08:15 GMT):
Okay. That is what thought/hoped.

pschwarz (Thu, 23 Mar 2017 21:25:33 GMT):
Chatting a bit out of band with @jsmitchell, @cianx and @Dan on the subject of the genesis block on non-genesis validators, and we arrived at the solution of introducing a GenesisConsensus module that would be the default consensus as configured from the empty state. This change requires that a genesis.batch needs some settings transactions for configuring the consensus modules for blocks 1+ - not an unreasonable ask since we're planning on making sawtooth_settings vote-only with a minimum of one approved public key, which changes `sawtooth admin genesis` to require at least one set of batches -- unlike now, where it has none.

Dan (Thu, 23 Mar 2017 21:26:16 GMT):
@jjason how does poet handle genesis block (or I guess generally any non-poet block) when it comes to stats like aggregate local mean?

adamludvik (Thu, 23 Mar 2017 21:39:05 GMT):
Hey all, I put up a PR to add security linting as a build step. Right now we fail the test but I have it setup so the build doesn't fail...yet. It seems like we could pass with a reasonable amount of effort. https://github.com/hyperledger/sawtooth-core/pull/248 Feel free to review it or add comments even if I didn't request you.

adamludvik (Thu, 23 Mar 2017 21:43:34 GMT):

Message Attachments

adamludvik (Thu, 23 Mar 2017 21:44:06 GMT):
^ That's a PDF of output from bandit run on our code.

Dan (Thu, 23 Mar 2017 21:46:30 GMT):
If we resolve that an issue is a false positive how do we turn it off? Do we have to do like what we do with inline statements to pylint?

adamludvik (Thu, 23 Mar 2017 21:48:32 GMT):
There is a way to create a baseline, and have bandit only fail if new issues are created: https://wiki.openstack.org/wiki/Security/Projects/Bandit#Bandit_Baseline_Gate

jjason (Thu, 23 Mar 2017 21:49:02 GMT):
Great. So, we just run it twice every time and the second time will find no issues. Problem solved.

adamludvik (Thu, 23 Mar 2017 21:49:10 GMT):
I am looking to see if there is something like what pylint has.

adamludvik (Thu, 23 Mar 2017 21:49:18 GMT):
@jjason lol

adamludvik (Thu, 23 Mar 2017 21:53:48 GMT):
We can also configure it to exclude certain directories, skip certain tests, and control thresholds for severity & confidence before it fails the build.

adamludvik (Thu, 23 Mar 2017 21:54:50 GMT):
And you can add a `# nosec` comment to disable checking for a specific line.

Dan (Thu, 23 Mar 2017 21:59:28 GMT):
Cool. @Tom Barnes ^

jsmitchell (Thu, 23 Mar 2017 22:11:03 GMT):
this is groovy

pschwarz (Thu, 23 Mar 2017 22:34:12 GMT):
That's very cool

adamludvik (Thu, 23 Mar 2017 22:52:41 GMT):
We now have published docker images: https://hub.docker.com/u/hyperledger/dashboard/?page=2

adamludvik (Thu, 23 Mar 2017 22:52:56 GMT):
They are all tagged as unstable though, and subject to change at my whim and fancy.

adamludvik (Thu, 23 Mar 2017 22:54:00 GMT):
@amundson

adamludvik (Thu, 23 Mar 2017 22:54:43 GMT):
https://hub.docker.com/r/hyperledger/sawtooth-validator/

arb_shl (Fri, 24 Mar 2017 12:54:25 GMT):
Has joined the channel.

Dan (Fri, 24 Mar 2017 13:20:38 GMT):
Gits giving me a lot of this error lately (since we changed pr process) when I pull master. It clears up if I pull again. Just curious if anyone else sees this or has a remedy: `Unlink of file '.git/objects/pack/pack-3bc9cf86a7886eae7bbc72b1703fd1760d2f21d7.idx' failed. Should I try again? (y/n) y`

Dan (Fri, 24 Mar 2017 13:20:38 GMT):
Git's giving me a lot of this error lately (since we changed pr process) when I pull master. It clears up if I pull again. Just curious if anyone else sees this or has a remedy: `Unlink of file '.git/objects/pack/pack-3bc9cf86a7886eae7bbc72b1703fd1760d2f21d7.idx' failed. Should I try again? (y/n) y`

jsmitchell (Fri, 24 Mar 2017 13:26:50 GMT):
are you running git from inside a vm on a shared filesystem?

Dan (Fri, 24 Mar 2017 14:26:28 GMT):
running git through git bash from windows. I don't pull from within vagrant.. do all my git ops from the git bash shell.

jsmitchell (Fri, 24 Mar 2017 14:26:38 GMT):
oh, windows

Dan (Fri, 24 Mar 2017 14:27:03 GMT):
yes I anticipated that reply ;)

Dan (Fri, 24 Mar 2017 14:34:35 GMT):
hey @adamludvik to run_tests am I expected to first build_all or build_python or ?

adamludvik (Fri, 24 Mar 2017 14:36:18 GMT):
`build_all`

adamludvik (Fri, 24 Mar 2017 14:36:59 GMT):
https://chat.hyperledger.org/channel/sawtoothlake?msg=Ksd3jaG6J3BeeX54o

jjason (Fri, 24 Mar 2017 14:48:25 GMT):
@dan If you only want to run Python tests I only do `build_all -l python` and then `run_tests -x java_sdk -x javascript_sdk`

jjason (Fri, 24 Mar 2017 14:48:53 GMT):
@dan I have not see that unlink problem, but I am not surprised at all as Windows doesn't have a real file system anyway.

jjason (Fri, 24 Mar 2017 14:48:53 GMT):
@dan I have not seen that unlink problem, but I am not surprised at all as Windows doesn't have a real file system anyway.

jsmitchell (Fri, 24 Mar 2017 14:50:52 GMT):
yeah, plus it's probably constantly dorking around stat-ing files and reading them to build searchable indexes or some crap

jsmitchell (Fri, 24 Mar 2017 14:55:36 GMT):
reminder: if you want to lint your code _before_ you push a PR, you can run ./bin/run_lint

jjason (Fri, 24 Mar 2017 14:57:12 GMT):
Stronger reminder: don't even think of pushing your PR without running `./bin/run_lint first`. ;)

jjason (Fri, 24 Mar 2017 14:57:12 GMT):
Stronger reminder: don't even think of pushing your PR without running `./bin/run_lint` first. ;)

jjason (Fri, 24 Mar 2017 15:17:46 GMT):
Question about testing/mocks. I seem several mocks have been created in specific unit test directories under `validator/tests/unit3`. I also see that some unit tests are importing mocks form other unit tests. Since some of these mocks seem generally useful to multiple tests (for example, `MockBlockStore`), would it be beneficial to collect the generic mocks into their own directory for use in multiple unit tests?

agunde (Fri, 24 Mar 2017 15:28:08 GMT):
The idea is that any mocks that are only useful to one set of unit tests for (example only used to test the scheduler) then it should go in the specific unit test directories. If it is a class that could be useful to many unit tests (aka testing library code) it should be moved to a new top level directory called test/sawtooth_test (this has not been created yet)

jjason (Fri, 24 Mar 2017 15:32:54 GMT):
Sounds like a plan to me.

Dan (Fri, 24 Mar 2017 16:11:17 GMT):
I like all my lint publicly exposed

adamludvik (Fri, 24 Mar 2017 17:52:12 GMT):
Could use a couple reviews on this quick versioning fix. Also fixes Ctrl+C not working during the java/javascript steps in build_all: https://github.com/hyperledger/sawtooth-core/pull/250

jsmitchell (Fri, 24 Mar 2017 18:13:59 GMT):
looks like there are some mergeable PRs out there

jsmitchell (Fri, 24 Mar 2017 18:17:02 GMT):
@zac @adamludvik

jsmitchell (Fri, 24 Mar 2017 18:17:54 GMT):
@zac

jsmitchell (Fri, 24 Mar 2017 18:19:58 GMT):
@zac excellent

zac (Fri, 24 Mar 2017 18:20:10 GMT):
Hello

adamludvik (Fri, 24 Mar 2017 18:20:21 GMT):
Waiting for @rbuysse

jsmitchell (Fri, 24 Mar 2017 18:20:52 GMT):
aren't we all

rbuysse (Fri, 24 Mar 2017 18:36:40 GMT):
hi

jsmitchell (Fri, 24 Mar 2017 18:36:52 GMT):
OUR WAIT IS OVER!

jsmitchell (Fri, 24 Mar 2017 18:36:54 GMT):
rejoice!

rbuysse (Fri, 24 Mar 2017 18:37:10 GMT):
don't we have to joice first?

jsmitchell (Fri, 24 Mar 2017 18:38:59 GMT):
If you choose not to deride, you still have made a joice?

Dan (Fri, 24 Mar 2017 19:28:14 GMT):
Did you Rush to that pun?

boydjohnson (Fri, 24 Mar 2017 19:39:16 GMT):
Just calling out, and people are probably doing this regularly, but @zac's merge requires that protogen or build_all be run.

jsmitchell (Fri, 24 Mar 2017 19:39:41 GMT):
I'm basically like while 1: build_all

jsmitchell (Fri, 24 Mar 2017 19:39:50 GMT):
always be building

rjones (Fri, 24 Mar 2017 19:42:37 GMT):
not quite as catchy as Always. Be. Closing.

jsmitchell (Fri, 24 Mar 2017 19:42:50 GMT):
Coffee is for Builders

rjones (Fri, 24 Mar 2017 19:45:51 GMT):
_puts the coffee down_

jsmitchell (Fri, 24 Mar 2017 19:46:07 GMT):
i suspect you build stuff a lot @rjones

rjones (Fri, 24 Mar 2017 19:46:29 GMT):
it's my lot in life ¯\_(ツ)_/¯

pschwarz (Fri, 24 Mar 2017 20:30:01 GMT):
@cianx Right now, the developer experience for creating transaction processors with the Javascript SDK requires a little bit of additionaly setup: 1. Run `bin/build_javascript_sdk`. 2. In their own transaction processor project, add the `sawtooth-sdk` dependency via ``` yarn add file:/project/sawtooth-core/sdk/javascript ``` It will be added as a relative file dependency. 3. From there, they can use `sdk/examples/intkey_javascript` project as an example.

cianx (Fri, 24 Mar 2017 20:31:33 GMT):
Thanks

pschwarz (Fri, 24 Mar 2017 20:32:28 GMT):
Once we are deploying the sdk to the NPM repo, this should be much easier.

cianx (Mon, 27 Mar 2017 06:01:57 GMT):
What is the best way to run a intkey workload against a validator?

cianx (Mon, 27 Mar 2017 06:02:44 GMT):
2nd related but completely different question, what is the best way to write a transaction tester for a new transaction processor?

cianx (Mon, 27 Mar 2017 06:22:18 GMT):
@agunde ^ you might have an answer to the workload?

cianx (Mon, 27 Mar 2017 06:23:52 GMT):
@boydjohnson @drozd ^^ is there a good pattern to follow for building transaction processor/family test frameworks

cianx (Mon, 27 Mar 2017 10:01:15 GMT):
```VAGRANT_BOX = ubuntu/xenial64 VAGRANT_FORWARD_PORTS = true VAGRANT_MEMORY = 2048 VAGRANT_CPUS = 2 Configuring proxyconf plugin! http_proxy: http://proxy-us.intel.com:911 https_proxy: http://proxy-us.intel.com:912 no_proxy: intel.com,.intel.com,10.0.0.0,10.0.0.8,192.168.0.0,192.168.0.16,localhost,127.0.0.0,127.0.0.8,134.134.0.0,134.134.0.16,172.16.0.0,172.16.0.20 Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'ubuntu/xenial64'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'ubuntu/xenial64' is up to date... ==> default: Setting the name of the VM: sawtooth ==> default: Destroying VM and associated drives... C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.3/lib/vagrant/util/is_port_open.rb:21:in `initialize': The requested address is not valid in its context. - connect(2) for "0.0.0.0" port 8800 (Errno::EADDRNOTAVAIL) from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.9.3/lib/vagrant/util/is_port_open.rb:21:in `new' ```

cianx (Mon, 27 Mar 2017 10:02:51 GMT):
@adamludvik @amundson ^ I am seeing the error on vagrant up, with Vagrant 1.9.3 and VirtualBox 5.1.18

cianx (Mon, 27 Mar 2017 11:33:44 GMT):
I have seen this on 5 separate machines today. So far it seems to be every windows machine.

cianx (Mon, 27 Mar 2017 11:36:35 GMT):
I put up a pr for this to disable port forwarding but would rather have a fix for port forwarding on windows.

adamludvik (Mon, 27 Mar 2017 12:46:12 GMT):
@cianx Look at sawtooth integration, config, and validator registry for examples of tp tests. They all use some framework code I built in sdk/python/sawtooth_processor_test

adamludvik (Mon, 27 Mar 2017 12:48:34 GMT):
The intkey workload command has a pretty good usage flag if I remember, `intkey workload -h` I think. (I'm on the bus atm.)

adamludvik (Mon, 27 Mar 2017 12:49:47 GMT):
Is the port forwarding issue new? Did anything change recently?

cianx (Mon, 27 Mar 2017 12:52:53 GMT):
I started seeing it Saturday, when I updated my laptop to the latest virtual box and vagrant

cianx (Mon, 27 Mar 2017 12:54:35 GMT):
Today I helped 4 people setup new dev environments all clean installs of the latest virtual box and vagrant. They all had the port forwarding issue.

cianx (Mon, 27 Mar 2017 12:54:46 GMT):
I could not find any leads on the internet.

adamludvik (Mon, 27 Mar 2017 12:58:11 GMT):
Alright, I will take a look soon.

jsmitchell (Mon, 27 Mar 2017 13:02:24 GMT):
https://github.com/mitchellh/vagrant/issues/8395

jsmitchell (Mon, 27 Mar 2017 13:03:48 GMT):
tldr try 127.0.0.1 instead of 0.0.0.0

jsmitchell (Mon, 27 Mar 2017 13:04:01 GMT):
Until the fix is in

adamludvik (Mon, 27 Mar 2017 13:23:59 GMT):
@jsmitchell I will test that and put up a PR if it works, unless you're already working on it

Dan (Mon, 27 Mar 2017 13:47:13 GMT):
baby seal ripe for clubbing: https://github.com/hyperledger/sawtooth-core/pull/254

jsmitchell (Mon, 27 Mar 2017 13:48:10 GMT):
@adamludvik Go for it

agunde (Mon, 27 Mar 2017 13:58:14 GMT):
@cianx Did you get the intkey workload to work?

adamludvik (Mon, 27 Mar 2017 14:14:02 GMT):
@cianx Can you test if this fixes the port forwarding issue? I tested it on a Windows box with the same versions of vagrant and virtual box you mentioned above after reproducing the issue and it seems to work: https://github.com/hyperledger/sawtooth-core/pull/264

Dan (Mon, 27 Mar 2017 15:11:27 GMT):
What's our process for dependent PRs? At least with regard to this scenario.. I put up a simple PR{commit1}. Got to some more involved changes that depend on that PR a day or so later so I put up PR2 {commit1,2,3}. If PR1 gets merged then PR2{commit2,3} is a little easier to review.

pschwarz (Mon, 27 Mar 2017 15:12:32 GMT):
Technically, I think the later PR, if closed first, will auto-close the earlier PR since its commit will also be merged, so long as there wasn't any fix-up/squashes

pschwarz (Mon, 27 Mar 2017 15:13:46 GMT):
Might be best to just close them in favor of the later one, as long as the commits are still nicely separated anyway. They are as easy to review in one PR as multiples.

Dan (Mon, 27 Mar 2017 15:17:05 GMT):
ok, closed #254 in favor of grander #261.

Dan (Mon, 27 Mar 2017 15:17:14 GMT):
ooh colorful.

pschwarz (Mon, 27 Mar 2017 15:17:42 GMT):
That is unexpected - PR's will naturally move though the spectrum as the project ages...

rjones (Mon, 27 Mar 2017 15:33:03 GMT):
@dan I think I've posted the javascript event handler for #sawtoothlake-pr-review before, if anyone can help change it to do what you want I'm all ears (or rather, I'm all copy-paste)

silliman (Mon, 27 Mar 2017 15:38:55 GMT):
Has left the channel.

zac (Mon, 27 Mar 2017 16:07:10 GMT):
Do we want to add a `batch_status` command to the CLI?

zac (Mon, 27 Mar 2017 16:07:23 GMT):
Is that something people would use?

zac (Mon, 27 Mar 2017 16:07:46 GMT):
You can currently `batch show`, and `submit` a batch

jsmitchell (Mon, 27 Mar 2017 16:07:57 GMT):
what would batch_status return?

jsmitchell (Mon, 27 Mar 2017 16:08:09 GMT):
(other than the status of batches)?

zac (Mon, 27 Mar 2017 16:08:19 GMT):
Mostly that

jsmitchell (Mon, 27 Mar 2017 16:08:20 GMT):
like, more specifically, I mean

jsmitchell (Mon, 27 Mar 2017 16:08:31 GMT):
i was just heading off your snark at the pass

zac (Mon, 27 Mar 2017 16:08:37 GMT):
But you coudl tell it to `--wait` if you wanted to know when a batch was committed

zac (Mon, 27 Mar 2017 16:08:42 GMT):
separate from submitting it

jsmitchell (Mon, 27 Mar 2017 16:09:03 GMT):
what are the different possible statuseses

zac (Mon, 27 Mar 2017 16:09:04 GMT):
Because you can already do that with `submit`

zac (Mon, 27 Mar 2017 16:09:32 GMT):
Right now, just `COMMITTED`, `PENDING`, and `UNKNOWN` (i.e. probably rejected)

jsmitchell (Mon, 27 Mar 2017 16:09:47 GMT):
how would it answer COMMITTED?

zac (Mon, 27 Mar 2017 16:09:58 GMT):
There is a place for an `INVALID` status, but no mechanism for detecting that state at the moment

zac (Mon, 27 Mar 2017 16:11:06 GMT):
If you were querying multiple ids: ``` COMMITTED COMMITTED ```

jsmitchell (Mon, 27 Mar 2017 16:11:21 GMT):
no, how does it ask the core if a batch is committed?

zac (Mon, 27 Mar 2017 16:11:47 GMT):
Same a a `batch show` essentially

zac (Mon, 27 Mar 2017 16:11:51 GMT):
Is it in the block store?

jsmitchell (Mon, 27 Mar 2017 16:12:20 GMT):
and pending?

zac (Mon, 27 Mar 2017 16:12:33 GMT):
Checks the batch cache

zac (Mon, 27 Mar 2017 16:12:40 GMT):
If not in either it is Unknown

zac (Mon, 27 Mar 2017 16:12:54 GMT):
Eventually there should be some sort of reject pile

jsmitchell (Mon, 27 Mar 2017 16:13:06 GMT):
batche

zac (Mon, 27 Mar 2017 16:13:13 GMT):
Where Invalid batches would be found, along with a reason

jsmitchell (Mon, 27 Mar 2017 16:13:31 GMT):
yes, this is useful

cianx (Mon, 27 Mar 2017 16:16:04 GMT):
What happened to the docker_build_all command referenced by sawtooth cluster?

cianx (Mon, 27 Mar 2017 16:16:04 GMT):
@adamludvik

zac (Mon, 27 Mar 2017 16:22:38 GMT):
Okay, should be a fairly straightforward add

adamludvik (Mon, 27 Mar 2017 16:23:06 GMT):
`docker_build_all` became `build_all` and `build_all` became `build_python`. Are there residual comments in sawtooth cluster that refer to docker_build_all?

adamludvik (Mon, 27 Mar 2017 16:23:15 GMT):
^ @cianx

zac (Mon, 27 Mar 2017 16:24:21 GMT):
I'm thinking `sawtooth batch status `

zac (Mon, 27 Mar 2017 16:25:01 GMT):
Though that would limit it to one batch's status

zac (Mon, 27 Mar 2017 16:25:19 GMT):
Is it important to be able to check multiple batches at a time with this command?

Dan (Mon, 27 Mar 2017 16:27:56 GMT):
thanks @rjones I found the gist you put up before. https://gist.github.com/rjones-lf/fbe68e5fc9cef6ae6a8847df7d08f739#file-gistfile1-txt

rjones (Mon, 27 Mar 2017 16:29:22 GMT):
@dan I didn't mean to send you on a hunt, I got distracted. thank you. IIRC the issue is we either get a small subset of github events that isn't what you need, or we get the flood from github, so the issue is how to prune the flood to just what you need.

rjones (Mon, 27 Mar 2017 16:31:00 GMT):

Message Attachments

rjones (Mon, 27 Mar 2017 16:32:34 GMT):

Message Attachments

Dan (Mon, 27 Mar 2017 16:42:12 GMT):
It's all good @rjones the search on here is pretty good. We could try taking OFF `pull request`. It looks like `pull request review` might be sufficient. Would be a cheap experiment anyway.

rjones (Mon, 27 Mar 2017 16:42:51 GMT):
OK, so leave `push` and `pull request review` ?

boydjohnson (Mon, 27 Mar 2017 16:44:15 GMT):
So I am closing the fix shutdown smoke PR. The details are that right now in master parallel jobs on jenkins will sometimes fail because of how I wrote the test. All that needs to be done is rebuild the PR if you get a "container already exists" type of error on the shutdown-smoke test. When we switch to running our tests with built packages in a few weeks, I will fix the shutdown-smoke test so that parallel jobs on jenkins can be run.

PacoEcotrust (Mon, 27 Mar 2017 16:49:08 GMT):
Hi, I have this problem with the 0.8 version. I think this error I had with the version 0.7 but I do not remember how I resolved. Some one have any idea. Thanks There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "ac466053-04d0-49e8-8dd7-c74850011916", "--type", "headless"] Stderr: VBoxManage: error: The virtual machine 'sawtooth' has terminated unexpectedly during startup with exit code 1 (0x1) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine

PacoEcotrust (Mon, 27 Mar 2017 16:49:08 GMT):
Hi, I have this problem with the 0.8 version. I think this error I had with the version 0.7 but I do not remember how I resolved. Some one have any idea. Thanks There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "ac466053-04d0-49e8-8dd7-c74850011916", "--type", "headless"] Stderr: VBoxManage: error: The virtual machine 'sawtooth' has terminated unexpectedly during startup with exit code 1 (0x1) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine I am using ubuntu 16.04 and virtualbox 5.1

PacoEcotrust (Mon, 27 Mar 2017 16:49:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=uzwqwR5W4Kr5tzvXs) @boydjohnson I had to reinstall the virtualbox new version. I saved in another place the virtualmachines of 0.7 version. And I had to try several times the vagrant up because I had some problems. I got to finished to run vagrant up, and now I am in this fase. But, dont worry sure it is my fault with mix of versions, Thanks you.

adamludvik (Mon, 27 Mar 2017 16:53:23 GMT):
Can I get a quick review on this PR? Cian needs it for the hackathon: https://github.com/hyperledger/sawtooth-core/pull/264

Dan (Mon, 27 Mar 2017 16:58:04 GMT):
@rjones yes please. Lets see how it looks if we just turn off `pull request`

Dan (Mon, 27 Mar 2017 16:59:38 GMT):
@adamludvik looks like you got 2 green :heavy_check_mark:'s. Are you good to go or still need more eyes on that?

adamludvik (Mon, 27 Mar 2017 16:59:52 GMT):
Just merged

jsmitchell (Mon, 27 Mar 2017 17:00:02 GMT):
@PacoEcotrust: do you have up to date VirtualBox _and_ up to date VirtualBox guest additions?

rjones (Mon, 27 Mar 2017 17:00:13 GMT):
@dan done

PacoEcotrust (Mon, 27 Mar 2017 17:01:27 GMT):
guest additions, no. I will install it, thanks

cianx (Mon, 27 Mar 2017 17:23:58 GMT):
@adamludvik '''

cianx (Mon, 27 Mar 2017 17:24:06 GMT):
```C:\Users\clmontgo\Workspaces\sawtooth\sawtooth-core\manage\sawtooth_manage\docker.py: 189 raise ManagementError( 190 'Docker images not built: {}. Try running ' 191: '"docker_build_all"'.format( 192 ', '.join(unbuilt))) 193

adamludvik (Mon, 27 Mar 2017 17:37:04 GMT):
Do we have an intended usage for the cluster command? Now that we are publishing docker images on dockerhub, we could change it so it downloads the images automatically?

jjason (Mon, 27 Mar 2017 17:45:28 GMT):
With the merge of the genesis consensus stuff, the PoET consensus stuff is broken for a bit. I need to make a fix. Will try to push a PR ASAP.

jjason (Mon, 27 Mar 2017 17:45:39 GMT):
:warning: :warning: :warning: :warning: :warning: :warning: :warning:

Dan (Mon, 27 Mar 2017 17:46:04 GMT):
@adamludvik I feel like @amundson and @Tom Barnes have usages and opinions on cluster but might not be available today.

jsmitchell (Mon, 27 Mar 2017 17:51:00 GMT):

Message Attachments

jsmitchell (Mon, 27 Mar 2017 17:51:24 GMT):
:neutral_face:

boydjohnson (Mon, 27 Mar 2017 17:51:31 GMT):
So cluster manage type docker doesn't do peering right now. @adamludvik and I have talked about how to fix it.

toddojala (Mon, 27 Mar 2017 17:51:52 GMT):
@boydjohnson I noticed that today. I was going to mention that.

jsmitchell (Mon, 27 Mar 2017 17:55:33 GMT):
a rare slip-up from the usually perfect @jjason

jsmitchell (Mon, 27 Mar 2017 17:55:38 GMT):
this is a dark day indeed

jsmitchell (Mon, 27 Mar 2017 17:56:00 GMT):
i don't know what to believe anymore

adamludvik (Mon, 27 Mar 2017 17:59:47 GMT):
Cluster manage type docker is actually further broken... I renamed the dockerfiles it depends on. We should clarify its usage and intent before making the fix as that will influence what the right fix is.

jjason (Mon, 27 Mar 2017 18:03:01 GMT):
@jsmitchell I knew that I was going to have to make a fix - that was our discussion about what to do if a consensus module encounters a block it didn't create. I was just hoping I would have at least a little more breathing room before I had to do it ;)

jjason (Mon, 27 Mar 2017 18:03:21 GMT):
It only took @drozd an hour to get tripped up by it :(

cianx (Mon, 27 Mar 2017 18:47:06 GMT):
@dan @adamludvik i have some opinions about the sawtooth cluster tool and how it should work with (on support) of the sdks. But details on those will have to wait until I finish at this mexican bar.

cianx (Mon, 27 Mar 2017 18:47:24 GMT):
Yes I am ar a mexican bar in tel aviv.

cianx (Mon, 27 Mar 2017 18:47:24 GMT):
Yes I am at a mexican bar in tel aviv.

Dan (Mon, 27 Mar 2017 18:49:32 GMT):
You're really doubling down on this reentry problem @cintel.

cianx (Mon, 27 Mar 2017 18:50:51 GMT):
You know how I am when I gamble.

jjason (Mon, 27 Mar 2017 18:50:58 GMT):
It's not like they built a wall around the Mexican bar.

Dan (Mon, 27 Mar 2017 18:51:35 GMT):
yet

jjason (Mon, 27 Mar 2017 18:55:38 GMT):
Worse places to be trapped inside

cianx (Mon, 27 Mar 2017 18:57:44 GMT):
I have two teams at the hackathon using sawtooth, 7 developers -- 4 from intel, 3 from the stock exchange.

jsmitchell (Mon, 27 Mar 2017 19:01:18 GMT):
define 'using'

jsmitchell (Mon, 27 Mar 2017 19:01:23 GMT):
:)

jsmitchell (Mon, 27 Mar 2017 19:01:30 GMT):
that's awesome!

kelly_ (Mon, 27 Mar 2017 19:45:22 GMT):
nice @cianx !

mhart (Mon, 27 Mar 2017 20:07:21 GMT):
Has joined the channel.

mhart (Mon, 27 Mar 2017 20:15:52 GMT):
Hi all! Question: getting lots of `Transaction 210f7ec in batch 0db752 has unsatisfied dependency: d8699` type messages coming from the validator (latest master) – what does this mean exactly?

jsmitchell (Mon, 27 Mar 2017 20:16:24 GMT):
@mhart: where are your batches coming from? intkey?

jsmitchell (Mon, 27 Mar 2017 20:16:36 GMT):
or did you write your own transaction family?

mhart (Mon, 27 Mar 2017 20:16:40 GMT):
intkey

mhart (Mon, 27 Mar 2017 20:16:55 GMT):
but also from my own transaction family :-)

mhart (Mon, 27 Mar 2017 20:17:24 GMT):
I saw them in my own transaction family, then tried with intkey and noticed the same thing

jsmitchell (Mon, 27 Mar 2017 20:18:49 GMT):
yeah, i think there is a bug in publishing

jsmitchell (Mon, 27 Mar 2017 20:18:57 GMT):
@agunde @cianx: ^

jsmitchell (Mon, 27 Mar 2017 20:19:09 GMT):
any additional clues?

jsmitchell (Mon, 27 Mar 2017 20:19:46 GMT):
@mhart: the completer enforces ordered delivery of batches to the publisher

jsmitchell (Mon, 27 Mar 2017 20:20:22 GMT):
where 'ordered' means - "if there is a dependent transaction or batch, make sure it is submitted to the publisher first"

mhart (Mon, 27 Mar 2017 20:20:44 GMT):
there's also no feedback at all from the transaction handler – shouldn't there be errors or something? seems to just be silent

jsmitchell (Mon, 27 Mar 2017 20:21:10 GMT):
@mhart: the transaction handler is never reached in this case

mhart (Mon, 27 Mar 2017 20:21:18 GMT):
ah

jsmitchell (Mon, 27 Mar 2017 20:21:31 GMT):
the headers contain enough information for the publisher to decide that the dependency is unsatisfied

cianx (Mon, 27 Mar 2017 20:21:31 GMT):
@mhart can you see if the dependencies were committed on a block or dropped?

cianx (Mon, 27 Mar 2017 20:21:31 GMT):
@mhart can you see if the drpendencies were committed on a block or dropped?

jsmitchell (Mon, 27 Mar 2017 20:21:56 GMT):
so, there is no sense in scheduling the transactions in the batch for processing

mhart (Mon, 27 Mar 2017 20:22:57 GMT):
@cianx before the first `unsatisfied dependency` message there's a collection of `ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST` messages

mhart (Mon, 27 Mar 2017 20:23:04 GMT):
nothing in between

jsmitchell (Mon, 27 Mar 2017 20:23:35 GMT):
those receiving CLIENT_BATCH_SUBMIT_REQUEST messages are the client submitting the batches to the component interconnect

mhart (Mon, 27 Mar 2017 20:24:18 GMT):
(this is when running `validator -vv` btw)

cianx (Mon, 27 Mar 2017 20:24:32 GMT):
Does @agunde have a recipe to repeat this on intkey?

mhart (Mon, 27 Mar 2017 20:25:46 GMT):
Is it a result of the blockchain being in a certain state? If I delete `/data` for example, should that work again?

jsmitchell (Mon, 27 Mar 2017 20:26:33 GMT):
the 'start fresh' procedure is: rm -rf /home/ubuntu/sawtooth/data/*; ./bin/sawtooth admin genesis; ./bin/validator -vv

mhart (Mon, 27 Mar 2017 20:26:55 GMT):
right, pretty sure that's what I did and ended up with the same problems – lemme try again

jsmitchell (Mon, 27 Mar 2017 20:27:07 GMT):
yeah, i know i've seen this too.

mhart (Mon, 27 Mar 2017 20:27:24 GMT):
this was on master – from a commit sometime yesterday – dunno if that's part of the issue? should I be using a specific tag?

jsmitchell (Mon, 27 Mar 2017 20:27:49 GMT):
no, i think it's a current defect

mhart (Mon, 27 Mar 2017 20:27:52 GMT):
kk

jsmitchell (Mon, 27 Mar 2017 20:29:06 GMT):
@mhart: how are you loading intkey? `intkey workload` or `intkey create_batch; intkey load`

jsmitchell (Mon, 27 Mar 2017 20:29:06 GMT):
@mhart: how are you loading intkey? `intkey workload` or `intkey create_batch; intkey load`?

mhart (Mon, 27 Mar 2017 20:29:17 GMT):
the latter

jsmitchell (Mon, 27 Mar 2017 20:29:24 GMT):
@mhart: also, how many validators are you running?

mhart (Mon, 27 Mar 2017 20:29:27 GMT):
just one

jsmitchell (Mon, 27 Mar 2017 20:29:30 GMT):
ok, cool

jsmitchell (Mon, 27 Mar 2017 20:36:31 GMT):
@cianx: @agunde is going to ping you on this

jsmitchell (Mon, 27 Mar 2017 20:38:27 GMT):
@cianx: is it like midnight there?

cianx (Mon, 27 Mar 2017 20:38:35 GMT):
K, get the dets on how to repro it and I will see what I can do in the am

jsmitchell (Mon, 27 Mar 2017 20:39:11 GMT):
start up a validator and do `./bin/intkey create_batch -c 1000; ./bin/intkey load`

cianx (Mon, 27 Mar 2017 20:39:27 GMT):
Pretty much, good thing I swore off sleep

Dan (Mon, 27 Mar 2017 20:48:01 GMT):
Good thing taco bell is open all night.

rjones (Mon, 27 Mar 2017 20:48:18 GMT):
_ehhhh_

jjason (Mon, 27 Mar 2017 20:48:19 GMT):
Seems like you picked a bad week to stop sniffing glue.

jsmitchell (Mon, 27 Mar 2017 20:48:19 GMT):
Bell Aviv

jjason (Mon, 27 Mar 2017 20:48:30 GMT):
:airplan:

jjason (Mon, 27 Mar 2017 20:48:30 GMT):
:airplane:

rjones (Mon, 27 Mar 2017 20:48:45 GMT):
:woo:

mhart (Mon, 27 Mar 2017 20:58:50 GMT):
hmmm, just reset everything and rebuilt everything and the batches are loading ok now... so I'm not *exactly* sure how to repro

jsmitchell (Mon, 27 Mar 2017 20:59:16 GMT):
yeah, it's not every time

mhart (Mon, 27 Mar 2017 21:02:28 GMT):
I'm assuming loading the same batch of transactions twice is supposed to error? It's not exactly clear what's happening, just a bunch of `ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'961c31a4279c4e33'` messages

mhart (Mon, 27 Mar 2017 21:03:02 GMT):
`intkey load` doesn't error in any way, nor does the validator

jsmitchell (Mon, 27 Mar 2017 21:03:15 GMT):
did you `rm -rf /home/ubuntu/sawtooth/data/*` and `./bin/sawtooth admin genesis`

jsmitchell (Mon, 27 Mar 2017 21:03:25 GMT):
prior to starting validator

jsmitchell (Mon, 27 Mar 2017 21:03:26 GMT):
?

mhart (Mon, 27 Mar 2017 21:03:38 GMT):
yep

jsmitchell (Mon, 27 Mar 2017 21:03:41 GMT):
if you don't do that, it will just sit there on batch submission

jsmitchell (Mon, 27 Mar 2017 21:04:13 GMT):
are you running tp_intkey_python with -vv?

mhart (Mon, 27 Mar 2017 21:04:37 GMT):
yup – I'm talking about submitting the same batch twice right now

jsmitchell (Mon, 27 Mar 2017 21:04:55 GMT):
they will be dropped at the border as duplicates

mhart (Mon, 27 Mar 2017 21:05:04 GMT):
right, no messages indicating that though

jsmitchell (Mon, 27 Mar 2017 21:05:22 GMT):
are you running the validator with -vv?

mhart (Mon, 27 Mar 2017 21:05:26 GMT):
yup

mhart (Mon, 27 Mar 2017 21:05:36 GMT):

Message Attachments

jsmitchell (Mon, 27 Mar 2017 21:05:48 GMT):
if they come in over the network interface, there is definitely a dup message

jsmitchell (Mon, 27 Mar 2017 21:06:15 GMT):
@agunde: ^ re: submitting batches over the interconnect - a good reason to refactor the intkey stuff to the rest api

mhart (Mon, 27 Mar 2017 21:07:13 GMT):
interesting – if I generate a new batch and submit I seem to get a mix of success and `Transaction rejected due missing dependency`

mhart (Mon, 27 Mar 2017 21:07:29 GMT):
so some work, some don't (I think that's what's happening)

mhart (Mon, 27 Mar 2017 21:08:02 GMT):
so maybe that's one way to reproduce... not sure

jsmitchell (Mon, 27 Mar 2017 21:08:16 GMT):
we'll check into it

mhart (Mon, 27 Mar 2017 21:08:46 GMT):
cool – but basically, if I see it again, just reset things and try again?

jsmitchell (Mon, 27 Mar 2017 21:09:09 GMT):
yeah, i suspect you'll see it somewhat frequently :)

mhart (Mon, 27 Mar 2017 21:09:48 GMT):
are there any specific requirements for what a transaction handler must do – or can it just do nothing (ie, log and return) and that will be considered a success?

jsmitchell (Mon, 27 Mar 2017 21:10:53 GMT):
@boydjohnson: interesting question. What happens if a transaction processor doesn't interact with state on a context?

boydjohnson (Mon, 27 Mar 2017 21:12:33 GMT):
The handler.apply doesn't have to do anything, the sdk will interpret the lack of InvalidTransactionError, and InternalError as success.

agunde (Mon, 27 Mar 2017 21:13:55 GMT):
@jsmitchell I can make a story to refactor intkey to use the rest api

mhart (Mon, 27 Mar 2017 21:14:22 GMT):
@boydjohnson ok, thanks

jjason (Mon, 27 Mar 2017 21:29:06 GMT):
Looking to unblock @drozd . Need 2 reviewers for https://github.com/hyperledger/sawtooth-core/pull/265

drozd (Mon, 27 Mar 2017 21:34:04 GMT):
@jjason I don't think I should be part of the approval process, but it seems to pass the test now

jjason (Mon, 27 Mar 2017 21:36:42 GMT):
@drozd No worries.

mhart (Mon, 27 Mar 2017 21:36:43 GMT):
@boydjohnson @jsmitchell is there something special about the intkey batches that require a response? If I change the handler to just return (not modify any state), then it only seems to process one transaction – all the rest don't seem to make it

mhart (Mon, 27 Mar 2017 21:37:07 GMT):
the validator just fills up with `unsatisfied dependency` messages

mhart (Mon, 27 Mar 2017 21:39:00 GMT):
is it maybe better to stick with the REST API for submitting transactions (like in the XO example) instead of the intkey batch examples?

boydjohnson (Mon, 27 Mar 2017 21:39:25 GMT):
I would wonder if there is a bug in the context manager when committing a context that doesn't update state, and so not only doesn't the merkle root get changed, but it may get set to something odd.

jsmitchell (Mon, 27 Mar 2017 21:39:41 GMT):
@mhart: definitely use the rest api for submission

mhart (Mon, 27 Mar 2017 21:39:56 GMT):
@jsmitchell ok, will do

jsmitchell (Mon, 27 Mar 2017 21:40:06 GMT):
the intkey method predates the existence of the rest api

mhart (Mon, 27 Mar 2017 22:00:58 GMT):
Hmmm...

mhart (Mon, 27 Mar 2017 22:01:16 GMT):
Struggling to get `xo` to work

mhart (Mon, 27 Mar 2017 22:01:22 GMT):

Message Attachments

mhart (Mon, 27 Mar 2017 22:01:51 GMT):
the `create` seems to have worked – but the `show` can't find it...?

mhart (Mon, 27 Mar 2017 22:02:14 GMT):
validator says `Unable to find entry at address 5b7349c2f7ee46bc96272...`

jsmitchell (Mon, 27 Mar 2017 22:04:19 GMT):
you started ./bin/tp_xo_python, right?

mhart (Mon, 27 Mar 2017 22:04:55 GMT):
yup – but no logs there so far

mhart (Mon, 27 Mar 2017 22:05:07 GMT):
started with `tp_xo_python -vv`

jsmitchell (Mon, 27 Mar 2017 22:05:11 GMT):
hm. i just tried your steps and it worked for me

jsmitchell (Mon, 27 Mar 2017 22:05:24 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/tp_xo_python +-------------------------------+ + Player 0341ae created a game. + +-------------------------------+ +-------------------------------+ + Player 0341ae created a game. + +-------------------------------+```

mhart (Mon, 27 Mar 2017 22:05:48 GMT):
ok, will restart the transaction processor

mhart (Mon, 27 Mar 2017 22:06:47 GMT):
same thing – here are the validator logs...

mhart (Mon, 27 Mar 2017 22:07:08 GMT):

Message Attachments

mhart (Mon, 27 Mar 2017 22:07:50 GMT):

Message Attachments

jsmitchell (Mon, 27 Mar 2017 22:08:21 GMT):
the dispatch to the transaction processor is not occurring

mhart (Mon, 27 Mar 2017 22:09:33 GMT):
maybe need to reset data again? just weird that there's no errors anywhere

jsmitchell (Mon, 27 Mar 2017 22:10:07 GMT):
yes, every time you restart the validator, you need to delete the data dir and redo `sawtooth admin genesis`

mhart (Mon, 27 Mar 2017 22:10:17 GMT):
yup

mhart (Mon, 27 Mar 2017 22:10:46 GMT):
why is that? surely that's not intended in production?

jsmitchell (Mon, 27 Mar 2017 22:11:14 GMT):
no, we just haven't focused on the restart case yet

mhart (Mon, 27 Mar 2017 22:11:56 GMT):
ok, worked after validator/data reset

mhart (Mon, 27 Mar 2017 22:14:47 GMT):
so – question – if the `create` wasn't actually working, how come there was no error anywhere? is it because the xo client doesn't handle errors at the moment?

jsmitchell (Mon, 27 Mar 2017 22:14:57 GMT):
it's not an error

mhart (Mon, 27 Mar 2017 22:15:02 GMT):
or is there some other step you need to do?

jsmitchell (Mon, 27 Mar 2017 22:15:13 GMT):
the validator accepted your batch for processing

jsmitchell (Mon, 27 Mar 2017 22:15:19 GMT):
and it is enqueued

jsmitchell (Mon, 27 Mar 2017 22:15:48 GMT):
it's just not processing because it's in an inconsistent state based on loading files off of disk

jsmitchell (Mon, 27 Mar 2017 22:15:51 GMT):
(which is a bug)

mhart (Mon, 27 Mar 2017 22:15:57 GMT):
oh – you need to poll the batch state to see if it succeeded or not?

jsmitchell (Mon, 27 Mar 2017 22:16:01 GMT):
yes

mhart (Mon, 27 Mar 2017 22:16:05 GMT):
huh, ok

jsmitchell (Mon, 27 Mar 2017 22:16:12 GMT):
and 'succeded' means very different things in blockchain land

jsmitchell (Mon, 27 Mar 2017 22:16:12 GMT):
and 'succeeded' means very different things in blockchain land

jsmitchell (Mon, 27 Mar 2017 22:16:44 GMT):
for example, it could be put on a block and committed to state, and then _reversed_ by a fork

mhart (Mon, 27 Mar 2017 22:17:13 GMT):
I have a feeling that's something many ppl will want to do (wait until the batch was actually processed) – are there plans to add support to the APIs for that?

jsmitchell (Mon, 27 Mar 2017 22:17:24 GMT):
finality of transactions is a matter of a confidence interval based on the depth in the chain

jsmitchell (Mon, 27 Mar 2017 22:17:32 GMT):
yes, that's in there. It's called wait for commit

mhart (Mon, 27 Mar 2017 22:17:36 GMT):
ok

jsmitchell (Mon, 27 Mar 2017 22:18:21 GMT):
https://github.com/hyperledger/sawtooth-core/pull/252

mhart (Mon, 27 Mar 2017 22:19:21 GMT):
gotcha – also noticed it just now in the REST API – I guess xo just doesn't use it (yet)

jsmitchell (Mon, 27 Mar 2017 22:19:35 GMT):
look at the date on that PR. :)

mhart (Mon, 27 Mar 2017 22:21:12 GMT):
I'm not sure xo uses that? or does it?

mhart (Mon, 27 Mar 2017 22:21:20 GMT):
i thought it was just making raw HTTP calls

jsmitchell (Mon, 27 Mar 2017 22:21:20 GMT):
no, the feature was just added today

jsmitchell (Mon, 27 Mar 2017 22:21:31 GMT):
xo doesn't do it yet

mhart (Mon, 27 Mar 2017 22:21:33 GMT):
i mean, it doesn't use the rest client

jsmitchell (Mon, 27 Mar 2017 22:22:04 GMT):
no, probably not. @zac and @adamludvik can provide more context

jsmitchell (Mon, 27 Mar 2017 22:22:37 GMT):
gotta run

mhart (Mon, 27 Mar 2017 22:22:59 GMT):
cool – I think I've got enough to go on now – thanks!

zac (Tue, 28 Mar 2017 01:20:49 GMT):
I believe XO uses the REST API, but I don't think it uses the `wait` parameter yet

mhart (Tue, 28 Mar 2017 04:12:34 GMT):
@zac right, it uses the REST API, but it doesn't use the rest client that james was referring to in that PR

zac (Tue, 28 Mar 2017 13:57:51 GMT):
Ah sure. For the record, I would consider the rest client to be an internal tool, mostly just for the CLI, though I think a couple of tests borrow it. It might be useful to build some sort of rest client sdk at some point, but the existing client is not functionally complete, well documented, or well tested. It just does what the CLI needs and no more.

zac (Tue, 28 Mar 2017 13:58:39 GMT):
I would recommend using whatever HTTP/JSON libraries you prefer and interact with the REST API directly.

adamludvik (Tue, 28 Mar 2017 14:04:17 GMT):
@mhart I wrote the xo client and it predates the existence of the wait parameter and the RestClient, so it does not utilize either. I would second @zac's suggestion that the REST API be used directly, as he has put a lot of work into defining and documenting that interface, whereas the RestClient hasn't been clearly defined or documented.

mhart (Tue, 28 Mar 2017 14:06:30 GMT):
@zac @adamludvik yeah, thanks all – have actually gotten a REST client working in Node.js talking XO transactions, so all good so far 👍

zac (Tue, 28 Mar 2017 14:06:44 GMT):
Excellent

agunde (Tue, 28 Mar 2017 14:07:15 GMT):
@mhart Currently working on a fix for the dependency issue you were seeing yesterday. Hopefully will have a fix up later today.

jsmitchell (Tue, 28 Mar 2017 14:07:32 GMT):
@mhart: cool! if you want to contribute that at some point to core, go ahead and push a PR.

mhart (Tue, 28 Mar 2017 14:08:10 GMT):
the docs are pretty unclear on the signing stuff to be honest (ie, which fields expect bytes, which fields expect hex strings) – but using-the-source-luke got me most of the way

jsmitchell (Tue, 28 Mar 2017 14:08:37 GMT):
yeah, we have some cleanup and some docs to improve for sure

mhart (Tue, 28 Mar 2017 14:09:53 GMT):
@jsmitchell to be honest, having the signing stuff written in a number of langs will probably be better than documentation anyway – even for newer lang implementations – always hard to exactly describe those requirements without some sort of code examples

jsmitchell (Tue, 28 Mar 2017 14:10:26 GMT):
A PR went in yesterday which simplified the singing interface

mhart (Tue, 28 Mar 2017 14:10:29 GMT):
Once I've gotten our custom transaction family up and running, will be happy to commit some Node.js REST client code back – wherever it fits

jsmitchell (Tue, 28 Mar 2017 14:10:38 GMT):
(got rid of some of the encode/decode stuff)

jsmitchell (Tue, 28 Mar 2017 14:10:47 GMT):
https://github.com/hyperledger/sawtooth-core/pull/261

zac (Tue, 28 Mar 2017 14:13:02 GMT):
Sounds like something for `/sdk`

zac (Tue, 28 Mar 2017 14:13:35 GMT):
Is it an extension of the exist JavaScript SDK?

zac (Tue, 28 Mar 2017 14:13:35 GMT):
Is it an extension of the existing JavaScript SDK?

mhart (Tue, 28 Mar 2017 14:13:43 GMT):
oh cool – as long as the basic standards haven't changed (wif for key storage, secp256k1 for signing, public keys and signatures specified as hex in transactions), I think the Node.js code I've written shouldn't change

mhart (Tue, 28 Mar 2017 14:14:05 GMT):
@zac it reaches in to the existing JS SDK to get the protobuf descriptors

mhart (Tue, 28 Mar 2017 14:14:19 GMT):
As in, I have to do `require('sawtooth-sdk/protobuf/protobuf_bundle.json')`

mhart (Tue, 28 Mar 2017 14:14:27 GMT):
Because it's not currently exported

mhart (Tue, 28 Mar 2017 14:14:34 GMT):
Aside from that, doesn't use anything from the SDK

mhart (Tue, 28 Mar 2017 14:15:06 GMT):
Because the SDK is all around transaction handlers

mhart (Tue, 28 Mar 2017 14:15:08 GMT):
so far

jsmitchell (Tue, 28 Mar 2017 14:15:23 GMT):
@mhart: yeah, that stuff should all be consistent (signing formats)

zac (Tue, 28 Mar 2017 14:15:29 GMT):
Ah yes, that's right

zac (Tue, 28 Mar 2017 14:15:48 GMT):
We do have a task for adding client functionality to it actually

zac (Tue, 28 Mar 2017 14:16:11 GMT):
But the team is putting most of their time into core functionality at the moment

mhart (Tue, 28 Mar 2017 14:16:12 GMT):
I use https://www.npmjs.com/package/secp256k1 and https://www.npmjs.com/package/wif for the various unpacking/signing requirements

zac (Tue, 28 Mar 2017 14:16:44 GMT):
So a PR with those improvements could definitely be helpful

mhart (Tue, 28 Mar 2017 14:17:02 GMT):
Once the right incantations were made with the signing, it was very straightforward – ain't that always the way? :-)

mhart (Tue, 28 Mar 2017 14:18:23 GMT):
Took me many hours to get the signing right though – this code in particular had me scratching my head – trying to figure out exactly what the "compact" serialization was: https://github.com/hyperledger/sawtooth-core/blob/master/signing/sawtooth_signing/secp256k1_signer.py#L136-L137

mhart (Tue, 28 Mar 2017 14:19:52 GMT):
Also took me a long time to figure out that "signing a message" was actually really "signing the sha256 of the message"

mhart (Tue, 28 Mar 2017 14:20:58 GMT):
Because that's not dealt with by the `secp256k1` npm package – it kept complaining that the data being signed wasn't 32 bytes... anyway, got there in the end

jsmitchell (Tue, 28 Mar 2017 14:21:52 GMT):
@pschwarz: ^ good bits for a js signing interface

mhart (Tue, 28 Mar 2017 14:23:23 GMT):
It's as simple as: ```function sign(msg, key) { const msg32 = crypto.createHash('sha256').update(msg).digest() return secp256k1.sign(msg32, key).signature.toString('hex') } ```

mhart (Tue, 28 Mar 2017 14:23:23 GMT):
It's as simple as: ```function sign(msg, key) { const msg32 = crypto.createHash('sha256').update(msg).digest() return secp256k1.sign(msg32, key).signature.toString('hex') } ```

mhart (Tue, 28 Mar 2017 14:23:23 GMT):
It's as simple as:```function sign(msg, key) { const msg32 = crypto.createHash('sha256').update(msg).digest() return secp256k1.sign(msg32, key).signature.toString('hex') } ```

mhart (Tue, 28 Mar 2017 14:23:23 GMT):
It's as simple as: ``` function sign(msg, key) { const msg32 = crypto.createHash('sha256').update(msg).digest() return secp256k1.sign(msg32, key).signature.toString('hex') } ```

jsmitchell (Tue, 28 Mar 2017 14:23:26 GMT):
looks like that compact serialization is 64 bytes (32 of r, 32 of s)

mhart (Tue, 28 Mar 2017 14:24:19 GMT):
Just took me ages to get there :-)

jsmitchell (Tue, 28 Mar 2017 14:25:55 GMT):
if you could jot down notes on things that are confusing or missing in the code or the docs as you go, that would be very helpful feedback for us

mhart (Tue, 28 Mar 2017 14:28:20 GMT):
I'm still a little unsure about the serialization to be honest – the docs mentioned DER format, but when I used the DER serializer from the Node module it came out differently from what the python code was giving me – it ended up just being that the raw signature in hex worked, so that's what I left it as – but I'm unsure as to whether that will fail in certain cases... has matched the python signatures so far, so we'll see

jsmitchell (Tue, 28 Mar 2017 14:29:18 GMT):
@Dan: ^

mhart (Tue, 28 Mar 2017 14:32:15 GMT):
From the npm module docs, it seems that they follow https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki for the DER serialization

mhart (Tue, 28 Mar 2017 14:34:53 GMT):
(it's this document that mentions DER serialization btw: http://intelledger.github.io/0.8/sawtooth_developers_guide/signing_transactions.html )

Dan (Tue, 28 Mar 2017 14:35:59 GMT):
Thanks @mhart I will take a look.

jsmitchell (Tue, 28 Mar 2017 14:36:21 GMT):
@mhart: another area we've had feedback on confusion is the state tree key encoding. It's 35 bytes represented as a hexdigest, where the first three bytes are the namespace for the transaction family and the remaining 32 bytes are transaction family specific encoding.

jsmitchell (Tue, 28 Mar 2017 14:37:12 GMT):
the examples right now typically generate a fixed 6 hex character namespace prefix and append 64 characters of hash of some sensible domain specific natural key structure

mhart (Tue, 28 Mar 2017 14:37:15 GMT):
@jsmitchell you're talking about the `address` scheme?

jsmitchell (Tue, 28 Mar 2017 14:37:17 GMT):
yeah

mhart (Tue, 28 Mar 2017 14:37:20 GMT):
yeah, I noticed that

mhart (Tue, 28 Mar 2017 14:37:51 GMT):
so it's got a fixed size of 35 bytes?

jsmitchell (Tue, 28 Mar 2017 14:37:57 GMT):
that is the intent

mhart (Tue, 28 Mar 2017 14:37:58 GMT):
or is the size variable?

jsmitchell (Tue, 28 Mar 2017 14:38:03 GMT):
it's not currently enforced

jsmitchell (Tue, 28 Mar 2017 14:38:08 GMT):
but it is the intent

jsmitchell (Tue, 28 Mar 2017 14:38:34 GMT):
right now you can write to non 'leaf' nodes in the tree using partial addresses

jsmitchell (Tue, 28 Mar 2017 14:38:38 GMT):
i would not recommend that

mhart (Tue, 28 Mar 2017 14:39:02 GMT):
ok – so "natural" addresses like `namespace/entityType/entityId` can't really be done – without encoding

mhart (Tue, 28 Mar 2017 14:39:18 GMT):
I mean – not unless you're always within 35 bytes

jsmitchell (Tue, 28 Mar 2017 14:39:27 GMT):
that's a perfect thing to hash[:64]

mhart (Tue, 28 Mar 2017 14:39:36 GMT):
yeah, sort of – ideally you wouldn't have to

mhart (Tue, 28 Mar 2017 14:39:49 GMT):
I'm guessing range queries over addresses isn't a thing

jsmitchell (Tue, 28 Mar 2017 14:39:54 GMT):
not a thing

jsmitchell (Tue, 28 Mar 2017 14:41:00 GMT):
we can enumerate the tree from a given partial address, but if the addresses are unstructured, that doesn't really have any meaning, other than 'everything under a namespace'

jsmitchell (Tue, 28 Mar 2017 14:41:19 GMT):
if you wish, you can come up with another encoding scheme that is meaning preserving under the namespace

jsmitchell (Tue, 28 Mar 2017 14:41:53 GMT):
as long as the addresses you generate are 70 hex characters

mhart (Tue, 28 Mar 2017 14:42:07 GMT):
gotcha

mhart (Tue, 28 Mar 2017 14:42:34 GMT):
hashes always make me nervous when it comes to requiring unique addresses

jsmitchell (Tue, 28 Mar 2017 14:42:44 GMT):
the universe is a big place :)

mhart (Tue, 28 Mar 2017 14:42:48 GMT):
truedat

jsmitchell (Tue, 28 Mar 2017 14:43:02 GMT):
plus, you can deal with collisions in your design if you are a paranoid type

mhart (Tue, 28 Mar 2017 14:44:01 GMT):
I guess a 1 in 1.94266889e84 chance ain't that big

mhart (Tue, 28 Mar 2017 14:44:05 GMT):
:-)

pschwarz (Tue, 28 Mar 2017 14:44:39 GMT):
The settings values are a good, simple example of that: we treat them the way you'd tree hash map collisions - highly, highly unlikely hashmap collisions in this case

mhart (Tue, 28 Mar 2017 14:44:59 GMT):
I guess it's really 1 in 1.15792089e77 within a namespace (256 bits)

mhart (Tue, 28 Mar 2017 14:46:11 GMT):
i'm definitely nervous about namespace clashes – I would have thought it's best *not* to hash the namespace, but to declare it explicitly

jsmitchell (Tue, 28 Mar 2017 14:46:47 GMT):
yeah, we have more thinking to do on that topic

jsmitchell (Tue, 28 Mar 2017 14:47:14 GMT):
potentially will do something like a namespace registry for an instance of the blockchain

mhart (Tue, 28 Mar 2017 14:47:27 GMT):
right

mhart (Tue, 28 Mar 2017 14:47:30 GMT):
otherwise it's opaque – and you can't see anywhere whether you might have a collision

jsmitchell (Tue, 28 Mar 2017 14:47:45 GMT):
and then also have configurable 'write permissions' which determine which transaction families can write to that namespace

jsmitchell (Tue, 28 Mar 2017 14:47:59 GMT):
(obvs. everything can read from everywhere)

jsmitchell (Tue, 28 Mar 2017 14:48:41 GMT):
but the data stored at a location is domain specific, so we need to think about a sensible abstraction for transaction families to share that interface/implementation

jsmitchell (Tue, 28 Mar 2017 14:49:45 GMT):
@mhart: it would also be nice to avoid having clients query the running instance to be able to construct transactions

jsmitchell (Tue, 28 Mar 2017 14:50:12 GMT):
which is a current benefit to the lazy approach

mhart (Tue, 28 Mar 2017 14:57:12 GMT):
right, I wouldn't necessarily think you'd need that – I think you could keep it "lazy", just instead of creating an opaque hash, make the 3 bytes explicit (eg, `'xo '), so that even those browsing code could have a good guess of whether the namespaces might clash (and then perhaps it's only on transaction submission that the write permissions, etc are checked)

mhart (Tue, 28 Mar 2017 14:57:12 GMT):
right, I wouldn't necessarily think you'd need that – I think you could keep it "lazy", just instead of creating an opaque hash, make the 3 bytes explicit (eg, `'xo '`), so that even those browsing code could have a good guess of whether the namespaces might clash (and then perhaps it's only on transaction submission that the write permissions, etc are checked)

mhart (Tue, 28 Mar 2017 15:01:41 GMT):
guess it's kinda situation specific – and depends on how much ownership of the namespaces you have in your cluster

mhart (Tue, 28 Mar 2017 15:03:18 GMT):
anyway, not too important at this stage for the proof-of-concept stuff

mhart (Tue, 28 Mar 2017 15:03:31 GMT):
can someone explain how dependencies work across transaction batches?

jsmitchell (Tue, 28 Mar 2017 15:04:03 GMT):
http://intelledger.github.io/0.8/architecture/transactions_and_batches.html

mhart (Tue, 28 Mar 2017 15:04:13 GMT):
as in – if I specify a dependency on another transaction in another batch – how does the validator schedule them?

mhart (Tue, 28 Mar 2017 15:04:20 GMT):
or is the idea that it just rejects them

mhart (Tue, 28 Mar 2017 15:04:24 GMT):
and you resubmit

jsmitchell (Tue, 28 Mar 2017 15:04:44 GMT):
there is a component called the Completer which will not submit a batch to the publisher until its dependencies have been satisfied

mhart (Tue, 28 Mar 2017 15:04:54 GMT):
so it waits?

jsmitchell (Tue, 28 Mar 2017 15:04:59 GMT):
it will request the dependent batch from the network

jsmitchell (Tue, 28 Mar 2017 15:05:07 GMT):
yes, it waits

jsmitchell (Tue, 28 Mar 2017 15:05:31 GMT):
if the dependent batch doesn't arrive, at some point the orphaned batch will be dropped

mhart (Tue, 28 Mar 2017 15:05:40 GMT):
ok

mhart (Tue, 28 Mar 2017 15:07:15 GMT):
btw, do transaction IDs have to be the header signature, or is that just a convenient scheme?

jsmitchell (Tue, 28 Mar 2017 15:07:29 GMT):
they have to be the header signature

mhart (Tue, 28 Mar 2017 15:08:04 GMT):
right, yeah, sorry, just read the docs `List of transaction.header_signatures`

Dan (Tue, 28 Mar 2017 15:11:54 GMT):
Is cbor just an example for serializing the transaction body or is that mandatory.

Dan (Tue, 28 Mar 2017 15:11:54 GMT):
Is cbor just an example for serializing the transaction ~body~ payload or is that mandatory.

jsmitchell (Tue, 28 Mar 2017 15:12:15 GMT):
@Dan: the transaction payload?

jsmitchell (Tue, 28 Mar 2017 15:12:20 GMT):
it is opaque to the core

jsmitchell (Tue, 28 Mar 2017 15:12:31 GMT):
it's an implementation decision by the transaction family developer

pschwarz (Tue, 28 Mar 2017 15:13:07 GMT):
e.g the sawtooth_config transactions use protobuf for the transaction bodies

pschwarz (Tue, 28 Mar 2017 15:13:07 GMT):
e.g the sawtooth_config transactions use protobuf for the transaction ~bodies~ payloads.

jsmitchell (Tue, 28 Mar 2017 15:13:14 GMT):
payloads

pschwarz (Tue, 28 Mar 2017 15:13:27 GMT):
err..yes, that

Dan (Tue, 28 Mar 2017 15:13:32 GMT):
yea sorry payload

mhart (Tue, 28 Mar 2017 15:30:59 GMT):
@Dan for example, XO uses utf8 csv for its encoding instead of cbor

Dan (Tue, 28 Mar 2017 15:32:03 GMT):
cool. I was taking a look at the signing docs you pointed out. cbor read like a requirement, so making some notes about what needs updating there. thanks for pointing this stuff out. it's really timely feedback.

mhart (Tue, 28 Mar 2017 15:32:21 GMT):
yeah, i thought the same initially 👍

Dan (Tue, 28 Mar 2017 15:34:18 GMT):
on the DER encoding were you making a separate call to a DER encoder method after getting the signature?

mhart (Tue, 28 Mar 2017 15:34:39 GMT):
yeah, I was

mhart (Tue, 28 Mar 2017 15:34:47 GMT):
So, looking into the code behind the npm module

mhart (Tue, 28 Mar 2017 15:35:06 GMT):
I think they're doing the compact serialization by default – just on the normal exposed `sign` method: https://github.com/cryptocoinjs/secp256k1-node/blob/master/src/ecdsa.cc#L76

mhart (Tue, 28 Mar 2017 15:35:31 GMT):
Which is why, when I convert that to hex, it matches up with the way the python code is doing things

mhart (Tue, 28 Mar 2017 15:35:46 GMT):
But the "DER" serialization threw me

mhart (Tue, 28 Mar 2017 15:35:55 GMT):
I thought I had to do something extra with it

Dan (Tue, 28 Mar 2017 15:37:04 GMT):
Got it. Before you figured that out were you putting the result into a DER encoder provided by a different node library?

mhart (Tue, 28 Mar 2017 15:37:14 GMT):
no, same library

mhart (Tue, 28 Mar 2017 15:37:26 GMT):
just wasn't comparing the raw sig to begin with

mhart (Tue, 28 Mar 2017 15:38:28 GMT):
the `signatureExport` method in the node module, uses the native `secp256k1_ecdsa_signature_serialize_der` behind the scenes: https://github.com/cryptocoinjs/secp256k1-node/blob/master/src/signature.cc#L47

mhart (Tue, 28 Mar 2017 15:38:46 GMT):
So – are you sure what you're doing is DER serialization?

Dan (Tue, 28 Mar 2017 15:39:17 GMT):
I need to look at the js code but I think they are both getting an already DER encoded sig from the c library.

mhart (Tue, 28 Mar 2017 15:39:22 GMT):
Because when I used that, it *didn't* work – only the "compact" serialization works

Dan (Tue, 28 Mar 2017 15:40:36 GMT):
yeah there's a couple signature formats and then there's the encoding for what constitutes a number.

Dan (Tue, 28 Mar 2017 15:41:35 GMT):
I had picked 'compact' for consistency with some older code, but I'll take a look again this week and make sure we are making good general purpose decisions there.

mhart (Tue, 28 Mar 2017 15:42:15 GMT):
I think the compact serialization might be different from DER

mhart (Tue, 28 Mar 2017 15:42:30 GMT):
esp based on my reading of https://github.com/ludbb/secp256k1-py#class-secp256k1ecdsa

jsmitchell (Tue, 28 Mar 2017 15:43:12 GMT):
yeah, compact looks like r and s packed together into an array of 64 bytes

mhart (Tue, 28 Mar 2017 15:43:17 GMT):

Message Attachments

mhart (Tue, 28 Mar 2017 15:46:26 GMT):
raises a question I had – who determines whether the signature is good? is it just the validator? or do the transaction handlers do it too?

mhart (Tue, 28 Mar 2017 15:46:38 GMT):
signature(s)

Dan (Tue, 28 Mar 2017 15:46:53 GMT):
thanks I'll take a look. My recollection is DER just prescribes what constitutes different number formats. It's not specific to ecdsa. but I will take a look later this week and make sure we are clean there.

jsmitchell (Tue, 28 Mar 2017 15:47:05 GMT):
there is a signature verification step at ingress into the validator

jsmitchell (Tue, 28 Mar 2017 15:47:17 GMT):
the transaction handlers do not do it

mhart (Tue, 28 Mar 2017 15:47:25 GMT):
ok – so the signature scheme, encoding, etc is essentially bound to the sawtooth lake version?

jsmitchell (Tue, 28 Mar 2017 15:48:03 GMT):
yep, although obviously we'll want that to be stable long term

mhart (Tue, 28 Mar 2017 15:48:21 GMT):
ie, "sawtooth v0.8 uses secp256k1 ECDSA compact"

mhart (Tue, 28 Mar 2017 15:48:28 GMT):
etc

Dan (Tue, 28 Mar 2017 15:50:59 GMT):
Yep. We need to be clear on external interface expectations. Signature format is <> and public key format is <> (for signature verification). Private key storage format is up to the user as I don't think there's a use case right now for passing private keys around.

mhart (Tue, 28 Mar 2017 15:52:21 GMT):
Ah right, that's a good point – so the transaction handlers are responsible for checking the key signing?

mhart (Tue, 28 Mar 2017 15:54:15 GMT):
wait, that doesn't make any asense

mhart (Tue, 28 Mar 2017 15:54:15 GMT):
wait, that doesn't make any sense

mhart (Tue, 28 Mar 2017 15:54:22 GMT):
forget that question :-)

Dan (Tue, 28 Mar 2017 15:55:39 GMT):
:)

mhart (Tue, 28 Mar 2017 16:00:12 GMT):
Question around the `inputs`/`outputs` fields – they're a control mechanism? So the transaction handler can't read/write to any addresses except those specified?

mhart (Tue, 28 Mar 2017 16:00:12 GMT):
Question around the `inputs` / `outputs` fields – they're a control mechanism? So the transaction handler can't read/write to any addresses except those specified?

jsmitchell (Tue, 28 Mar 2017 16:01:53 GMT):
Yes

mhart (Tue, 28 Mar 2017 16:01:55 GMT):
if so, that's kinda interesting – makes a very tight coupling between the transaction body and transaction handler

jsmitchell (Tue, 28 Mar 2017 16:02:54 GMT):
It allows us to do parallel execution of transactions via isolation of state changes

mhart (Tue, 28 Mar 2017 16:02:56 GMT):
ie, you have to know ahead of time all the things the transaction may want to look up

mhart (Tue, 28 Mar 2017 16:02:56 GMT):
ie, you have to know ahead of time all the things the transaction handler may want to look up

jsmitchell (Tue, 28 Mar 2017 16:03:05 GMT):
You can specify wildcards

mhart (Tue, 28 Mar 2017 16:03:09 GMT):
ah

mhart (Tue, 28 Mar 2017 16:03:15 GMT):
cool cool

jsmitchell (Tue, 28 Mar 2017 16:03:24 GMT):
That just means we get less parallelism

mhart (Tue, 28 Mar 2017 16:03:52 GMT):
gotcha – ok, didn't realize the wildcard thing – that's a bit more flexible

jsmitchell (Tue, 28 Mar 2017 16:04:14 GMT):
Yeah, you can just specify your namespace in a worst case scenario

mhart (Tue, 28 Mar 2017 16:04:57 GMT):
right – good to know – ideally you don't do that, but if you have to...

mhart (Tue, 28 Mar 2017 16:14:02 GMT):
Just a nit on the XO transaction handler – a number of the exception details are swallowed, eg: https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/processor/handler.py#L53-L57 – this makes it hard to figure out what the actual problem might be (in my case I had to convert to a utf8 buffer instead of using a utf8 string in my Node.js client code)

mhart (Tue, 28 Mar 2017 16:14:57 GMT):
the underlying exception was a utf8 conversion exception, but it was just being rethrown as a generic "Invalid payload serialization" exception

mhart (Tue, 28 Mar 2017 16:16:07 GMT):
so including details of the original caught exception would be a bit more useful

agunde (Tue, 28 Mar 2017 16:25:45 GMT):
@mhart I just merged a fix that should resolve that dropping batches that should have satisfied dependencies issue you were seeing yesterday

mhart (Tue, 28 Mar 2017 16:26:20 GMT):
@agunde oh cool, thanks! will give the intkey batches another shot

mhart (Tue, 28 Mar 2017 16:33:38 GMT):
@agunde seems to be working much better so far – all batches processing successfully

agunde (Tue, 28 Mar 2017 16:34:02 GMT):
Sweet! Thanks for testing again :)

mhart (Tue, 28 Mar 2017 16:35:42 GMT):
Seems to be taking a while though...

mhart (Tue, 28 Mar 2017 16:36:37 GMT):
Can't tell if there's some sort of infinite loop or not – it seems to be processing a hell of a lot of transactions, but I think there are only 1000 generated by `intkey create_batch` aren't there?

agunde (Tue, 28 Mar 2017 16:37:45 GMT):
1000 batches with up to 20 transactions each

mhart (Tue, 28 Mar 2017 16:37:45 GMT):
Unless... does `intkey create_batch` append, or rewrite batches.intkey?

mhart (Tue, 28 Mar 2017 16:37:54 GMT):
if it appends... then that might explain it

agunde (Tue, 28 Mar 2017 16:38:08 GMT):
It should rewrite

mhart (Tue, 28 Mar 2017 16:38:20 GMT):
ok – ah, so 20k transactions, got it

agunde (Tue, 28 Mar 2017 16:39:23 GMT):
The actual number of transaction is randomly chosen between 1 and 20 so yes up to 20k transactions

mhart (Tue, 28 Mar 2017 16:39:43 GMT):
Ah, done

agunde (Tue, 28 Mar 2017 16:39:49 GMT):
Also currently we do not have a limit on the number of batches in a block so most of those will end up in one block

mhart (Tue, 28 Mar 2017 16:42:33 GMT):
Ok – so here's a question – if I change the intkey transaction handler to just log and return, and then I load the batches – it processes the very first transaction, but then nothing after that (ie, doesn't look like the validator sends anymore to the transaction handler)

mhart (Tue, 28 Mar 2017 16:43:58 GMT):

Message Attachments

mhart (Tue, 28 Mar 2017 16:44:27 GMT):
this is after resetting the data, restarting everything, etc

mhart (Tue, 28 Mar 2017 16:47:01 GMT):

Message Attachments

mhart (Tue, 28 Mar 2017 16:47:36 GMT):

Message Attachments

mhart (Tue, 28 Mar 2017 16:48:11 GMT):
so... is the validator (or something) expecting the transaction handler to modify the state in some way?

mhart (Tue, 28 Mar 2017 16:54:12 GMT):
Just tried again – this time I get a bunch of `unsatisfied dependency` logs in the validator – still just the one transaction log from the transaction handler though

jsmitchell (Tue, 28 Mar 2017 17:31:05 GMT):
try setting some state

jsmitchell (Tue, 28 Mar 2017 17:31:25 GMT):
i've never tried a no-op handler before

mhart (Tue, 28 Mar 2017 17:35:18 GMT):
Confirmed

mhart (Tue, 28 Mar 2017 17:35:35 GMT):
If I call `state.set` – even with an invalid address

mhart (Tue, 28 Mar 2017 17:35:38 GMT):
It works

jsmitchell (Tue, 28 Mar 2017 17:35:50 GMT):
@boydjohnson: ^ can you create a defect story for this?

mhart (Tue, 28 Mar 2017 17:35:53 GMT):

Message Attachments

mhart (Tue, 28 Mar 2017 17:36:22 GMT):
I mean – it errors when trying to set the state – but all the transactions continue to process

boydjohnson (Tue, 28 Mar 2017 17:36:30 GMT):
yeah, I'll do that.

pschwarz (Tue, 28 Mar 2017 17:36:50 GMT):
Weird

jjason (Tue, 28 Mar 2017 20:59:51 GMT):
Anyone else seen issues when a consensus module returns `False` from its `initialize_block()` method? I am seeing the publisher still coming back calling `check_publish_block()` on a failed block initialization.

jjason (Tue, 28 Mar 2017 21:00:04 GMT):
[20:57:28.232 INFO chain] Chain controller initialized with chain head: f6044138(0, S:30ebab89, P:00000000) [20:57:28.232 INFO publisher] Now building on top of block: f6044138(0, S:30ebab89, P:00000000) [20:57:28.556 DEBUG consensus_state_store] Create consensus store: /home/ubuntu/sawtooth/data/poet_consensus_state.lmdb [20:57:28.557 INFO poet_enclave_factory] Load PoET enclave module: sawtooth_poet_simulator.poet_enclave_simulator.poet_enclave_simulator [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.target_wait_time: 20.000000 [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.initial_wait_time: 3000.000000 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.certificate_sample_length: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.fixed_duration_blocks: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.minimum_wait_time: 1.000000 [20:57:28.966 INFO poet_block_publisher] Register Validator Name=validator-b86489a8, ID=0321fd18...b86489a8, PoET public key=03b32b2b...6e7b16d7 [20:57:28.967 DEBUG poet_block_publisher] We cannot initialize the block because we need to publish PoET signup information [20:57:28.967 DEBUG publisher] Consensus not ready to build candidate block. [20:57:28.970 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'454717bdf4a8431f' [20:57:28.974 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 210 bytes [20:57:28.975 DEBUG tp_state_handlers] GET: [('6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c', None)] [20:57:28.977 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'454717bdf4a8431f' [20:57:28.979 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 353 bytes [20:57:28.980 DEBUG tp_state_handlers] SET: ['6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c'] [20:57:28.981 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.985 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 2172 bytes [20:57:28.988 DEBUG tp_state_handlers] SET: ['6a4372f843d7d846ae7528591d0bb0e3f74b68a141df4267ae5f6ee653d9380993713a'] [20:57:28.989 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.993 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 69 bytes [20:57:28.994 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.024252891540527344 [20:57:29.071 CRITICAL publisher] on_check_publish_block exception. [20:57:29.074 ERROR publisher] 'NoneType' object has no attribute 'has_expired' Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 419, in on_check_publish_block self._consensus.check_publish_block(self. File "/project/sawtooth-core/consensus/poet/core/sawtooth_poet/poet_consensus/poet_block_publisher.py", line 338, in check_publish_block return self._wait_timer.has_expired(now=time.time()) AttributeError: 'NoneType' object has no attribute 'has_expired'

jjason (Tue, 28 Mar 2017 21:00:04 GMT):
[20:57:28.232 INFO chain] Chain controller initialized with chain head: f6044138(0, S:30ebab89, P:00000000) [20:57:28.232 INFO publisher] Now building on top of block: f6044138(0, S:30ebab89, P:00000000) [20:57:28.556 DEBUG consensus_state_store] Create consensus store: /home/ubuntu/sawtooth/data/poet_consensus_state.lmdb [20:57:28.557 INFO poet_enclave_factory] Load PoET enclave module: sawtooth_poet_simulator.poet_enclave_simulator.poet_enclave_simulator [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.target_wait_time: 20.000000 [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.initial_wait_time: 3000.000000 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.certificate_sample_length: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.fixed_duration_blocks: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.minimum_wait_time: 1.000000 [20:57:28.966 INFO poet_block_publisher] Register Validator Name=validator-b86489a8, ID=0321fd18...b86489a8, PoET public key=03b32b2b...6e7b16d7 [20:57:28.967 DEBUG poet_block_publisher] We cannot initialize the block because we need to publish PoET signup information `[20:57:28.967 DEBUG publisher] Consensus not ready to build candidate block.` [20:57:28.970 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'454717bdf4a8431f' [20:57:28.974 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 210 bytes [20:57:28.975 DEBUG tp_state_handlers] GET: [('6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c', None)] [20:57:28.977 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'454717bdf4a8431f' [20:57:28.979 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 353 bytes [20:57:28.980 DEBUG tp_state_handlers] SET: ['6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c'] [20:57:28.981 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.985 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 2172 bytes [20:57:28.988 DEBUG tp_state_handlers] SET: ['6a4372f843d7d846ae7528591d0bb0e3f74b68a141df4267ae5f6ee653d9380993713a'] [20:57:28.989 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.993 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 69 bytes [20:57:28.994 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.024252891540527344 [20:57:29.071 CRITICAL publisher] on_check_publish_block exception. [20:57:29.074 ERROR publisher] 'NoneType' object has no attribute 'has_expired' Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 419, in on_check_publish_block self._consensus.check_publish_block(self. File "/project/sawtooth-core/consensus/poet/core/sawtooth_poet/poet_consensus/poet_block_publisher.py", line 338, in check_publish_block return self._wait_timer.has_expired(now=time.time()) AttributeError: 'NoneType' object has no attribute 'has_expired'

jjason (Tue, 28 Mar 2017 21:00:04 GMT):
[20:57:28.232 INFO chain] Chain controller initialized with chain head: f6044138(0, S:30ebab89, P:00000000) [20:57:28.232 INFO publisher] Now building on top of block: f6044138(0, S:30ebab89, P:00000000) [20:57:28.556 DEBUG consensus_state_store] Create consensus store: /home/ubuntu/sawtooth/data/poet_consensus_state.lmdb [20:57:28.557 INFO poet_enclave_factory] Load PoET enclave module: sawtooth_poet_simulator.poet_enclave_simulator.poet_enclave_simulator [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.target_wait_time: 20.000000 [20:57:28.558 INFO poet_enclave_factory] sawtooth.poet.initial_wait_time: 3000.000000 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.certificate_sample_length: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.fixed_duration_blocks: 50 [20:57:28.559 INFO poet_enclave_factory] sawtooth.poet.minimum_wait_time: 1.000000 [20:57:28.966 INFO poet_block_publisher] Register Validator Name=validator-b86489a8, ID=0321fd18...b86489a8, PoET public key=03b32b2b...6e7b16d7 [20:57:28.967 DEBUG poet_block_publisher] We cannot initialize the block because we need to publish PoET signup information `[20:57:28.967 DEBUG publisher] Consensus not ready to build candidate block.` [20:57:28.970 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'454717bdf4a8431f' [20:57:28.974 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 210 bytes [20:57:28.975 DEBUG tp_state_handlers] GET: [('6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c', None)] [20:57:28.977 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'454717bdf4a8431f' [20:57:28.979 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 353 bytes [20:57:28.980 DEBUG tp_state_handlers] SET: ['6a437247a1c12c0fb03aa6e242e6ce988d1cdc7fcc8c2a62ab3ab1202325d7d677e84c'] [20:57:28.981 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.985 DEBUG interconnect] ServerThread receiving TP_STATE_SET_REQUEST message: 2172 bytes [20:57:28.988 DEBUG tp_state_handlers] SET: ['6a4372f843d7d846ae7528591d0bb0e3f74b68a141df4267ae5f6ee653d9380993713a'] [20:57:28.989 DEBUG interconnect] ServerThread sending TP_STATE_SET_RESPONSE to b'454717bdf4a8431f' [20:57:28.993 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 69 bytes [20:57:28.994 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.024252891540527344 `[20:57:29.071 CRITICAL publisher] on_check_publish_block exception.` [20:57:29.074 ERROR publisher] 'NoneType' object has no attribute 'has_expired' Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 419, in on_check_publish_block self._consensus.check_publish_block(self. File "/project/sawtooth-core/consensus/poet/core/sawtooth_poet/poet_consensus/poet_block_publisher.py", line 338, in check_publish_block return self._wait_timer.has_expired(now=time.time()) AttributeError: 'NoneType' object has no attribute 'has_expired'

jjason (Tue, 28 Mar 2017 21:00:17 GMT):
@cianx @jsmitchell ^^^^^^

jsmitchell (Tue, 28 Mar 2017 21:15:00 GMT):
i haven't seen that myself

jsmitchell (Tue, 28 Mar 2017 21:16:29 GMT):
There appears to be no consequence to that condition ("Consensus not ready...") other than that log message

jjason (Tue, 28 Mar 2017 21:21:50 GMT):
Yeah....I am going to do a quick test to see if it is as simple as returning `None` from `Publisher._build_block()`. Otherwise, I will put a story/defect in JIRA, although it will block using PoET in any network of greater than 1 validator (unless I put a hack in the Poet consensus module to work around this).

jjason (Tue, 28 Mar 2017 21:24:47 GMT):
That is....after I fix what I broke in the PoET genesis tool :(

pschwarz (Tue, 28 Mar 2017 21:26:12 GMT):
It should probably drop the block?

jsmitchell (Tue, 28 Mar 2017 21:27:08 GMT):
it doesn't feel like it should proceed until initialize is True

jsmitchell (Tue, 28 Mar 2017 21:27:33 GMT):
given the need for early binding in some consensus implementations

jjason (Tue, 28 Mar 2017 21:27:54 GMT):
Yep.

jsmitchell (Tue, 28 Mar 2017 21:28:48 GMT):
can initialize_block block until complete?

jjason (Tue, 28 Mar 2017 21:28:51 GMT):
That is the problem I am running into - in the `initialize_block()` I need to create the wait timer, but if the initialization fails, there is no wait timer object, thus the exception in `check_claim_block()` when it tries to check the wait timer object has expired.

jjason (Tue, 28 Mar 2017 21:28:59 GMT):
That seems like bad mojo.

jsmitchell (Tue, 28 Mar 2017 21:29:05 GMT):
it probably is

jjason (Tue, 28 Mar 2017 21:29:29 GMT):
I could do that, but it would block for potentially a while - it has to wait for the validator regsitry entry to be published by another validator.

jjason (Tue, 28 Mar 2017 21:29:29 GMT):
I could do that, but it would block for potentially a while - it has to wait for the validator registry entry to be published by another validator.

jsmitchell (Tue, 28 Mar 2017 21:30:05 GMT):
there is no sense in building until that happens though, right?

jjason (Tue, 28 Mar 2017 21:30:17 GMT):
Yep. And that is one of the checks I make.

jsmitchell (Tue, 28 Mar 2017 21:30:27 GMT):
so, we either poll there or make a blocking call

jjason (Tue, 28 Mar 2017 21:30:32 GMT):
Yep

jjason (Tue, 28 Mar 2017 21:31:06 GMT):
Either that.....or the publisher doesn't bother to try to initialize again until either (1) it gets some more transactions or (2) it gets a block from someone else.

jsmitchell (Tue, 28 Mar 2017 21:33:22 GMT):
you could raise an exception and catch it in on_check_publish_block and return empty

jsmitchell (Tue, 28 Mar 2017 21:34:11 GMT):
looks like returning None would have the same effect, but the exception is clearer imo

jjason (Tue, 28 Mar 2017 21:34:20 GMT):
I did short circuit that to check if the wait timer object was `None` and the prevents the exception, but the publisher doesn't seem to like that much either as I return `False` basically meaning that I am never ready to claim.

jjason (Tue, 28 Mar 2017 21:34:48 GMT):
`None` would be returned internally in `publish.py`, which I think may be the right thing to do.

jjason (Tue, 28 Mar 2017 21:58:36 GMT):
So, returning `None` from `Publisher._build_block()` when `initialize_block()` returns `False` prevents calling `check_claim_block()`. The side effect is that `initialize_block()` gets called ever 10ms :)

jjason (Wed, 29 Mar 2017 01:44:51 GMT):
Had a couple of PRs that I had to rebuild once or twice before it passed the PoET smoke test. I have been noticing the in local testing, I see forks even with just a single validator. I don't know if the test is occasionally hitting this and that causes the test to fail.

jjason (Wed, 29 Mar 2017 01:44:51 GMT):
Had a couple of PRs that I had to rebuild once or twice before it passed the PoET smoke test. I have been noticing that in local testing I see forks even with just a single validator. I don't know if the test is occasionally hitting this and that causes the test to fail.

cianx (Wed, 29 Mar 2017 02:16:28 GMT):
@jjason the intention is for the BlockPublisher._build_block to return None if the consensus.initialize_block returns false. the returns statement is missing in the BlockPublisher. The polling you mention above is intentional, the Publisher is either trying to build a block or publish a block.

cianx (Wed, 29 Mar 2017 02:16:28 GMT):
@jjason the intention is for the BlockPublisher._build_block to return None if the conesnsus.initialize_block returns false. the returns statement is missing in the BlockPublisher. The polling you mention above is intentional, the Publisher is either trying to build a block or publish a block.

cianx (Wed, 29 Mar 2017 02:18:02 GMT):
PR approved :), thanks,

jjason (Wed, 29 Mar 2017 02:22:23 GMT):
@cianx You're welcome

jjason (Wed, 29 Mar 2017 02:22:32 GMT):
Thanks for checking PR

PacoEcotrust (Wed, 29 Mar 2017 09:55:08 GMT):
ubuntu@ubuntu-xenial:/project$ /project/sawtooth-core/bin/build_all [---Building java---] [ Building sawtooth-build-java... ] Cannot connect to the Docker daemon. Is the docker daemon running on this host? Set up version 0.8. Following the manual. Some ideas?

PacoEcotrust (Wed, 29 Mar 2017 09:55:08 GMT):
ubuntu@ubuntu-xenial:/project$ /project/sawtooth-core/bin/build_all [---Building java---] [ Building sawtooth-build-java... ] Cannot connect to the Docker daemon. Is the docker daemon running on this host? Set up version 0.8 and into the ssh session. Following the manual. Some ideas?

PacoEcotrust (Wed, 29 Mar 2017 09:55:08 GMT):
Hi, in the version 0.8 is using docker into vagrant. Why it is not installed?

PacoEcotrust (Wed, 29 Mar 2017 09:55:08 GMT):
ubuntu@ubuntu-xenial:/project/sawtooth-core$ validator -v (zmq/backend/cython/socket.c:5156) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:7535) zmq.error.ZMQError: Address already in use [16:27:29.536 ERROR cli] Address already in use Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/server/cli.py", line 145, in main validator.start() File "/project/sawtooth-core -------------------------------------------after run for second time the validator, seem that does not clean well the port (socket)

toddojala (Wed, 29 Mar 2017 15:03:42 GMT):
@PacoEcotrust @adamludvik Hey Adam - maybe you have some insight here? PacoEcotrust: in my Sawtooth Lake provided Vagrant, docker is installed. The command "which docker" outputs: /usr/bin/docker

boydjohnson (Wed, 29 Mar 2017 15:07:16 GMT):
@PacoEcotrust Did you create a new vagrant environment when you switched to 0.8?

adamludvik (Wed, 29 Mar 2017 15:07:40 GMT):
^

cianx (Wed, 29 Mar 2017 18:12:18 GMT):

Message Attachments

cianx (Wed, 29 Mar 2017 18:13:15 GMT):
Here is a photo of the rock stars ont the tvu hackathon team that decided to use sawtooth this morning.

cianx (Wed, 29 Mar 2017 18:13:15 GMT):
Here is a photo oof the rock stars ont tvu hackathon tean that decided to ude sawtooth this morning.

jsmitchell (Wed, 29 Mar 2017 19:33:25 GMT):
nice!

pschwarz (Wed, 29 Mar 2017 19:34:30 GMT):
Youths!

Dan (Wed, 29 Mar 2017 22:37:30 GMT):
someone remind me etiquette for notifying a reviewer that a change has been made? is it removing them and re-adding them to the reviewers list?

jjason (Wed, 29 Mar 2017 22:56:43 GMT):
If they have requested changes, you should re-add them as reviewer.

jjason (Wed, 29 Mar 2017 22:57:16 GMT):
I have found, if delivered with a basket of muffins, you get a better result ;)

Dan (Wed, 29 Mar 2017 22:58:10 GMT):
Well I'm not giving up any of this Ben and Jerry's.

jjason (Wed, 29 Mar 2017 22:58:47 GMT):
I like that. Every review comes with a free pint of Ben & Jerry's!

Dan (Wed, 29 Mar 2017 23:22:14 GMT):
:ice_cream:

jjason (Wed, 29 Mar 2017 23:37:04 GMT):
@adamludvik Have you seen this: ```[---Running cli tests---] Creating network "60dab34261e16d87fa2d732409b9b5241562acbc0a4bc0641b7c79e200295516_default" with the default driver could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network Failed to start all docker containers. Do `docker ps -a` to list residual containers. Running: ['docker-compose', '-p', '60dab34261e16d87fa2d732409b9b5241562acbc0a4bc0641b7c79e200295516', '-f', './cli/tests/unit_cli.yaml', 'up', '--abort-on-container-exit']```

jjason (Wed, 29 Mar 2017 23:37:26 GMT):
Popping up in build when running tests on PR on GitHub

adamludvik (Wed, 29 Mar 2017 23:38:15 GMT):
Yeahhhhh, Ryan and I are aware of it.

jjason (Wed, 29 Mar 2017 23:38:28 GMT):
Excellent.

PacoEcotrust (Thu, 30 Mar 2017 08:43:19 GMT):
ubuntu@ubuntu-xenial:/project$ /project/sawtooth-core/bin/build_all [---Building java---] [ Building sawtooth-build-java... ] Cannot connect to the Docker daemon. Is the docker daemon running on this host? ubuntu@ubuntu-xenial:/project$

PacoEcotrust (Thu, 30 Mar 2017 08:43:19 GMT):
ubuntu@ubuntu-xenial:/project$ /project/sawtooth-core/bin/build_all [---Building java---] [ Building sawtooth-build-java... ] Cannot connect to the Docker daemon. Is the docker daemon running on this host? ubuntu@ubuntu-xenial:/project$ -----------------------Do you know the command to run the deamon?

PacoEcotrust (Thu, 30 Mar 2017 08:43:19 GMT):
ubuntu@ubuntu-xenial:/project$ /project/sawtooth-core/bin/build_all [---Building java---] [ Building sawtooth-build-java... ] Cannot connect to the Docker daemon. Is the docker daemon running on this host? ubuntu@ubuntu-xenial:/project$ -----------------------Some one know how to resolve this ?

Dan (Thu, 30 Mar 2017 13:54:23 GMT):
@PacoEcotrust I think `service docker status` should show you if it is running and also whether ubuntu thinks it is even available on the system.

Dan (Thu, 30 Mar 2017 13:54:23 GMT):
I think `service docker status` should show you if it is running and also whether ubuntu thinks it is even available on the system.

zac (Thu, 30 Mar 2017 13:58:28 GMT):
@jjason I had that issue on a PR yesterday, and it passed when I reran the build. Looks like an intermittent issue.

boydjohnson (Thu, 30 Mar 2017 14:00:44 GMT):
@zac That was on jenkins?

boydjohnson (Thu, 30 Mar 2017 14:01:57 GMT):
@zac Sorry, didn't see who you were talking to.

boydjohnson (Thu, 30 Mar 2017 14:02:11 GMT):
until now.

adamludvik (Thu, 30 Mar 2017 14:22:12 GMT):
Could use a quick review on this PR: https://github.com/hyperledger/sawtooth-core/pull/273

adamludvik (Thu, 30 Mar 2017 14:23:00 GMT):
Makes it so you don't have to build the external debs locally ever...

adamludvik (Thu, 30 Mar 2017 14:53:14 GMT):
Hello @PacoEcotrust, were you able to resolve your issues with Docker?

PacoEcotrust (Thu, 30 Mar 2017 14:53:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=XtJM7bRNbdErFwZyy) @Dan Thank you. I got it to work. After several tryings, updates, upgrades, both host machine as vagrant. Was problem about my computer setup

PacoEcotrust (Thu, 30 Mar 2017 14:53:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=XtJM7bRNbdErFwZyy) @Dan Thank you. I got it to work. After several tryings, updates, upgrades, both host machine as vagrant. Was problem about my computer setup. I just passed all test

PacoEcotrust (Thu, 30 Mar 2017 16:37:53 GMT):
(zmq/backend/cython/socket.c:5156) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:7535) zmq.error.ZMQError: Address already in use [16:27:29.536 ERROR cli] Address already in use Traceback (most recent call last): ------------------after run valitador for second time-----

boydjohnson (Thu, 30 Mar 2017 17:43:39 GMT):
@PacoEcotrust That is a known problem with shutting down tcp sockets in the validator and transaction processors. Right now we have been "netstat -tp" to find the process that is holding on to the socket, "kill -9 ". Also if the socket is in a TIME_WAIT state, waiting 30s is the only option that I know of.

jjason (Thu, 30 Mar 2017 17:44:33 GMT):
@PacoEcotrust I have found that, almost always, if you kill the transaction processors before killing the validator this doesn't happen. However your mileage may vary.

anrodon (Thu, 30 Mar 2017 19:57:23 GMT):
Has joined the channel.

anrodon (Thu, 30 Mar 2017 19:57:26 GMT):
http://area51.stackexchange.com/proposals/107923/hyperledger

adamludvik (Thu, 30 Mar 2017 21:30:12 GMT):
Requesting another quick PR review, this one doesn't even change any code, just adds comments: https://github.com/hyperledger/sawtooth-core/pull/281

jjason (Thu, 30 Mar 2017 21:42:48 GMT):
Would appreciate PR review if anyone has time. https://github.com/hyperledger/sawtooth-core/pull/280

jjason (Thu, 30 Mar 2017 21:50:24 GMT):
I pay twice what @adamludvik pays for PR reviews ;)

adamludvik (Thu, 30 Mar 2017 22:27:39 GMT):
Will take a look tonight or tomorrow morning

jjason (Thu, 30 Mar 2017 22:29:02 GMT):
@adamludvik Thx

mhart (Thu, 30 Mar 2017 23:19:37 GMT):
Question on the REST API – are all the `min_position`, `max_position`, `sort`, `fields`, `omit` references accurate?

mhart (Thu, 30 Mar 2017 23:20:10 GMT):
I only ask cause I can't see anything in the source about them – only the docs: http://intelledger.github.io/0.8/rest_api.html

Dan (Thu, 30 Mar 2017 23:27:46 GMT):
@zac ^

mhart (Thu, 30 Mar 2017 23:28:28 GMT):
The underlying pb client does seem to support paging, but it uses different references: https://github.com/hyperledger/sawtooth-core/blob/1b500782b0a920f6784262582ebeb79ed10b9f59/protos/client.proto#L37-L44

boydjohnson (Thu, 30 Mar 2017 23:29:40 GMT):
zac is gone for the day. Probably will answer tomorrow. My understanding was zac was working on that this sprint.

mhart (Thu, 30 Mar 2017 23:29:48 GMT):
Ok, np

mhart (Thu, 30 Mar 2017 23:32:42 GMT):
Ah, `This specification has not yet to be been fully implemented, and at this point should be considered a roadmap rather than a reference for usage. Until fully implemented, many of the endpoints may not work, or may behave differently than documented.`

boydjohnson (Thu, 30 Mar 2017 23:37:30 GMT):
Yeah

pschwarz (Fri, 31 Mar 2017 13:58:27 GMT):
That is actively in development this week!

zac (Fri, 31 Mar 2017 15:24:03 GMT):
@mhart The REST API specs are probably a little north of 50% implemented

zac (Fri, 31 Mar 2017 15:24:36 GMT):
Most of the endpoints are done, most of the query parameters are not

zac (Fri, 31 Mar 2017 15:24:57 GMT):
That list falls into the not category

zac (Fri, 31 Mar 2017 15:25:29 GMT):
Though min/max and count will be merged early next week

zac (Fri, 31 Mar 2017 15:25:36 GMT):
Which will be a big chunk of it

zac (Fri, 31 Mar 2017 15:27:17 GMT):
(and yeah, I merged the underlying validator support for those parameters just last week)

mhart (Fri, 31 Mar 2017 15:33:48 GMT):
@zac ok, great, thanks for the clarification

zac (Fri, 31 Mar 2017 15:34:37 GMT):
sort, fields, and omit are not immediately on the docket, FYI

mhart (Fri, 31 Mar 2017 15:35:53 GMT):
@zac question on the best strategy to "poll" for changes – am I thinking correctly that I can use the `head` param to return all changes from a particular point?

mhart (Fri, 31 Mar 2017 15:36:26 GMT):
ie, if I poll the REST API, saving the head each time I poll, then use that head to query changes since the last poll?

zac (Fri, 31 Mar 2017 15:36:47 GMT):
Hrmmm

zac (Fri, 31 Mar 2017 15:37:24 GMT):
Well, the intention of `head` is to _prevent_ your results from changing

zac (Fri, 31 Mar 2017 15:37:40 GMT):
So you are always getting results from when that block was the chain head

mhart (Fri, 31 Mar 2017 15:37:43 GMT):
right – by changes I mean additions technically

zac (Fri, 31 Mar 2017 15:37:49 GMT):
Yeah

zac (Fri, 31 Mar 2017 15:38:08 GMT):
I hadn't considered using it that way, but sure

mhart (Fri, 31 Mar 2017 15:38:23 GMT):
Just trying to figure out the best way to turn changes into an event feed

zac (Fri, 31 Mar 2017 15:38:29 GMT):
Grab something from some point in the past, then grab the latest, and calculate the diff

mhart (Fri, 31 Mar 2017 15:38:55 GMT):
I could poll the transactions, but of course I'd need to replicate the exact behaviour to replay them

zac (Fri, 31 Mar 2017 15:39:00 GMT):
Might be useful functionality to bake in at some point

mhart (Fri, 31 Mar 2017 15:41:24 GMT):
We want to hook sawtooth lake up to an event stream, probably AWS Kinesis, so the current thinking is poll *something* and publish to kinesis – just trying to figure out what the *something* should be

zac (Fri, 31 Mar 2017 15:43:03 GMT):
You just want to monitor changes in the blockchain?

mhart (Fri, 31 Mar 2017 15:43:08 GMT):
Yep

zac (Fri, 31 Mar 2017 15:44:07 GMT):
Well, your options at the moment are `/batches`, `/blocks`, and `/state`

mhart (Fri, 31 Mar 2017 15:44:11 GMT):
right

zac (Fri, 31 Mar 2017 15:44:25 GMT):
`/blocks` and `/batches` are similar, just different levels of granularity

mhart (Fri, 31 Mar 2017 15:45:00 GMT):
so they just record transactions? not the result of the transactions... right?

jsmitchell (Fri, 31 Mar 2017 15:45:19 GMT):
You want /state

mhart (Fri, 31 Mar 2017 15:45:23 GMT):
so to replay them you'd need to replicate the transaction handler functionality

jsmitchell (Fri, 31 Mar 2017 15:45:38 GMT):
Just enumerate everything under the namespace

zac (Fri, 31 Mar 2017 15:45:58 GMT):
The question is, do you want to look at transactions, or do you want to look at changes in data

mhart (Fri, 31 Mar 2017 15:46:02 GMT):
I mean, I kind of want state... but really I want the append log

jsmitchell (Fri, 31 Mar 2017 15:46:11 GMT):
Not transactions

mhart (Fri, 31 Mar 2017 15:46:17 GMT):
I don't want to know what the current state is – I want to know all the state transformations

zac (Fri, 31 Mar 2017 15:46:36 GMT):
. . . might you be able to generate state from the transactions?

mhart (Fri, 31 Mar 2017 15:46:38 GMT):
Obviously could figure that out from the current state – but that feels like it would be innefficient

pschwarz (Fri, 31 Mar 2017 15:46:45 GMT):
Getting a stream of state deltas is something in the works as well, just not nearly as far along as the rest api

zac (Fri, 31 Mar 2017 15:46:46 GMT):
Would that be the easiest way to calc a diff?

jsmitchell (Fri, 31 Mar 2017 15:46:49 GMT):
@zac: no

jsmitchell (Fri, 31 Mar 2017 15:46:56 GMT):
This is the wrong path

zac (Fri, 31 Mar 2017 15:47:08 GMT):
You would need to feed them through the TPs

jsmitchell (Fri, 31 Mar 2017 15:47:24 GMT):
@zac: that's what the validator is for

zac (Fri, 31 Mar 2017 15:47:31 GMT):
indeed

jsmitchell (Fri, 31 Mar 2017 15:47:55 GMT):
Right now, the best approach is to get /state under a given prefix

mhart (Fri, 31 Mar 2017 15:48:11 GMT):
@jsmitchell but that's gonna be...

mhart (Fri, 31 Mar 2017 15:48:17 GMT):
really innefficient

jsmitchell (Fri, 31 Mar 2017 15:48:25 GMT):
Yeah, clearly

mhart (Fri, 31 Mar 2017 15:48:35 GMT):
unless

jsmitchell (Fri, 31 Mar 2017 15:48:43 GMT):
See what @pschwarz said above

mhart (Fri, 31 Mar 2017 15:48:53 GMT):
there was a way to use the prefix as a range query ;-)

jsmitchell (Fri, 31 Mar 2017 15:48:58 GMT):
We are not exposing the state transition deltas yet

mhart (Fri, 31 Mar 2017 15:49:06 GMT):
and stick the timestamp in the prefix... or something

zac (Fri, 31 Mar 2017 15:49:54 GMT):
Other than the six-character namespace, I think the addresses are not meaningful at the moment

jsmitchell (Fri, 31 Mar 2017 15:50:31 GMT):
Addresses have transaction family specific meanings

jsmitchell (Fri, 31 Mar 2017 15:50:58 GMT):
If the transaction family implementer chooses to give them one

mhart (Fri, 31 Mar 2017 15:51:07 GMT):
When state changes – doesn't that append to a merkle tree? So isn't it possible to just query from a particular point in the merkle tree?

jsmitchell (Fri, 31 Mar 2017 15:51:34 GMT):
The merkle trie is a copy on write structure based on hashes

jsmitchell (Fri, 31 Mar 2017 15:51:56 GMT):
There is no way to identify what nodes are new to that state root

jsmitchell (Fri, 31 Mar 2017 15:52:21 GMT):
We would need to persist that info elsewhere. We don't do that at the moment.

jsmitchell (Fri, 31 Mar 2017 15:53:43 GMT):
I recommend building an adapter that GETs current state under a namespace, calculating the diff against prior state and submitting the change data events to your kinesis stream

mhart (Fri, 31 Mar 2017 15:54:13 GMT):
Ok

jsmitchell (Fri, 31 Mar 2017 15:54:15 GMT):
We will have better support for this built in in the future, but it is some ways off

mhart (Fri, 31 Mar 2017 15:54:42 GMT):
And partial address queries are relatively efficient?

jsmitchell (Fri, 31 Mar 2017 15:55:48 GMT):
Yeah, should be, assuming there aren't millions of nodes in the tree.

jsmitchell (Fri, 31 Mar 2017 15:56:28 GMT):
This should be considered a proof of concept level solution

mhart (Fri, 31 Mar 2017 15:58:26 GMT):
I guess my question is more – is it (a lot) more efficient to make a query with an address of `namespace/entitytype1/` compared with `namespace/`

jsmitchell (Fri, 31 Mar 2017 15:58:44 GMT):
That is a @zac question

mhart (Fri, 31 Mar 2017 15:58:58 GMT):
ie, are the prefixes built in to the tree structure? and if so, how

jsmitchell (Fri, 31 Mar 2017 15:59:12 GMT):
All your queries will be in address format

jsmitchell (Fri, 31 Mar 2017 15:59:50 GMT):
Address format is 70 hex digits for a full leaf address

jsmitchell (Fri, 31 Mar 2017 16:00:23 GMT):
Any even numbered subset of that represents a tree prefix

jsmitchell (Fri, 31 Mar 2017 16:01:05 GMT):
By convention, transaction family namespaces start with 6 hex digits (3 bytes)

mhart (Fri, 31 Mar 2017 16:03:22 GMT):
right – so assume my scheme is: hash(namespace)[0:6] + hash(entitytype) + hash(entityid)

mhart (Fri, 31 Mar 2017 16:03:22 GMT):
right – so assume my scheme is: hash(namespace)[0:6] + hash(entitytype)[0:16] + hash(entityid)[0:48]

jsmitchell (Fri, 31 Mar 2017 16:03:31 GMT):
Yep

mhart (Fri, 31 Mar 2017 16:04:05 GMT):
then a query of hash(namespace)[0:6] + hash(entitytype) should be more efficient than just hash(namespace)[0:6] – especially if other entities that I'm not querying have many many nodes – right?

mhart (Fri, 31 Mar 2017 16:04:05 GMT):
then a query of hash(namespace)[0:6] + hash(entitytype)[0:16] should be more efficient than just hash(namespace)[0:6] – especially if other entities that I'm not querying have many many nodes – right?

jsmitchell (Fri, 31 Mar 2017 16:04:39 GMT):
You could get /state with hash(namespace)[0:6]+hash(entitytype) to get all entities of that type in the current state

jsmitchell (Fri, 31 Mar 2017 16:05:08 GMT):
Yes, it is going to be linearly related to the number of nodes in the depth first traversal from that node

mhart (Fri, 31 Mar 2017 16:05:38 GMT):
right – and the traversal is done in byte order?

mhart (Fri, 31 Mar 2017 16:05:59 GMT):
as in, first byte is first depth, second byte is second depth, etc

jsmitchell (Fri, 31 Mar 2017 16:06:06 GMT):
Yes

mhart (Fri, 31 Mar 2017 16:06:10 GMT):
perfect, thanks

mhart (Fri, 31 Mar 2017 16:07:12 GMT):
a transaction handler can only write to addresses with a single transaction family namespace, right?

jsmitchell (Fri, 31 Mar 2017 16:08:48 GMT):
We don't enforce that presently

jsmitchell (Fri, 31 Mar 2017 16:09:16 GMT):
And when we do enforce it, it will probably be a many to many relationship

jsmitchell (Fri, 31 Mar 2017 16:09:53 GMT):
Meaning multiple transaction families can write to the same namespace and a transaction family can write to multiple namespaces

mhart (Fri, 31 Mar 2017 16:11:14 GMT):
hmmm, ok – trying to figure out if it's better to model top-level entities (aggregate roots) as just separate namespaces – or better to do it a level down below the namespace

jsmitchell (Fri, 31 Mar 2017 16:12:00 GMT):
I'd recommend keeping it in a single namespace

mhart (Fri, 31 Mar 2017 16:12:10 GMT):
right, that's what I'm leaning towards

mhart (Fri, 31 Mar 2017 16:12:17 GMT):
a namespace per app

jsmitchell (Fri, 31 Mar 2017 16:12:19 GMT):
You have plenty of room for uniqueness down there

mhart (Fri, 31 Mar 2017 16:12:20 GMT):
essentially

jsmitchell (Fri, 31 Mar 2017 16:12:24 GMT):
Yes

Dan (Fri, 31 Mar 2017 16:15:32 GMT):
Docs back to defaulting to 0.8. Thanks Ryan.

mhart (Fri, 31 Mar 2017 16:44:46 GMT):
One way I could optimize for reads (although it would amplify writes) would be to write a state change event for each transaction (on top of the existing state changes) – and use an address scheme for these events that facilitate efficient querying. eg, `hash(namespace) + hash(timestamp-in-mins) + hash(eventid)` – then each poll would just query two addresses: `hash(namespace) + hash(current-time-in-mins)` and `hash(namespace) + hash(current-time-in-mins-minus-one-min)` (and all the caveats that go with that: be sure to poll at least once every min, or poll for each min to last time you polled, etc)

jsmitchell (Fri, 31 Mar 2017 17:14:45 GMT):
I wouldn't recommend designing the storage format to work around this short term limitation in events

jsmitchell (Fri, 31 Mar 2017 17:15:55 GMT):
Also, remember if you do _anything_ with timestamps, they need to be in the transaction created by the client. The transaction processor cannot write its own timestamp into the address or the data.

mhart (Fri, 31 Mar 2017 17:17:43 GMT):
@jsmitchell ah, is that for replay purposes? ie, you can't do anything non-deterministic? or is it just time-related?

jsmitchell (Fri, 31 Mar 2017 17:18:06 GMT):
Non determinism and blockchains don't mix

mhart (Fri, 31 Mar 2017 17:19:06 GMT):
hmm, so that includes GUID generation, etc

mhart (Fri, 31 Mar 2017 17:19:42 GMT):
I don't remember seeing that in the docs

jsmitchell (Fri, 31 Mar 2017 17:19:57 GMT):
The publishing validator that determines the merkle state root as a result of the aggregate state transitions from the transactions its including. That root hash is put on the block header. When the block reaches the validator that is verifying it, it does the same work through the transaction processors. If the outcome state hash doesn't match, the block is invalid.

jsmitchell (Fri, 31 Mar 2017 17:21:22 GMT):
Anything non deterministic breaks that process

mhart (Fri, 31 Mar 2017 17:21:40 GMT):
very good to know – thanks! so that means that all addresses are essentially locked right, so that `state.get` doesn't return something different

jsmitchell (Fri, 31 Mar 2017 17:21:49 GMT):
You must include anything like that in the transaction payload as created by the client

jsmitchell (Fri, 31 Mar 2017 17:22:08 GMT):
Yes

jsmitchell (Fri, 31 Mar 2017 17:22:43 GMT):
Your encoding format must be deterministic, the way you serialize payloads must be deterministic, etc.

jsmitchell (Fri, 31 Mar 2017 17:23:21 GMT):
All validators with the same starting state must generate the same ending state

jsmitchell (Fri, 31 Mar 2017 17:23:52 GMT):
We are going to be creating some transaction processor developer focused docs

mhart (Fri, 31 Mar 2017 17:24:18 GMT):
this definitely needs to be in the docs

mhart (Fri, 31 Mar 2017 17:24:19 GMT):
right

jsmitchell (Fri, 31 Mar 2017 17:24:24 GMT):
Heh, yeah

mhart (Fri, 31 Mar 2017 17:24:30 GMT):
even something under http://intelledger.github.io/txn_family_tutorial.html

jsmitchell (Fri, 31 Mar 2017 17:25:44 GMT):
@toddojala @Dan: ^

jsmitchell (Fri, 31 Mar 2017 17:26:08 GMT):
Good confirmation of our discussed need for better TF developer docs

jsmitchell (Fri, 31 Mar 2017 17:26:52 GMT):
@mhart: I need to understand what you mean by addresses being locked

mhart (Fri, 31 Mar 2017 17:27:05 GMT):
I mean – all the addresses in `inputs`

mhart (Fri, 31 Mar 2017 17:27:12 GMT):
all the addresses you can write

mhart (Fri, 31 Mar 2017 17:27:13 GMT):
to

mhart (Fri, 31 Mar 2017 17:27:16 GMT):
read from

mhart (Fri, 31 Mar 2017 17:27:40 GMT):
because the transaction handler will make decisions based on the results of reading those addresses

mhart (Fri, 31 Mar 2017 17:27:44 GMT):
so they can't change at all

jsmitchell (Fri, 31 Mar 2017 17:27:57 GMT):
That is for parallelism, not for a point in time state

mhart (Fri, 31 Mar 2017 17:28:04 GMT):
from when the first transaction handler reads them – to when the final confirmation happens

jsmitchell (Fri, 31 Mar 2017 17:28:12 GMT):
They can in fact change

mhart (Fri, 31 Mar 2017 17:28:24 GMT):
so... that's non-deterministic?

jsmitchell (Fri, 31 Mar 2017 17:28:31 GMT):
No

mhart (Fri, 31 Mar 2017 17:28:37 GMT):
no transaction isolation

jsmitchell (Fri, 31 Mar 2017 17:28:52 GMT):
This is difficult to express over text :)

mhart (Fri, 31 Mar 2017 17:28:54 GMT):
or am i confused about where the state is actually stored?

jsmitchell (Fri, 31 Mar 2017 17:29:13 GMT):
The block publisher is determining to ordering of transactions

jsmitchell (Fri, 31 Mar 2017 17:29:20 GMT):
The ordering

jsmitchell (Fri, 31 Mar 2017 17:29:31 GMT):
That process does not have to be deterministic

jsmitchell (Fri, 31 Mar 2017 17:29:36 GMT):
It is done once

mhart (Fri, 31 Mar 2017 17:29:53 GMT):
is each state local to each transaction handler?

jsmitchell (Fri, 31 Mar 2017 17:29:55 GMT):
But the validation of that block must be identical every time

jsmitchell (Fri, 31 Mar 2017 17:30:01 GMT):
No, state is global

jsmitchell (Fri, 31 Mar 2017 17:30:27 GMT):
So, the ordering of transactions is based on what batches are in the publishers pending queue

jsmitchell (Fri, 31 Mar 2017 17:31:31 GMT):
But when the block data structure is written out, it includes an explicit order, along with the rules around isolation dependencies for inputs and outputs - this gives a repeatable order of evaluation for transactions

jsmitchell (Fri, 31 Mar 2017 17:32:15 GMT):
But, txn 1 in the block can write to address A, and txn 2 can read from address A, and it will get the result placed there by txn 1

mhart (Fri, 31 Mar 2017 17:32:22 GMT):
but if those transactions change behavior depending on state...

mhart (Fri, 31 Mar 2017 17:32:26 GMT):
how do you replay them?

mhart (Fri, 31 Mar 2017 17:32:36 GMT):
if the state has changed in the meantime?

jsmitchell (Fri, 31 Mar 2017 17:32:49 GMT):
You are starting with the same base state

jsmitchell (Fri, 31 Mar 2017 17:32:57 GMT):
Which is the ending state of the prior block

mhart (Fri, 31 Mar 2017 17:33:00 GMT):
ok

jsmitchell (Fri, 31 Mar 2017 17:33:14 GMT):
And you are playing back a deterministic set of operations

mhart (Fri, 31 Mar 2017 17:33:21 GMT):
so it's not exactly global – or, not in the way I was thinking

jsmitchell (Fri, 31 Mar 2017 17:33:30 GMT):
It's 100% global

jsmitchell (Fri, 31 Mar 2017 17:33:36 GMT):
Everyone has a copy of it

jsmitchell (Fri, 31 Mar 2017 17:33:52 GMT):
And it's monolithic

mhart (Fri, 31 Mar 2017 17:33:54 GMT):
you know what I mean – the state that a transaction processor sees

mhart (Fri, 31 Mar 2017 17:34:03 GMT):
ie, a `state.get`

jsmitchell (Fri, 31 Mar 2017 17:34:11 GMT):
State that a transaction processor sees is super limited

jsmitchell (Fri, 31 Mar 2017 17:34:27 GMT):
It's defined by its inputs list

jsmitchell (Fri, 31 Mar 2017 17:34:44 GMT):
And it doesn't get to choose _when_ it is executed

jsmitchell (Fri, 31 Mar 2017 17:34:53 GMT):
The block publisher is making that choice

mhart (Fri, 31 Mar 2017 17:35:33 GMT):
that's what I meant by is state local to the transaction handler

jsmitchell (Fri, 31 Mar 2017 17:36:02 GMT):
But it can define any inputs it wants including *

jsmitchell (Fri, 31 Mar 2017 17:37:22 GMT):
It is entirely possible to create a transaction which you think will be successful when it's created but fails when a publisher attempts to include it in a block because the state assumptions have changed

mhart (Fri, 31 Mar 2017 17:38:05 GMT):
Right – but this statement – "When the block reaches the validator that is verifying it, it does the same work through the transaction processors"

jsmitchell (Fri, 31 Mar 2017 17:38:13 GMT):
For example, I have $10. I create a txn to pay you $10, and a txn to pay Dan $10. It would be a pretty bad deal if the system allowed both of those to succeed

mhart (Fri, 31 Mar 2017 17:39:14 GMT):
each transaction processor can't be setting the same global state every time they do `state.set` – they must be operating on their own copy of state...?

jsmitchell (Fri, 31 Mar 2017 17:39:16 GMT):
Yes, the publisher's creation of a block data structure is the codifying of a set of operations that must result in an identical state hash wherever they are processed

jsmitchell (Fri, 31 Mar 2017 17:39:34 GMT):
Oh, yes. It's their own copy

jsmitchell (Fri, 31 Mar 2017 17:39:50 GMT):
But we can _prove_ that it's the same

mhart (Fri, 31 Mar 2017 17:39:53 GMT):
right

mhart (Fri, 31 Mar 2017 17:48:55 GMT):
btw, I hate to be "that guy", but just to clarify – sawtooth lake basically shares nothing with fabric, right? Like, "hyperledger" is just some loose umbrella org

rbuysse (Fri, 31 Mar 2017 17:50:10 GMT):
correct.

mhart (Fri, 31 Mar 2017 17:52:36 GMT):
cool. pity about the name. hyperledger sounds like an actual... you know... ledger

jsmitchell (Fri, 31 Mar 2017 17:54:39 GMT):
Haha

jsmitchell (Fri, 31 Mar 2017 17:56:47 GMT):
The projects have different ideas about what is important. I believe the goal remains to crystallize those ideas and cross-pollinate.

mhart (Fri, 31 Mar 2017 18:23:39 GMT):
yeah, but there's definitely some confusion out there

mhart (Fri, 31 Mar 2017 18:23:53 GMT):
even wikipedia describes hyperledger as "a platform"

mhart (Fri, 31 Mar 2017 18:24:13 GMT):
and it's often referred to as "the hyperledger project"

mhart (Fri, 31 Mar 2017 18:24:41 GMT):
which makes as much sense as "the linux foundation project"

Dan (Fri, 31 Mar 2017 18:31:16 GMT):
There's no lack of consternation about that here.:unamused:

Dan (Fri, 31 Mar 2017 18:31:16 GMT):
There's no lack of consternation about that here. :unamused:

mhart (Fri, 31 Mar 2017 18:31:50 GMT):
yeah, fait enough

mhart (Fri, 31 Mar 2017 18:31:50 GMT):
yeah, fair enough

mhart (Fri, 31 Mar 2017 18:34:08 GMT):
I guess it's only a matter of time before ppl start saying things like "it's built on hyperledger"

mhart (Fri, 31 Mar 2017 18:34:11 GMT):
ah, naming things

Dan (Fri, 31 Mar 2017 18:43:27 GMT):
Yeah that's already an issue :rolling_eyes:

choas (Sat, 01 Apr 2017 19:52:40 GMT):
Has joined the channel.

mhart (Sun, 02 Apr 2017 18:19:22 GMT):
what's the best option for running sawtooth lake on SGX right now? Is it available on AWS, etc?

kelly_ (Sun, 02 Apr 2017 21:28:12 GMT):
SGX is not yet available on server/in cloud deployments

kelly_ (Sun, 02 Apr 2017 21:29:16 GMT):
all skylake and beyond desktop/laptop processors include sgx capability (intel core 6th gen)

kelly_ (Sun, 02 Apr 2017 21:29:36 GMT):
not all bios support it though (e.g. i don't believe it is available on mac today)

kelly_ (Sun, 02 Apr 2017 21:30:26 GMT):
here is a list of some systems that it is available on - https://github.com/ayeks/SGX-hardware

kelly_ (Sun, 02 Apr 2017 21:30:39 GMT):
we have HP and Intel NUC machines that we do most development on

mhart (Mon, 03 Apr 2017 00:16:18 GMT):
Thanks @kelly_

Dan (Mon, 03 Apr 2017 19:08:43 GMT):
in 0.8 do we have a notion of a validator ID as distinct from a validator's public key? Are we perpetuating the validator name field from 0.6?

jsmitchell (Mon, 03 Apr 2017 19:13:57 GMT):
there ain't no such

jsmitchell (Mon, 03 Apr 2017 19:14:09 GMT):
not yet anyhow

jjason (Mon, 03 Apr 2017 19:39:04 GMT):
There is no validator name.

agunde (Tue, 04 Apr 2017 14:02:00 GMT):
I am working on defining the configurable logging implementation for 0.8 and had some preference questions. What should be the default logging settings? In 0.7, the logs were put into the default log directory and two files were created, a debug.log for all log statements and error.log for any error log statements. Do we want to have the same set up for 0.8?

toddojala (Tue, 04 Apr 2017 14:39:00 GMT):
That sounds reasonable to me, @agunde, but I'm not a logging expert.

agunde (Tue, 04 Apr 2017 16:27:57 GMT):
I would assume we want to have a configurable logging option for the python transaction processors as well as the validator? Both the transaction processors and the validators do not have unique names. In 0.7 the logging files mentioned above would look like val_name-debug.log and val_name-error.log. Does anyone have a suggestion or preference on how the log files should be distinguished from each other?

jjason (Tue, 04 Apr 2017 16:34:19 GMT):
For the validators in the validator registry (even though we don't seem to care about name any more), I used validator-[first 8 of public key string]

jjason (Tue, 04 Apr 2017 16:34:52 GMT):
It would be nice if we standardized on something ;)

Dan (Tue, 04 Apr 2017 16:37:58 GMT):
Where do validators running via docker stick their logs?

agunde (Tue, 04 Apr 2017 16:45:14 GMT):
According to a convo I just had with @boydjohnson, they would go in the Linux defaults within the docker container (var/log/sawtooth) @Dan

PacoEcotrust (Tue, 04 Apr 2017 17:07:47 GMT):
The ubuntu packages generation in v8 is the same than v7? I want to develop into ubuntu

adamludvik (Tue, 04 Apr 2017 17:47:56 GMT):
Hello Paco, if you would like to develop a transaction family in 0.8, we have a new package repository that may make your life easier. This demo shows how to use it to install sawtooth on a new Ubuntu 16.04 box using vagrant: https://asciinema.org/a/109608 If you already have a running Ubuntu 16.04 box, you should be able to skip passed the vagrant up portion.

adamludvik (Tue, 04 Apr 2017 17:47:56 GMT):
Hello @PacoEcotrust , if you would like to develop a transaction family in 0.8, we have a new package repository that may make your life easier. This demo shows how to use it to install sawtooth on a new Ubuntu 16.04 box using vagrant: https://asciinema.org/a/109608 If you already have a running Ubuntu 16.04 box, you should be able to skip passed the vagrant up portion.

kellyo (Tue, 04 Apr 2017 18:39:16 GMT):
Has joined the channel.

PacoEcotrust (Wed, 05 Apr 2017 15:31:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=CcywALdmbSjEt7hCy) @adamludvik

PacoEcotrust (Wed, 05 Apr 2017 15:31:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=CcywALdmbSjEt7hCy) Thanks, now I have problem with versions: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Preparing to unpack .../python3-bitcoin_1.1.42-1_all.deb ... Unpacking python3-bitcoin (1.1.42-1) ... dpkg: error processing archive /var/cache/apt/archives/python3-bitcoin_1.1.42-1_all.deb (--unpack): trying to overwrite '/usr/bin/pybtctool', which is also in package python-pybitcointools 1.1.15-1

adamludvik (Wed, 05 Apr 2017 15:37:30 GMT):
Are you working in a clean environment, or are you using a pre-existing environment where you already had bitcoin installed?

pschwarz (Wed, 05 Apr 2017 15:38:53 GMT):
Hey all, with the merger of PR #296 (https://github.com/hyperledger/sawtooth-core/pull/296) you no longer need to do a run `sawtooth admin genesis` after restarts. You block chain and state will be preserved across restarts. If you want to start from a clean state, delete the contents of your data directory (if you're using Vagrant, this is `rm $SAWTOOTH_HOME/data/*`)

PacoEcotrust (Wed, 05 Apr 2017 15:40:15 GMT):
[ ](https://chat.hyperledger.org/channel. /sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik -----------Yes, I had installed the sawtooth v7

PacoEcotrust (Wed, 05 Apr 2017 15:40:51 GMT):
[ ](https://chat.hyperledger.org/channel----Yes, I had installed the sawtooth v7 /sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik

PacoEcotrust (Wed, 05 Apr 2017 15:41:20 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik ---Yes, I had installed the sawtooth v7

PacoEcotrust (Wed, 05 Apr 2017 15:41:20 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik ---Yes, I had installed the sawtooth v7 into ubuntu 16.04

PacoEcotrust (Wed, 05 Apr 2017 15:41:20 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik ---Yes, I had installed and setup the lieclipse with the sawtooth v7 into ubuntu 16.04

PacoEcotrust (Wed, 05 Apr 2017 15:41:20 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik ---Yes, I had installed and setup the liclipse with the sawtooth v7 into ubuntu 16.04

PacoEcotrust (Wed, 05 Apr 2017 15:41:20 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Q5EwMzqAWPfxFGQX5) @adamludvik ---Yes, I had installed and setup the liclipse with the sawtooth v7 into ubuntu 16.04. So, I need clean system, do I?

adamludvik (Wed, 05 Apr 2017 15:45:43 GMT):
A clean system would be easiest, yes. If you are using vagrant, you should be able to do `vagrant destroy` to remove your existing box, and then follow along with the demo I sent earlier to create a new one.

mhart (Wed, 05 Apr 2017 21:23:19 GMT):
@pschwarz nice 👍

JeetMukesh (Thu, 06 Apr 2017 03:33:54 GMT):
Has joined the channel.

PacoEcotrust (Thu, 06 Apr 2017 09:59:04 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=F3HeXevnn82YpEpnx) @adamludvik , thanks was perfect, not a warning. Now I want to mount sawtooth project with liClipse into vagrant box that I think is better than into directly in host ubuntu. I had sawtooth project in host ubuntu and to change of version (v7 to v8) I had a lot of version conflicts so I had to reinstall new Ubuntu.

adamludvik (Thu, 06 Apr 2017 17:58:08 GMT):
@PacoEcotrust If you are just trying to write a transaction family, you shouldn't need to mount the project directory into ubuntu. You should just be able to do `import sawtooth_sdk` in your python3 files and go from there.

Dan (Fri, 07 Apr 2017 02:39:21 GMT):
If anyone is looking for low hanging fruit to contribute getting rid of this part of the docs would be helpful: http://intelledger.github.io/sysadmin_guide/network_configuration.html#validators https://github.com/hyperledger/sawtooth-core/blob/master/docs/source/sysadmin_guide/network_configuration.rst

Dan (Fri, 07 Apr 2017 02:40:35 GMT):
More low hanging fruit: http://intelledger.github.io/sawtooth_developers_guide/architecture_overview.html Delete me: https://github.com/hyperledger/sawtooth-core/blob/master/docs/source/sawtooth_developers_guide/architecture_overview.rst

zzying (Fri, 07 Apr 2017 03:02:47 GMT):
Has joined the channel.

Dan (Fri, 07 Apr 2017 13:44:32 GMT):
In creating the a Transaction Processor (server side piece of a _Transaction Family_) there's at least one required method, `apply`. I'm digging through some old notes and there's a reference to `serialize_for_display`. Do we still want that to be a required method? Would that just be on the _client_ (transactor) side?

haridhakshini (Sat, 08 Apr 2017 06:50:14 GMT):
Has joined the channel.

ray (Sat, 08 Apr 2017 16:18:43 GMT):
Has left the channel.

haridhakshini (Sat, 08 Apr 2017 19:38:08 GMT):
@Dan I am trying to get rid of the two parts of the docs as posted by you previously. I have submitted a pull request and it errored out with the following error:"FAILED: User 'Haridhakshini' not whitelisted". https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-314/1/console https://github.com/hyperledger/sawtooth-core/pull/314 I am not sure if I am encountering some permissions issue. Please let me know your thoughts. I also apologise if this is not the right way to do a Pull Request as this is my first time to do so. Thanks!

Dan (Sat, 08 Apr 2017 19:46:10 GMT):
Hi! The first time doing a PR is tricky.

Dan (Sat, 08 Apr 2017 19:46:28 GMT):
You want to fork the repo.

Dan (Sat, 08 Apr 2017 19:46:57 GMT):
Then clone your fork on your own system.

Dan (Sat, 08 Apr 2017 19:47:26 GMT):
Then make a branch (this helps isolate your changes)

Dan (Sat, 08 Apr 2017 19:49:00 GMT):
Commit (with -s flag fit sign off) then push that branch with your commit back up to _your_ fork on github.

Dan (Sat, 08 Apr 2017 19:50:05 GMT):
The github website will pop up a little link for you asking if you want to issue a PR.

Dan (Sat, 08 Apr 2017 19:51:13 GMT):
Then two of the maintainers will review it and either merge it for you or ask for any corrections.

pschwarz (Sat, 08 Apr 2017 20:01:03 GMT):
I think that's what that method was for originally. Since we don't have any mandate about format or reuse between clients and processors, that sort of thing is up to the transaction family developer. We should certainly drop the reference.

pschwarz (Sat, 08 Apr 2017 20:01:31 GMT):
@dan :point_up: re the `serialize_for_display`

Dan (Sat, 08 Apr 2017 22:09:01 GMT):
@haridhakshini my bad. Looks like you submitted everything correctly and it is a permissioning issue like you suggested.

haridhakshini (Sun, 09 Apr 2017 10:22:05 GMT):
@Dan Thanks for the reply!

AlexejGerstmaier (Sun, 09 Apr 2017 22:11:44 GMT):
Has joined the channel.

AlexejGerstmaier (Sun, 09 Apr 2017 22:14:31 GMT):
Hey guys, I just found out about the Hyperledger project and researched a bit. One quick question for my understanding: Sawtoothlake seems to rely on a Trusted Execution Environment to be secure. Intel SGX is mentioned a lot. Does ARM Trustzone work too?

Dan (Mon, 10 Apr 2017 02:01:46 GMT):
Hi @AlexejGerstmaier we need to update that intro. It's a little too cautious. Sawtooth has pluggable consensus. The one we talk about most is PoET. PoET was designed to use trusted execution. Without trusted execution you lose protections against bad actors in the network (byzantine faults), but you keep crash fault tolerance (CFT). CFT is the same level of protection of several of the other enterprise focused blockchains.

Dan (Mon, 10 Apr 2017 02:04:12 GMT):
There's no SGX required to run the system and no one has yet open sourced a trusted execution implementation of PoET with SGX or Trustzone.

Dan (Mon, 10 Apr 2017 02:05:12 GMT):
@mfford I should probably update that intro this sprint.

jsmitchell (Mon, 10 Apr 2017 14:24:55 GMT):
A recent PR to master introduces a required command-line argument called `--public-uri` which specifies the reachable endpoint for the validator's network endpoint. Example usage: `validator --network-endpoint tcp://0.0.0.0:8801 --public-uri tcp://{public ip or hostname}:8801`

drozd (Mon, 10 Apr 2017 14:33:27 GMT):
@jsmitchell is it always required?

drozd (Mon, 10 Apr 2017 14:34:26 GMT):
I mean, always always?

jsmitchell (Mon, 10 Apr 2017 14:34:43 GMT):
Always, yes

jsmitchell (Mon, 10 Apr 2017 14:35:51 GMT):
It's sent as part of the connect message to manage validator network identity

toddojala (Mon, 10 Apr 2017 15:05:30 GMT):
@jsmitchell So this needs to be documented, right? ;)

jsmitchell (Mon, 10 Apr 2017 20:03:43 GMT):
You bet!

toddojala (Mon, 10 Apr 2017 21:59:52 GMT):
@jsmitchell We'll update the docs ASAP, "out-of-band" so to speak.

Lin-YiTang (Tue, 11 Apr 2017 21:14:53 GMT):
Has joined the channel.

Dan (Tue, 11 Apr 2017 23:19:44 GMT):
Getting this error from the build system ```docker: Error response from daemon: repository sawtooth-build-python not found: does not exist or no pull access. See 'docker run --help'.```

boydjohnson (Tue, 11 Apr 2017 23:28:30 GMT):
PR # ?

boydjohnson (Tue, 11 Apr 2017 23:31:24 GMT):
I know that @adamludvik had a PR go in that changed some of the Docker image names. I would guess that is the problem. My guess is that rebasing the PR on master will fix the issue.

Dan (Tue, 11 Apr 2017 23:32:01 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-314/11/console

adamludvik (Wed, 12 Apr 2017 00:05:26 GMT):
That console log is very weird. I will investigate in the morning

ReedCao (Wed, 12 Apr 2017 08:04:11 GMT):
Has joined the channel.

Dan (Wed, 12 Apr 2017 08:53:01 GMT):
Thanks @adamludvik. I rebased the PR for the submitter. If I can get a couple thumbs up we can merge these baby seals to death. Now as PR-324. https://github.com/hyperledger/sawtooth-core/pull/324

pancake (Wed, 12 Apr 2017 11:11:42 GMT):
Has joined the channel.

pancake (Wed, 12 Apr 2017 11:23:54 GMT):
Hi all, i try to modify the the content of a transaction or block, but the validator seem can't detect the illegal change, why?

pancake (Wed, 12 Apr 2017 11:24:33 GMT):
I start only one validator.

jsmitchell (Wed, 12 Apr 2017 12:40:31 GMT):
@pancake Can you provide some details? You might be able to trick yourself (by modifying things after signature verification occurs etc, but you should not be able to trick others.

adamludvik (Wed, 12 Apr 2017 13:53:23 GMT):
@dan So here is what happened: 1. PR 312 and 314 go up, both bringing a copy of the repo. Specifically, they bring their own versions of build_all and the Jenkinsfile 2. My PR (312), which changes build_all and the Jenkinsfile, gets merged. The Jenkinsfile and build_all are no longer the same on master and PR 314. 3. PR 314 is re-run, but doesn't have permission to run its own copy of the Jenkinsfile because of our security rules. It defaults to running what is on master, which tells it to run _its copy_ of build_all in installed mode. 4. Installed mode changed substantially with 312, including building sawtooth-build-python, the missing docker image.

adamludvik (Wed, 12 Apr 2017 13:53:23 GMT):
@Dan So here is what happened: 1. PR 312 and 314 go up, both bringing a copy of the repo. Specifically, they bring their own versions of build_all and the Jenkinsfile 2. My PR (312), which changes build_all and the Jenkinsfile, gets merged. The Jenkinsfile and build_all are no longer the same on master and PR 314. 3. PR 314 is re-run, but doesn't have permission to run its own copy of the Jenkinsfile because of our security rules. It defaults to running what is on master, which tells it to run _its copy_ of build_all in installed mode. 4. Installed mode changed substantially with 312, including building sawtooth-build-python, the missing docker image.

adamludvik (Wed, 12 Apr 2017 13:53:58 GMT):
Rebasing is the solution, which it looks like you did.

adamludvik (Wed, 12 Apr 2017 13:56:48 GMT):
In other news, our security rules are working correctly.

Dan (Wed, 12 Apr 2017 14:17:03 GMT):
thanks for the details @adamludvik

Dan (Wed, 12 Apr 2017 14:17:57 GMT):
this baby seal was just surprisingly resilient. if you want to tap it on the head with a green checkmark I will deliver the coup de grace.

Dan (Wed, 12 Apr 2017 14:20:56 GMT):
it is done.

Dan (Wed, 12 Apr 2017 14:21:37 GMT):
hands won't come clean:flushed:

toddojala (Wed, 12 Apr 2017 14:36:41 GMT):
the baby seal metaphor is kind of weird. People love baby seals, and don't want them tapped on the head!

toddojala (Wed, 12 Apr 2017 14:36:45 GMT):
:)

adamludvik (Wed, 12 Apr 2017 14:57:29 GMT):
I am trying to resolve the "binding to 0.0.0.0" security issue. My first thought was to use docker's embedded DNS to replace this, but it doesn't look like ZMQ (and maybe binding in general?) lets you bind to an address by referencing its DNS name. The docs (http://api.zeromq.org/2-1:zmq-tcp) indicate you can do `tcp://*:40000`, `tcp://{numeric_ip}:4000`, or `tcp://{interface}:40000`. I am going to set the default to `tcp://127.0.0.1:40000`, but I have a couple questions: 1. Is binding to `tcp://*:40000` the same as 0.0.0.0? (I think it must be) 2. Is it secure to bind to `tcp://eth0:40000`?

jsmitchell (Wed, 12 Apr 2017 14:58:49 GMT):
I don't think binding to local host is going to be valid for docker. You will need to bind to the public interface for it to be reachable.

adamludvik (Wed, 12 Apr 2017 14:59:05 GMT):
I know that localhost won't work in docker.

jsmitchell (Wed, 12 Apr 2017 14:59:05 GMT):
* should be the same as 0.0.0.0

adamludvik (Wed, 12 Apr 2017 14:59:23 GMT):
But I think it should be the default argument for the cli.

adamludvik (Wed, 12 Apr 2017 14:59:39 GMT):
I am trying to decide what to change the argument to in docker.

jsmitchell (Wed, 12 Apr 2017 14:59:40 GMT):
I don't see any issue binding to eth0

jsmitchell (Wed, 12 Apr 2017 14:59:59 GMT):
@adamludvik: yep, sounds good for the default

jsmitchell (Wed, 12 Apr 2017 15:00:43 GMT):
Although it might cause confusion why a user's validator isn't working by default

adamludvik (Wed, 12 Apr 2017 15:01:39 GMT):
If I understand the issue then, it is with allowing all interfaces (not just eth0) when you do tcp://*:40000?

jsmitchell (Wed, 12 Apr 2017 15:03:46 GMT):
Yeah, it will listen on all interfaces on port 40000

adamludvik (Wed, 12 Apr 2017 15:05:29 GMT):
It the default is 127.0.0.1, you can still start a validator and connect TPs and the REST API to it, so when you say "working by default", you mean connecting to a larger, existing network right?

jsmitchell (Wed, 12 Apr 2017 15:05:45 GMT):
Yes

adamludvik (Wed, 12 Apr 2017 15:06:31 GMT):
Gotcha. Thanks

jsmitchell (Wed, 12 Apr 2017 15:36:32 GMT):
@adamludvik: we probably want to be able to specify a list of bind endpoints

jsmitchell (Wed, 12 Apr 2017 15:37:11 GMT):
you should be able to do `for endpoint in endpoints: bind(endpoint`

jsmitchell (Wed, 12 Apr 2017 15:37:11 GMT):
you should be able to do `for endpoint in endpoints: bind(endpoint)`

adamludvik (Wed, 12 Apr 2017 15:37:42 GMT):
As in `--component-endpoint` takes a list instead of one arg?

jsmitchell (Wed, 12 Apr 2017 15:38:10 GMT):
yes, and --network-endpoint

agunde (Wed, 12 Apr 2017 15:53:57 GMT):
Some new configurable logging capabilities have been added to Sawtooth. Documentation can be found here http://intelledger.github.io/sysadmin_guide/log_configuration.html

rbuysse (Wed, 12 Apr 2017 19:47:06 GMT):
a build of master just broke

rbuysse (Wed, 12 Apr 2017 19:47:27 GMT):
integration_test_1 | sawtooth_cli.exceptions.CliException: (503): The validator is not yet ready to be queried

rbuysse (Wed, 12 Apr 2017 19:48:00 GMT):
during test_poet_smoke

pschwarz (Wed, 12 Apr 2017 19:49:02 GMT):
I was noticing this locally - it seems periodic

pschwarz (Wed, 12 Apr 2017 19:49:12 GMT):
I'm up-to-date with master, as well

jjason (Wed, 12 Apr 2017 20:08:24 GMT):
I just encountered with some local testing as well.

jsmitchell (Wed, 12 Apr 2017 20:15:57 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/master/153/console

jsmitchell (Wed, 12 Apr 2017 20:16:09 GMT):
@zac: any clues?

zac (Wed, 12 Apr 2017 20:26:27 GMT):
That indicates that there is no genesis block

zac (Wed, 12 Apr 2017 20:26:59 GMT):
Or more specifically, no `chain_head_id` in the block store

zac (Wed, 12 Apr 2017 20:27:26 GMT):
(which is generally because you haven't created a genesis block)

zac (Wed, 12 Apr 2017 20:29:21 GMT):
Why that would happen in this case, I'm not sure

jsmitchell (Wed, 12 Apr 2017 20:29:51 GMT):
Can someone who is able to reproduce modify the failing test to add -vv to the validator args?

drozd (Wed, 12 Apr 2017 20:39:34 GMT):
locally I just got it for intkey javascript

jjason (Wed, 12 Apr 2017 21:11:34 GMT):
Is this error being emitted by the what is supposed to be the "genesis" validator? Is there, per chance, some race condition on startup where during the tests a non-genesis node is coming up and ready before the genesis node is ready to transfer the genesis block to it?

jjason (Wed, 12 Apr 2017 21:11:34 GMT):
Is this error being emitted by what is supposed to be the "genesis" validator? Is there, per chance, some race condition on startup where during the tests a non-genesis node is coming up and ready before the genesis node is ready to transfer the genesis block to it?

jjason (Wed, 12 Apr 2017 21:13:06 GMT):
Ran into a new error: ```

jjason (Wed, 12 Apr 2017 21:13:06 GMT):
Ran into a new error: ``` validator-0_1 | [20:36:39.473 ERROR chain] 'NoneType' object has no attribute 'encode' validator-0_1 | Traceback (most recent call last): validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/journal/chain.py", line 390, in run validator-0_1 | commit_new_chain = self._test_commit_new_chain() validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/journal/chain.py", line 323, in _test_commit_new_chain validator-0_1 | return fork_resolver.compare_forks(self._chain_head, self._new_block) validator-0_1 | File "/project/sawtooth-core/consensus/poet/core/sawtooth_poet/poet_consensus/poet_fork_resolver.py", line 200, in compare_forks validator-0_1 | block_cache=self._block_cache)) validator-0_1 | File "/project/sawtooth-core/consensus/poet/core/sawtooth_poet/poet_consensus/utils.py", line 233, in create_next_validator_state validator-0_1 | validator_info.transaction_id).block_num validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/journal/block_store.py", line 174, in get_block_by_transaction_id validator-0_1 | return self.__getitem__(self._block_store[txn_id]) validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/journal/block_store.py", line 44, in __getitem__ validator-0_1 | stored_block = self._block_store[key] validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/database/database.py", line 30, in __getitem__ validator-0_1 | return self.get(key) validator-0_1 | File "/project/sawtooth-core/validator/sawtooth_validator/database/lmdb_nolock_database.py", line 72, in get validator-0_1 | packed = txn.get(key.encode()) validator-0_1 | AttributeError: 'NoneType' object has no attribute 'encode' ```

jjason (Wed, 12 Apr 2017 21:14:23 GMT):
The problem is that during fork resolution, when the PoET fork resolver is trying to look up an enclosing block for a validator registry transaction (i.e., calling `get_block_by_transaction_id`), the transaction ID is `None` in the validator registry transaction.

adamludvik (Thu, 13 Apr 2017 13:32:11 GMT):
Do we need .service files for tp_intkey, rest_api, etc so we can start them with systemd? Or is there another plan for running them as services?

jsmitchell (Thu, 13 Apr 2017 18:01:44 GMT):
@jjason: can you open a DEBUG story for that if you're not on the case?

jjason (Thu, 13 Apr 2017 18:02:09 GMT):
Can do.

boydjohnson (Thu, 13 Apr 2017 18:02:30 GMT):
Do we have DEBUG stories? I thought we were putting DEFECT in the title.

jjason (Thu, 13 Apr 2017 18:02:34 GMT):
Currently wrapping up the PoET zTest story.

jjason (Thu, 13 Apr 2017 18:02:45 GMT):
I interpreted it to be DEFECT.

jjason (Thu, 13 Apr 2017 18:02:46 GMT):
;)

boydjohnson (Thu, 13 Apr 2017 18:02:59 GMT):
:)

jjason (Thu, 13 Apr 2017 18:12:38 GMT):
Story created and put into next sprint. Unassigned.

jjason (Thu, 13 Apr 2017 18:12:46 GMT):
@jsmitchell ^^^^^^^

jsmitchell (Thu, 13 Apr 2017 18:16:10 GMT):
👍🏻

jsmitchell (Thu, 13 Apr 2017 18:25:54 GMT):
Look, maybe I didn't say every little tiny syllable, no. But basically I said them, yeah.

boydjohnson (Thu, 13 Apr 2017 18:30:37 GMT):
:laughing:

jjason (Thu, 13 Apr 2017 18:34:05 GMT):
I have two boys....I am used to reading between the lines.

jjason (Thu, 13 Apr 2017 18:34:36 GMT):
Misdirection and outright omission are par for the course.

jaredcorduan (Thu, 13 Apr 2017 19:22:33 GMT):
Has joined the channel.

jjason (Thu, 13 Apr 2017 21:23:08 GMT):
@jsmitchell @boydjohnson @pschwarz Do we need to create a DEFECT story to investigate this? Seems like we are still getting failures with validators not ready to be queried. Is that a failure on the validator side or the PoET smoke test side? https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-331/1/console

boydjohnson (Thu, 13 Apr 2017 21:23:53 GMT):
It could also be option 3: the rest api.

boydjohnson (Thu, 13 Apr 2017 21:25:30 GMT):
@rbuysse You had mentioned this vis-a-vis the failure on master yesterday. Do we have a story for it?

rbuysse (Thu, 13 Apr 2017 21:25:57 GMT):
we do not have story for it yes.

rbuysse (Thu, 13 Apr 2017 21:25:57 GMT):
we do not have story for it yet.

rbuysse (Thu, 13 Apr 2017 21:26:38 GMT):
we've had 5 clean builds since.

jjason (Thu, 13 Apr 2017 21:45:45 GMT):
Okay. We have a story in next sprint. Unassigned.

drozd (Thu, 13 Apr 2017 22:17:49 GMT):
``` INFO:__main__:Bringing up with ['docker-compose', '-p', 'latest', '-f', '/project/sawtooth-core/integration/sawtooth_integration/docker/intkey-python-smoke.yaml', 'up', '--abort-on-container-exit'] Creating network "latest_default" with the default driver Creating latest_validator_1 Creating latest_tp_config_1 Creating latest_rest_api_1 Creating latest_tp_intkey_python_1 Creating latest_integration_test_1 Attaching to latest_validator_1, latest_tp_config_1, latest_rest_api_1, latest_tp_intkey_python_1, latest_integration_test_1 validator_1 | writing file: /etc/sawtooth/keys/validator.wif validator_1 | writing file: /etc/sawtooth/keys/validator.addr tp_config_1 | [22:06:45 DEBUG selector_events] Using selector: ZMQSelector validator_1 | Generating /var/lib/sawtooth/genesis.batch validator_1 | [22:06:46.256 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml validator_1 | [22:06:46.256 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.wif validator_1 | [22:06:46.259 INFO cli] config [path]: config_dir = "/etc/sawtooth" validator_1 | [22:06:46.260 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" validator_1 | [22:06:46.260 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" validator_1 | [22:06:46.261 INFO cli] config [path]: log_dir = "/var/log/sawtooth" validator_1 | [22:06:46.269 INFO genesis] Producing genesis block from /var/lib/sawtooth/genesis.batch integration_test_1 | test_intkey_smoke (test_intkey_smoke.TestIntkeySmoke) ... ERROR ... integration_test_1 | urllib.error.HTTPError: HTTP Error 503: The validator is not yet ready to be queried ... validator_1 | [22:06:46.297 INFO genesis] Genesis block created: 4f664665(0, S:708ca7fb, P:00000000) validator_1 | [22:06:46.304 INFO processor_handlers] registered transaction processor: connection_id=469003765653bed7885fbc96183445243430bb4c02da7aaa572499130c7c351801446ef5a5116b07f2e5e5412ab0b1b513ed2212681813b4eda4a21b13ad4108, family=sawtooth_config, version=1.0, encoding=application/protobuf, namespaces=['000000'] tp_config_1 | [22:06:46 INFO core] register attempt: OK validator_1 | [22:06:46.324 INFO chain] Chain controller initialized with chain head: 4f664665(0, S:708ca7fb, P:00000000) validator_1 | [22:06:46.328 INFO publisher] Now building on top of block: 4f664665(0, S:708ca7fb, P:00000000) validator_1 | [22:06:46.415 INFO processor_handlers] registered transaction processor: connection_id=c3d62bf45aadae3c1ce7f0fdc8fb2a0cd15dd4b481e783c788a1a5d7af83a489f52dc0d8ddece88855076df777e6794cdb7164705c22380ad64b51d81bdf68f7, family=intkey, version=1.0, encoding=application/cbor, namespaces=['1cf126'] tp_intkey_python_1 | [22:06:46.420 INFO core] register attempt: OK latest_integration_test_1 exited with code 1 ```

drozd (Thu, 13 Apr 2017 22:18:01 GMT):
failure on intkey python smoke

drozd (Thu, 13 Apr 2017 22:18:25 GMT):
it looks like the validator got queried just before the genesis block was created

jjason (Thu, 13 Apr 2017 22:27:56 GMT):
So, maybe the test can be more resilient in that if it gets a "not ready" it waits a little bit and tries again????

jjason (Thu, 13 Apr 2017 22:29:16 GMT):
PR 333 failed build for same reason as what I mentioned above for PR 331.

drozd (Thu, 13 Apr 2017 22:52:48 GMT):
or perhaps a wait-and-try-again can be added to the rest client?

drozd (Thu, 13 Apr 2017 22:52:53 GMT):
@zac

ReedCao (Fri, 14 Apr 2017 02:14:35 GMT):
after I run /project/sawtooth-core/bin/build_python, I got an error --- Running protogen --- Error: protoc not found.

jsmitchell (Fri, 14 Apr 2017 02:16:35 GMT):
@ReedCao are you inside the vagrant vm? It should have all the prerequisites installed.

ReedCao (Fri, 14 Apr 2017 02:47:12 GMT):
@jsmitchell ye, I am inside vagrant vm

ReedCao (Fri, 14 Apr 2017 03:32:23 GMT):
don't know why protoc is not there. I have tried to run protoc, I got info that I should install it first

ReedCao (Fri, 14 Apr 2017 03:35:07 GMT):
The program 'protoc' is currently not installed. You can install it by typing: sudo apt install protobuf-compiler

zac (Fri, 14 Apr 2017 03:57:08 GMT):
@drozd Is there a use case for wait-then-try-again outside of development?

zac (Fri, 14 Apr 2017 03:58:06 GMT):
Normally the window where a validator is up but has no genesis would be very narrow relative to its life. I think leaving it at a 503 is probably the appropriate response.

ReedCao (Fri, 14 Apr 2017 07:14:54 GMT):
I can run protoc in command line, however when running /project/sawtooth-core/bin/build_python, it will report Error: protoc not found.

ReedCao (Fri, 14 Apr 2017 09:47:04 GMT):
when run protogen, it will Error: protoc not found. however, the protoc is in /usr/bin and it is in the path.

sklymenko (Fri, 14 Apr 2017 12:00:30 GMT):
Has joined the channel.

jsmitchell (Fri, 14 Apr 2017 13:27:02 GMT):
@ReedCao: that is very strange.

jsmitchell (Fri, 14 Apr 2017 13:27:51 GMT):
```try: from grpc.tools.protoc import main as _protoc except ImportError: print("Error: protoc not found.") exit(1)```

Dan (Fri, 14 Apr 2017 13:28:02 GMT):
@ReedCao its possible your vagrant install hiccup'd there and it didn't install as expected.

jsmitchell (Fri, 14 Apr 2017 13:28:02 GMT):
here is where that is getting printed out

jsmitchell (Fri, 14 Apr 2017 13:28:54 GMT):
it looks like you are probably missing the protoc python package

jsmitchell (Fri, 14 Apr 2017 13:29:13 GMT):
I would suggest doing a vagrant destroy followed by a fresh vagrant up

Dan (Fri, 14 Apr 2017 13:34:07 GMT):
Probably safest to do as @jsmitchell recommends and destroy in case there were other install glitches, but I think protoc should have been installed using the script: `tools/plugins/install_grpc.sh`.

Dan (Fri, 14 Apr 2017 15:48:04 GMT):
@drozd if you are experimenting with cutting out sleeps in the integration tests please be cautious with respect to transient failures on jenkins can slow down the PR process.

amundson (Fri, 14 Apr 2017 18:46:40 GMT):
yeah, so protoc is different than the grpc protoc wrapper, so that's a bad error message. It should say "Error: grpc.tools.protoc not found"

adamludvik (Fri, 14 Apr 2017 20:05:37 GMT):
A PR has been merged to fix the issues with the build.

pschwarz (Fri, 14 Apr 2017 20:06:30 GMT):
Those with outstanding PR's should rebase

jsmitchell (Fri, 14 Apr 2017 20:29:34 GMT):
i wouldn't really call any of these _outstanding_

pschwarz (Fri, 14 Apr 2017 20:32:29 GMT):
>:<

pschwarz (Fri, 14 Apr 2017 20:32:29 GMT):
>:(

pschwarz (Fri, 14 Apr 2017 20:32:29 GMT):
:angry:

pschwarz (Fri, 14 Apr 2017 20:33:33 GMT):
That's the right one - this doesn't quite translate ascii faces correctly...

jjason (Fri, 14 Apr 2017 20:41:16 GMT):
Ouch

adamludvik (Fri, 14 Apr 2017 20:58:50 GMT):
Not ready to do a PR on this, but could use some feedback on whether this is a good approach for running sawtooth as a service: https://github.com/aludvik/sawtooth-core/tree/systemd_services

adamludvik (Fri, 14 Apr 2017 20:58:50 GMT):
Not ready to do a PR on this, but could use some feedback on whether this is a good approach for running sawtooth as a service: https://github.com/aludvik/sawtooth-core/commits/systemd_services

ReedCao (Mon, 17 Apr 2017 02:23:57 GMT):
@jsmitchell have tried to destroy and up again.

ReedCao (Mon, 17 Apr 2017 02:24:09 GMT):
got this log.

ReedCao (Mon, 17 Apr 2017 02:26:56 GMT):

Message Attachments

jsmitchell (Mon, 17 Apr 2017 02:28:56 GMT):
Looks like your machine can't reach keyserver.ubuntu.com

jsmitchell (Mon, 17 Apr 2017 02:29:11 GMT):
Are you behind a filtering proxy?

ReedCao (Mon, 17 Apr 2017 02:30:32 GMT):
@jsmitchell just noticed that too. thanks a lot!

ReedCao (Mon, 17 Apr 2017 02:49:56 GMT):
still get this error:

ReedCao (Mon, 17 Apr 2017 02:49:57 GMT):
==> default: gpg: requesting key 10FB5F63 from hkp server keyserver.ubuntu.com ==> default: gpg: keyserver timed out ==> default: gpg: keyserver receive failed: keyserver error ==> default: + exit 1

Dan (Mon, 17 Apr 2017 02:54:08 GMT):
Which OS are you on @ReedCao ?

ReedCao (Mon, 17 Apr 2017 02:55:47 GMT):
win10

Dan (Mon, 17 Apr 2017 03:02:42 GMT):
I'm using gitbash (aka mingw64) for my command shell on win8. I have an ssh config file in `~/.ssh/config` with settings like these: ```Host=* ProxyCommand=/mingw64/bin/connect -5 -S myproxy.company.com:8080 %h %p StrictHostKeyChecking=no```

ReedCao (Mon, 17 Apr 2017 03:05:31 GMT):
so this key server is using different variable for proxy?

Dan (Mon, 17 Apr 2017 03:10:10 GMT):
I don't think I have an environment variable set for proxy. I do have ssh configured with those proxy settings though.

ReedCao (Mon, 17 Apr 2017 03:11:09 GMT):
I am using gitshell

ReedCao (Mon, 17 Apr 2017 03:11:42 GMT):
can it work the same way? however I have not found the configuration file under the ~/.ssh/config

ReedCao (Mon, 17 Apr 2017 03:15:31 GMT):
I can connect to other server than this keyserver.ubuntu.com

jsmitchell (Mon, 17 Apr 2017 03:16:24 GMT):
What message do you get in your web browser if you try to reach that server?

ReedCao (Mon, 17 Apr 2017 03:17:22 GMT):
it will load the page successfully

ReedCao (Mon, 17 Apr 2017 03:18:21 GMT):
I have set http_proxy and https_proxy in git shell, which is the same proxy server I am using in browser

jsmitchell (Mon, 17 Apr 2017 03:20:41 GMT):
The VM will also need the proxy set correctly

ReedCao (Mon, 17 Apr 2017 03:23:29 GMT):
how can I set the proxy for VM?

ReedCao (Mon, 17 Apr 2017 03:24:15 GMT):
ye, you are right, so the keyserver.ubuntu.com is being connected in VM?

jsmitchell (Mon, 17 Apr 2017 03:24:37 GMT):
Yes

ReedCao (Mon, 17 Apr 2017 03:26:00 GMT):
How can I set this proxy? run the VM and configure it ?

jsmitchell (Mon, 17 Apr 2017 03:26:45 GMT):
From the host, try "vagrant plugin install vagrant-proxyconf"

ReedCao (Mon, 17 Apr 2017 03:27:46 GMT):
I think I have seen this line in log. Install: vagrant plugin install vagrant-proxyconf

Dan (Mon, 17 Apr 2017 03:46:52 GMT):
to use ssh with proxy you have to create that config file. I'm not certain if gitshell uses that but worth a try.

ReedCao (Mon, 17 Apr 2017 06:41:55 GMT):
tried " vagrant plugin install vagrant-proxyconf" now get another error. it responsed "invalid HTTP proxy (proxy:8080): unsupported URI"

Dan (Mon, 17 Apr 2017 12:52:53 GMT):
@ReedCao that's progress at least :). I think its just a matter of getting the correct proxy information configured now. Before getting into that though, since you are on windows 10 you should be able to use the Docker instructions in the tutorial. If you want to make transaction logic that should be a sufficient environment. On the other hand, if you want to hack on the core system then you'll want to sort out this vagrant / proxy issue... If you have a proxy set in your windows environment variables, using a cmd prompt this command should show you what is set `set | findstr proxy`. If you were using the example ssh config I gave above, the port 8080 is an example, but your proxy port may be different.

toddojala (Mon, 17 Apr 2017 14:48:27 GMT):
@ReedCao Let us know how you fare. If we need to get more documentation on the proxy stuff, we should. We will be updating proxy instructions soon (in the next week or so).

Dan (Mon, 17 Apr 2017 16:34:44 GMT):
It might also be good if we can clarify use of docker vs. vagrant. Like .. If you are someone interested in writing transaction logic here's docker instructions. And its known good on OS X, Win10, and Ubuntu. Or if you are interested in modifying sawtooth internals then we recommend vagrant. etc.

Dan (Mon, 17 Apr 2017 20:10:58 GMT):
It's so quiet today :cricket: :cricket:

Dan (Mon, 17 Apr 2017 20:11:18 GMT):
(Those are crickets ^ )

toddojala (Mon, 17 Apr 2017 20:11:29 GMT):
Spring fever?

ReedCao (Tue, 18 Apr 2017 01:42:27 GMT):
@toddojala great! at least it should include the instruction to "install proxyconf" for vagrant.

gregnotso (Tue, 18 Apr 2017 12:43:14 GMT):
Has joined the channel.

cianx (Tue, 18 Apr 2017 14:20:13 GMT):
what is this error from run_tests ```[---Running validator tests---] /project/sawtooth-core ERROR:__main__:The container 'latest_validator_1' which would be created by this test already exists! Do: `run_docker_test --clean ./validator/tests/unit_validator.yaml` to remove the container, or use docker manually. ```

cianx (Tue, 18 Apr 2017 14:20:13 GMT):
```[---Running validator tests---] /project/sawtooth-core ERROR:__main__:The container 'latest_validator_1' which would be created by this test already exists! Do: `run_docker_test --clean ./validator/tests/unit_validator.yaml` to remove the container, or use docker manually. ```

cianx (Tue, 18 Apr 2017 14:20:37 GMT):
@adamludvik what is this error from run_tests ?

cianx (Tue, 18 Apr 2017 14:21:01 GMT):
the suggested 'run_docker_test --clean ./validator/tests/unit_validator.yaml' command generates an error

rbuysse (Tue, 18 Apr 2017 14:21:05 GMT):
looks like either there was a previous test that didn't exit cleanly or some tests are tunning

cianx (Tue, 18 Apr 2017 14:21:18 GMT):
```$ run_docker_test --clean ./validator/tests/unit_validator.yaml /project/sawtooth-core ERROR:__main__:Test service 'integration_test' does not exist in compose file: './validator/tests/unit_validator.yaml' ```

cianx (Tue, 18 Apr 2017 14:21:51 GMT):
How can I recover from that?

jsmitchell (Tue, 18 Apr 2017 14:22:10 GMT):
what does `docker ps` say?

cianx (Tue, 18 Apr 2017 14:22:24 GMT):
```$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ```

rbuysse (Tue, 18 Apr 2017 14:22:24 GMT):
add -a ^

rbuysse (Tue, 18 Apr 2017 14:22:47 GMT):
sorry, that's just '-a'. no caret.

cianx (Tue, 18 Apr 2017 14:22:52 GMT):
```$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4dcba9321f41 sawtooth-dev-test:latest "nose2-3 -v -s /pr..." 4 days ago Exited (255) 4 days ago 8080/tcp, 40000/tcp latest_validator_1 ```

rbuysse (Tue, 18 Apr 2017 14:23:17 GMT):
you can do ``docker rm 4dcba9321f41``

rbuysse (Tue, 18 Apr 2017 14:23:25 GMT):
(I don't know rocketchat syntax)

cianx (Tue, 18 Apr 2017 14:24:59 GMT):
that looks like it did it, thanks.

toddojala (Tue, 18 Apr 2017 14:35:22 GMT):
@ReedCao Noted.

adamludvik (Tue, 18 Apr 2017 14:35:31 GMT):
For reference, `run_docker_test --clean ./validator/tests/unit_validator.yaml -s validator` would also have worked. The problem is that `unit_validator.yaml` only has a validator service, so you have to tell `run_docker_test` which service is the test service.

Dan (Tue, 18 Apr 2017 14:56:59 GMT):
Room name changed to: sawtooth by Dan

cianx (Tue, 18 Apr 2017 15:53:03 GMT):
@adamludvik can we get the error message suggested actions corrected?

Dan (Tue, 18 Apr 2017 15:54:34 GMT):
Room name changed to: sawtoothlake by Dan

adamludvik (Tue, 18 Apr 2017 16:10:57 GMT):
Yeah

cianx (Tue, 18 Apr 2017 16:50:10 GMT):
@jjason How reliable are the poet integration tests? I am trying to figure out if I broke something or I am just unlucky.

jjason (Tue, 18 Apr 2017 16:54:32 GMT):
Oh, it's definitely you ;)

jjason (Tue, 18 Apr 2017 16:54:37 GMT):
What kind of failures?

Dan (Tue, 18 Apr 2017 17:38:18 GMT):
Command shell is another variable to keep in mind with supporting vagrant and docker across OS's. On windows Gitbash, cmd, powershell, and cygwin are all possibilities and will behave differently in accessing proxy variables etc.

cianx (Tue, 18 Apr 2017 19:33:36 GMT):
@jsmitchell @boydjohnson Any chance the thread exhaustion bug crept back in? I am seeing failures where the validators in the poet smoke test did not process all of the blocks, Jamie had me set the executing_threadpool to 100 and it looks like that has fixed the problem. I am rerunning now to verify.

cianx (Tue, 18 Apr 2017 19:33:42 GMT):
```- self._executing_threadpool = ThreadPoolExecutor(max_workers=5) + self._executing_threadpool = ThreadPoolExecutor(max_workers=100)```

cianx (Tue, 18 Apr 2017 19:34:02 GMT):
in sawtooth_validator/execution/executor.py

boydjohnson (Tue, 18 Apr 2017 19:36:35 GMT):
Do we know if there is a difference between master and your branch with this behavior? The original problem was solved by calling scheduler.cancel() any time the scheduler would never be finalized.

cianx (Tue, 18 Apr 2017 19:37:57 GMT):
let me check, that could not be happening in my branch.

jaredcorduan (Tue, 18 Apr 2017 20:30:09 GMT):
Are there plans to move the marketplace transaction family/processor to version 0.8? (like in the sdk/examples, etc) thanks!

zac (Tue, 18 Apr 2017 20:33:02 GMT):
There are no immediate plans

zac (Tue, 18 Apr 2017 20:33:24 GMT):
It is a substantial task unfortunately

boydjohnson (Tue, 18 Apr 2017 20:33:30 GMT):
I thought there were plans but not in this sprint or the next.

zac (Tue, 18 Apr 2017 20:33:57 GMT):
But, we do feel Marketplace is a great illustration, so we would like to find time for it

zac (Tue, 18 Apr 2017 20:34:36 GMT):
Can you really call it a plan if it is not in this sprint or the next?

boydjohnson (Tue, 18 Apr 2017 20:35:04 GMT):
I have seen it on a Gantt chart...

zac (Tue, 18 Apr 2017 20:35:41 GMT):
I don't think we are committed to doing it at this point

zac (Tue, 18 Apr 2017 20:35:53 GMT):
But we also aren't committed to _not_ doing it

zac (Tue, 18 Apr 2017 20:36:42 GMT):
Someone who pays more attention during planning meetings can feel free to correct me though

zac (Tue, 18 Apr 2017 20:36:42 GMT):
Someone who pays more attention during planning meetings than me should feel free to correct my impression though

zac (Tue, 18 Apr 2017 20:36:42 GMT):
Someone who pays more attention than me during planning meetings should feel free to chime in though

mfford (Tue, 18 Apr 2017 21:27:41 GMT):
The next steps for MarketPlace are being discussed in planning

kelly_ (Tue, 18 Apr 2017 21:30:11 GMT):
@jaredcorduan do you have a need for mktplace?

jaredcorduan (Wed, 19 Apr 2017 00:12:55 GMT):
ah ok, thank you for letting me know. I am currently upgrading our transaction processor from sawtooth version 0.7 to 0.8, and we de use the marketplace. (For what we are developing at PokitDok, DokChain.) I just wanted to check with you all before we upgraded it ourselves. I really like version 0.8!

jaredcorduan (Wed, 19 Apr 2017 00:12:55 GMT):
ah ok, thank you for letting me know. I am currently upgrading our transaction processor from sawtooth version 0.7 to 0.8, and we do use the marketplace. (For what we are developing at PokitDok, DokChain.) I just wanted to check with you all before we upgraded it ourselves. I really like version 0.8!

Dan (Wed, 19 Apr 2017 00:13:19 GMT):
that's great to hear!

Dan (Wed, 19 Apr 2017 00:14:42 GMT):
There's definitely interest in bringing marketplace forward but no one has committed yet when. Would be a pretty sweet PR if you worked that out.

jaredcorduan (Wed, 19 Apr 2017 00:28:18 GMT):
ok, I'll let you know if we decide to do it.

kelly_ (Wed, 19 Apr 2017 00:28:27 GMT):
If you are thinking about upgrading it we probably have some thoughts to share on how to simplify it

kelly_ (Wed, 19 Apr 2017 00:28:42 GMT):
The original design with holdings, assets, liabilities, etc is a little complex :)

jaredcorduan (Wed, 19 Apr 2017 00:29:25 GMT):
ah :)

jaredcorduan (Wed, 19 Apr 2017 00:30:51 GMT):
I'll ask the others at PokitDok their thoughts on what all we really need and see what they think best

kelly_ (Wed, 19 Apr 2017 00:43:09 GMT):
Let us know if you need help or want to collaborate

PacoEcotrust (Wed, 19 Apr 2017 08:00:40 GMT):
Hi, I am in this step----->docker-compose -f docker/compose/sawtooth-demo.yaml up-------------------->and have problems with the version of Docker-compose. Is possible to install one concrete version of it?

PacoEcotrust (Wed, 19 Apr 2017 08:00:40 GMT):
Hi, I am in this step----->docker-compose -f docker/compose/sawtooth-demo.yaml up-------------------->and have problems with the version of Docker-compose. Is possible to install one concrete version of it with the idea to resolve the problem?

kpkulkarni (Wed, 19 Apr 2017 13:27:49 GMT):
Has joined the channel.

kpkulkarni (Wed, 19 Apr 2017 13:29:57 GMT):
Sawtooth gurus, Is there any tutorial to create a executable python/shell script and deploy it on the blockchain ?

toddojala (Wed, 19 Apr 2017 14:24:53 GMT):
@kpkulkarni Could you be more specific? Do you want to create a client, or a new transaction family, etc.?

toddojala (Wed, 19 Apr 2017 14:28:39 GMT):
@kpkulkarni Please take a look at our main documentation at: http://intelledger.github.io/ and run through the tutorials. If you have question that is not answered, let us know here. In the repository, the SDKs for python, javascript and java are also available: https://github.com/hyperledger/sawtooth-core/tree/master/sdk

Dan (Wed, 19 Apr 2017 14:38:22 GMT):
@amundson is `extensions` meant to continue in the new layout or is that all content to be migrated/eliminated?

zac (Wed, 19 Apr 2017 15:06:53 GMT):
A big refactor to how the REST API sends back errors is underway. The biggest feature is that each individual error will have a unique fixed integer code, to make handling them easier. You can view the PR here if you are curious: https://github.com/hyperledger/sawtooth-core/pull/354

zac (Wed, 19 Apr 2017 15:07:28 GMT):
My question for everyone involved is, has anyone already written code that parses errors using something other than the HTTP status?

zac (Wed, 19 Apr 2017 15:09:03 GMT):
The HTTP status codes will all stay the same, but the response body is switching from just text to a JSON object, so if anyone used that text at all, their code will break.

zac (Wed, 19 Apr 2017 15:09:42 GMT):
I only know of one instance that is, and I am fixing it as part of my PR, but I want to make sure than aren't any other instances I'm missing.

pschwarz (Wed, 19 Apr 2017 15:11:44 GMT):
@kpkulkarni are you wanting to effectively have a python smart contract?

jsmitchell (Wed, 19 Apr 2017 15:16:28 GMT):
@kpkulkarni: check out the xo transaction family. It's a simple example written in python. https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/processor/handler.py

agunde (Wed, 19 Apr 2017 16:25:00 GMT):
The intkey examples have been updated to use the rest api instead of the stream class. This means that if you wish to use intkey load or intkey workload you will need to start up the rest_api for the validator.

Dan (Wed, 19 Apr 2017 18:41:46 GMT):
Per bandit and @dhuseby note more secure manner for loading yaml updated in @rbuysse's PR https://github.com/hyperledger/sawtooth-core/pull/352

choas (Wed, 19 Apr 2017 21:07:32 GMT):
Has left the channel.

kpkulkarni (Thu, 20 Apr 2017 02:39:00 GMT):
Thanks all for valuable comments. I shall read the sawtooth docs and get back soon

benjaminbollen (Thu, 20 Apr 2017 11:43:09 GMT):
Has joined the channel.

betolive (Thu, 20 Apr 2017 14:47:18 GMT):
Has joined the channel.

Dan (Thu, 20 Apr 2017 16:04:40 GMT):
if there's no use case for a no-op transaction then I'd say we don't support that.

boydjohnson (Thu, 20 Apr 2017 16:39:19 GMT):
So just throwing my 2 cents in on this, I *could imagine* a use for reading from state but not writing to state. Where a transaction checks for a value and if it is there it doesn't throw an error, but doesn't write to state.

boydjohnson (Thu, 20 Apr 2017 16:45:43 GMT):
This would limit reads (messages sent between tp and context manager) where a many txns in a batch need to depend on a value being there.

agunde (Thu, 20 Apr 2017 17:04:26 GMT):
The above idea could create a no-op batch (only a no-op txn), which could lead to a no-op block (no state change) which seems bad and could break assumptions about block and state_root_hashes. It seems like a slippery slope.

amundson (Thu, 20 Apr 2017 17:30:02 GMT):
reconciliation txns might result in no updates if there happens to be nothing to do

agunde (Thu, 20 Apr 2017 17:39:55 GMT):
@amundson Can you explain what you mean by reconciliation txn?

amundson (Thu, 20 Apr 2017 17:44:22 GMT):
I'm thinking like in bond, where we might have a transaction which matches orders and quotes

agunde (Thu, 20 Apr 2017 17:59:08 GMT):
So if we had a transaction which matches orders and quotes but does not find any that could be matched, it would not change state.Okay, therefore you are for allowing no-op txn? @amundson

jsmitchell (Thu, 20 Apr 2017 18:01:24 GMT):
Well, in bond as currently implemented it's essentially a client process that is generating a number of order/quote match txns

jsmitchell (Thu, 20 Apr 2017 18:01:48 GMT):
The generated txns always modify state or fail in that example

agunde (Thu, 20 Apr 2017 18:02:44 GMT):
@jsmitchell correct. I was thinking about it as if it was done differently (kicked off by a transaction)

agunde (Thu, 20 Apr 2017 18:03:29 GMT):
I could see an author of transaction processor implementing something that way.

jsmitchell (Thu, 20 Apr 2017 18:48:11 GMT):

Message Attachments

jsmitchell (Thu, 20 Apr 2017 19:19:24 GMT):
That PDF is a presentation I gave last night at the Enterprise Blockchain Meetup here in Minneapolis

Dan (Thu, 20 Apr 2017 21:01:54 GMT):
I'm not sure if I'm really tired or if my vagrant is messed up...

Dan (Thu, 20 Apr 2017 21:02:20 GMT):
sawtooth-core should be at `/project/sawtooth-core` ?

Dan (Thu, 20 Apr 2017 21:10:20 GMT):
yes yes it should, dan.

Dan (Thu, 20 Apr 2017 21:10:28 GMT):
Thanks dan.

Dan (Thu, 20 Apr 2017 21:11:20 GMT):
that directory isn't getting mapped on two of my systems (one linux, one windows). going to destroy and refresh vagrant and see if it gets cleared up.

Dan (Thu, 20 Apr 2017 21:55:18 GMT):
Not sure what was going on but my windows env is healthy again and linux is still in the long d/l process.

amundson (Thu, 20 Apr 2017 21:58:32 GMT):
@agunde - I'm not for or against the no-op transaction, just providing a potential "real" use-case

foobarometer (Fri, 21 Apr 2017 05:43:10 GMT):
I do have to say the 0.8 documentation makes more sense than 0.7 (especially the ordering). Thx for updating it!

Dan (Fri, 21 Apr 2017 13:16:51 GMT):
thanks for the feedback :) (and nice reorganizing @amundson)

Dan (Fri, 21 Apr 2017 14:00:48 GMT):
I'm curious what strategies people use for reviewing large PRs. We've had several lately.. in fact most of this calendar year given the large updates to the sawtooth. Using @jjason's recent PR as an example https://github.com/hyperledger/sawtooth-core/pull/359/ There are 15 commits and ~1500 loc changed. (This is an appropriate size for this feature branch. But it's large for diff based approaches like github's views) Sometimes I walk the commits individually and sometimes I look at the full diff of the end result. I gather some people go right to running and testing it. Walking commits is sometimes awkward because its not obvious if the changes get obviated or improved by the 15th commit. On the other hand, looking at the full diff you see different ideas blended together so the intents of each change aren't necessarily obvious to decipher. When a file has substantially changed it's easier for me to pull up the whole file in my editor and review it as though its entirely new (with glances back to the diff). What do other people do?

jsmitchell (Fri, 21 Apr 2017 14:01:29 GMT):
I go commit by commit

jsmitchell (Fri, 21 Apr 2017 14:01:38 GMT):
and I appreciate smaller PRs. :)

boydjohnson (Fri, 21 Apr 2017 14:06:16 GMT):
I think the commit by commit approach is the best, and it is a good idea for people to group code changes into commits that mean something specific for each commit.

toddojala (Fri, 21 Apr 2017 14:09:17 GMT):
@Dan I'm more of a novice with git/github, but I have the same problem. I have to review the whole file if there are a lot of changes. I am starting to look at individual commits more, too. But I myself could benefit from some strategies that others use.

zac (Fri, 21 Apr 2017 14:24:38 GMT):
As a PR-maker I try to create commits that not only encompass one idea, but that are functional and make sense on their own. I ask myself "What if the repo got rolled back to this commit, and no longer had my whole PR?" Hopefully that addresses the "changes might get obviated" problem a bit. They still might, but they should make sense on their own too, so feel free to leave a comment.

boydjohnson (Fri, 21 Apr 2017 14:27:11 GMT):
Yeah, definitely, because it wouldn't just be if master rolled back to that point -- which is unlikely -- but if a person is doing a git bisect or cherry picking commits to another branch the commits being focused and self-contained is important.

jjason (Fri, 21 Apr 2017 14:55:10 GMT):
@dan w.r.t., recent PR (or recent PRs), I chose to focus commits on targeted changes. I could have squashed related ones down together to make it be only a few larger ones. I was under the impression that it was better to have these smaller, targeted commits. I wish that git could convey intent - for example, even though there are approximately 1500loc changed, it is probably more like a few hundred new lines of code (including unit tests) and the rest is refactoring to new design, so the code is not new, just lives somewhere else.

jjason (Fri, 21 Apr 2017 14:57:10 GMT):
@zac @boydjohnson I too like the idea that a commit can be rolled back to, but let me ask a question. A few weeks ago when I was working with @amundson on moving all of the PoET consensus stuff to its own packages, it was recommended to me that the first commit be simply moving the files, then follow-on commits fixing up scripts, etc., that referenced the files. Obviously if someone cherry-picked the move but not the script fix-up, then things are broken. I am getting conflicting information.

jjason (Fri, 21 Apr 2017 14:57:10 GMT):
@zac @boydjohnson I too like the idea that a commit can be rolled back to, but let me put forth an example. A few weeks ago when I was working with @amundson on moving all of the PoET consensus stuff to its own packages, it was recommended to me that the first commit be simply moving the files, then follow-on commits fixing up scripts, etc., that referenced the files. Obviously if someone cherry-picked the move but not the script fix-up, then things are broken. I am getting conflicting information.

jjason (Fri, 21 Apr 2017 14:58:42 GMT):
I think part of my confusion around the PR process is that there is no "group standard" at least that I am aware of. As someone newer to git, I end up pinging someone more knowledgeable, but depending upon whom I ask I get slightly different guidance.

boydjohnson (Fri, 21 Apr 2017 15:01:07 GMT):
Yeah, my thoughts would be that a commit that moves the files would also include the import updates, too. We should come to some group understanding on how commits should be structured.

jjason (Fri, 21 Apr 2017 15:02:42 GMT):
Agreed.

jjason (Fri, 21 Apr 2017 15:06:51 GMT):
So, while we are at it, I have another question. How do people handle "stacked" PRs - and what I mean by that is suppose I submit PR 1 and then start working on PR 2, which builds on/requires PR 1. I get PR 2 work finished before PR 1 has been accepted/merged. Typically I have been holding PR 2 until PR 1's merge and then rebase PR 2 and submit it. I could submit PR 2 before PR 1 is done.

jsmitchell (Fri, 21 Apr 2017 15:07:45 GMT):
@jjason: if you base PR 2 on the branch from PR 1, and PR 1 gets merged, github will do the right thing

jsmitchell (Fri, 21 Apr 2017 15:08:05 GMT):
those commits will 'disappear' from PR 2 because they are now in master

jsmitchell (Fri, 21 Apr 2017 15:08:26 GMT):
of course, if you push fresh commits to PR 1's branch, you will need to rebase PR 2's branch

jjason (Fri, 21 Apr 2017 15:09:00 GMT):
I assumed that part (git is all powerful and all knowing ;) ). That is one reason why I hold back PR 2 - so I can rebase the final PR 1 merge before submitting.

boydjohnson (Fri, 21 Apr 2017 15:10:01 GMT):
Also there should probably be a comment in the 2nd PR that it is based on the first PR.

drozd (Fri, 21 Apr 2017 15:14:45 GMT):
Another issue to consider is reducing clutter in the commit log. Consider my recent PR https://github.com/hyperledger/sawtooth-core/pull/347, which consists of a single commit "Move TP tests to TP directories". When I was working on it, I had four commits: "Move intkey TP tests", "Move xo TP test", "Move config TP test", "Move validator registry TP test". You probably got bored and skipped to the end of that list, and I figure anyone looking at the master commit list would do the same. It's like "I don't need your life story, just tell me what it does. Oh, it moves all the TP tests? Great."

Dan (Fri, 21 Apr 2017 15:26:21 GMT):
To be clear @jjason I wasn't being critical of your PR. I took it as an example of something that was necessarily large and yet well organized.

Dan (Fri, 21 Apr 2017 15:26:51 GMT):
Efficient strategies for handling large PRs seem useful for the team to figure out.

jsmitchell (Fri, 21 Apr 2017 15:26:53 GMT):
@jjason is midas

jsmitchell (Fri, 21 Apr 2017 15:27:12 GMT):
:star2:

jsmitchell (Fri, 21 Apr 2017 15:27:33 GMT):
he's like the anti-Lindelof

jjason (Fri, 21 Apr 2017 15:29:38 GMT):
@dan No worries. I know you weren't picking on me specifically, but wanted to give rationale as well as give some feedback on the frustrations I encountered with the PR process.

boydjohnson (Fri, 21 Apr 2017 15:30:02 GMT):
Somehow my rebase and rebuild on my PR missed the js tp test failure. So, 3 commit PR seeks friendly reviewers for short-term commitment: https://github.com/hyperledger/sawtooth-core/pull/295.

zac (Fri, 21 Apr 2017 15:36:04 GMT):
@drozd Yeah, I would also group all of the move commits into one. Even though technically that isn't an atomic change, it is a very logical way to group the changes in my mind

zac (Fri, 21 Apr 2017 15:36:25 GMT):
Although I also wouldn't reject a PR that had broken up the file moves the way you described

Dan (Fri, 21 Apr 2017 15:53:21 GMT):
@jsmitchell is just giving you praise because you edit your commit messages in vim.

Dan (Fri, 21 Apr 2017 15:53:51 GMT):
As evidenced by: https://github.com/hyperledger/sawtooth-core/pull/359/commits/d0ec41453316beb00b0a4789378fab4219b59d48

jsmitchell (Fri, 21 Apr 2017 15:54:20 GMT):
lol

boydjohnson (Fri, 21 Apr 2017 15:54:43 GMT):
I'm going to modify my default git editor to be pycharm.

boydjohnson (Fri, 21 Apr 2017 15:55:24 GMT):
jk

jsmitchell (Fri, 21 Apr 2017 15:55:58 GMT):
I remember the day that it was clear Boyd was beyond saving

jjason (Fri, 21 Apr 2017 16:03:21 GMT):
D'Oh!!!

drozd (Fri, 21 Apr 2017 16:40:54 GMT):
related git squash discussion: https://news.ycombinator.com/item?id=11407289

jjason (Fri, 21 Apr 2017 16:45:56 GMT):
:) I read the first post and response and the first thing that popped into my head was "religious war". However, I can see utility to keeping small targeted commits in the PR and then squashing them into master into something more "atomic".

drozd (Fri, 21 Apr 2017 16:49:31 GMT):
One comment argues: "If you really want to 'see how the sausage is made', why not log literally every keystroke? But that would be insane, so clearly we can see the need for finding the appropriate level of granularity." The response comment says: "Actually, yes, I _would_ like to see every keystroke logged, it would be very informative!"

drozd (Fri, 21 Apr 2017 16:52:18 GMT):
from https://git-scm.com/book/en/v2/Git-Branching-Rebasing: ``` One point of view on this is that your repository’s commit history is a record of what actually happened. It’s a historical document, valuable in its own right, and shouldn’t be tampered with. From this angle, changing the commit history is almost blasphemous; you’re lying about what actually transpired. So what if there was a messy series of merge commits? That’s how it happened, and the repository should preserve that for posterity. The opposing point of view is that the commit history is the story of how your project was made. You wouldn’t publish the first draft of a book, and the manual for how to maintain your software deserves careful editing. This is the camp that uses tools like rebase and filter-branch to tell the story in the way that’s best for future readers. ```

jjason (Fri, 21 Apr 2017 16:55:09 GMT):
So, I am going to let smarter git users figure what is the "right' thing to do. If there is a cage match in MSP, please live stream it. ;)

zac (Fri, 21 Apr 2017 19:28:52 GMT):
I have always been more storyteller than historian

boydjohnson (Fri, 21 Apr 2017 19:45:39 GMT):
Yeah, I would have to agree with the storyteller side vs the historian side. While it might be a "interesting" part of the history of a PR that I forgot to do something and made a fixup commit, it really has little to do with the changes.

boydjohnson (Fri, 21 Apr 2017 19:45:39 GMT):
Yeah, I would have to agree with the storyteller side vs the historian side. While it might be an "interesting" part of the history of a PR that I forgot to do something and made a fixup commit, it really has little to do with the changes.

jjason (Fri, 21 Apr 2017 23:13:11 GMT):
Seeing this intermittent failure when submitting PRs: ``` integration_test_1 | ====================================================================== integration_test_1 | FAIL: test_resting_shutdown_sigint (test_shutdown_smoke.TestShutdownSmoke) integration_test_1 | Tests that SIGINT will cause validators with and without integration_test_1 | ---------------------------------------------------------------------- integration_test_1 | Traceback (most recent call last): integration_test_1 | File "/project/sawtooth-core/integration/sawtooth_integration/tests/test_shutdown_smoke.py", line 70, in test_resting_shutdown_sigint integration_test_1 | self.assertEqual(len(sigint_exit_statuses), len(containers)) integration_test_1 | AssertionError: 0 != 2 integration_test_1 | integration_test_1 | During handling of the above exception, another exception occurred: integration_test_1 | integration_test_1 | Traceback (most recent call last): integration_test_1 | File "/project/sawtooth-core/integration/sawtooth_integration/tests/test_shutdown_smoke.py", line 77, in test_resting_shutdown_sigint integration_test_1 | self.fail(str(e)) integration_test_1 | AssertionError: 0 != 2 integration_test_1 | integration_test_1 | ---------------------------------------------------------------------- ```

jjason (Fri, 21 Apr 2017 23:18:42 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-370/1/console

kylestratis (Sun, 23 Apr 2017 02:59:25 GMT):
Has joined the channel.

AlexCacciamani (Sun, 23 Apr 2017 13:58:51 GMT):
Has joined the channel.

shreyankg (Mon, 24 Apr 2017 13:50:48 GMT):
Has joined the channel.

boydjohnson (Mon, 24 Apr 2017 14:44:39 GMT):
@jjason, I have seen that test failure several times. It means that both validators didn't shutdown in the amount of time given. But when I have looked at the logs it looked like it wasn't far in the shutdown process.

jaredcorduan (Mon, 24 Apr 2017 14:48:10 GMT):
Is there a clean way to reward nodes in the network (as a part of a transaction) for validating and applying transactions, such as would be done by a miner in the bitcoin network? Version 0.7 had a way of doing this, as seen in the marketplace code: https://github.com/hyperledger/sawtooth-core/blob/0-7/extensions/mktplace/mktplace/transactions/market_place.py#L66

kelly_ (Mon, 24 Apr 2017 16:09:20 GMT):
@jaredcorduan I don't believe there is, you could create an incentive transaction in any txn processor you are running though

jaredcorduan (Mon, 24 Apr 2017 16:59:05 GMT):
ok, thanks @kelly_ !

DerekTiffany (Mon, 24 Apr 2017 17:18:14 GMT):
Has joined the channel.

amundson (Mon, 24 Apr 2017 17:26:17 GMT):
@benjaminbollen go sdk support is now in master - https://github.com/hyperledger/sawtooth-core

jjason (Mon, 24 Apr 2017 17:31:40 GMT):
@boydjohnson Do we have a defect in JIRA to cover this?

boydjohnson (Mon, 24 Apr 2017 17:38:13 GMT):
I have a further shutdown jira task, and I was expecting that that would encompass this, but we don't have a specific Jira defect task to make sure this test isn't flaky.

amundson (Tue, 25 Apr 2017 02:11:05 GMT):
oh my, I can't believe I missed that great git discussion @jjason @boydjohnson . my point with respect to moving separate from code changes is that if you do it all at once, it can be virtually impossible to review. git bisect is a pretty good argument I hadn't thought specifically about. With respect to cherry-picking, it is _far_ easier to deal with separate move/change commits if it does not apply cleanly. It is super easy and common to cherry-pick a series of commits, so that's not really a problem either.

amundson (Tue, 25 Apr 2017 02:30:32 GMT):
though, it seems most relevant for the larger moves

JonathanLevi (Tue, 25 Apr 2017 13:30:53 GMT):
Hi everyone, does anyone happen to have an example of using the REST API to post/send transactions?

jsmitchell (Tue, 25 Apr 2017 13:32:07 GMT):
@zac ^

toddojala (Tue, 25 Apr 2017 14:20:48 GMT):
@JonathanLevi Not sure if this is what you are looking for, but the CLI submit command uses the REST API to send transactions. The code is fairly simple, so it might be useful: https://github.com/hyperledger/sawtooth-core/blob/master/cli/sawtooth_cli/submit.py

jsmitchell (Tue, 25 Apr 2017 14:28:10 GMT):
That's using these methods: https://github.com/hyperledger/sawtooth-core/blob/master/cli/sawtooth_cli/rest_client.py

zac (Tue, 25 Apr 2017 14:34:01 GMT):
@JonathanLevi I will actually have a PR in today with a tutorial of how to do just that

JonathanLevi (Tue, 25 Apr 2017 14:34:35 GMT):
@jsmitchell + @zac: this is great, thank you.

zac (Tue, 25 Apr 2017 14:35:11 GMT):
The REST API side of it is fairly simple, send a POST to /batches, Content-Type: application/octet-stream, the body should be the binary for your BatchList

zac (Tue, 25 Apr 2017 14:35:34 GMT):
Now, building that binary is . . . a little more involved

zac (Tue, 25 Apr 2017 14:36:26 GMT):
If you need a walkthrough now, I can take you though it, otherwise probably easier to wait for the PR

zac (Tue, 25 Apr 2017 14:36:33 GMT):
Shouldn't be too much longer now

JonathanLevi (Tue, 25 Apr 2017 14:37:09 GMT):
We can just wait for the PR, so that you won't have to repeat yourself... thank you.

JonathanLevi (Tue, 25 Apr 2017 14:37:19 GMT):
(Appreciate it)

zac (Tue, 25 Apr 2017 14:40:32 GMT):
no problem, you have good timing

JonathanLevi (Tue, 25 Apr 2017 14:56:44 GMT):
BTW: https://github.com/hyperledger/sawtooth-core/pull/377

jsmitchell (Tue, 25 Apr 2017 15:01:37 GMT):
Thanks, @JonathanLevi !

Dan (Tue, 25 Apr 2017 15:08:25 GMT):
Nice!

zac (Tue, 25 Apr 2017 17:38:16 GMT):
@JonathanLevi PR is here: https://github.com/hyperledger/sawtooth-core/pull/381

zac (Tue, 25 Apr 2017 17:38:51 GMT):
The modular way the tutorial is written though, it is not particularly nice to read the source code.

zac (Tue, 25 Apr 2017 17:39:01 GMT):
Here is a zip of the built html:

zac (Tue, 25 Apr 2017 17:39:29 GMT):

Message Attachments

zac (Tue, 25 Apr 2017 17:40:17 GMT):
Open index.html, and go to App Developer's Guide > Building and Submitting a Transaction

zac (Tue, 25 Apr 2017 17:40:24 GMT):
Let me know if you have any questions

amundson (Tue, 25 Apr 2017 19:31:18 GMT):
@zac - should be able to dig around jenkins to find the url to docs built there too for any pr

zac (Tue, 25 Apr 2017 19:31:51 GMT):
that's nifty

zac (Tue, 25 Apr 2017 19:33:31 GMT):
Hrmm, html files are here: https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-381/1/artifact/docs/build/

zac (Tue, 25 Apr 2017 19:33:53 GMT):
They aren't actually viewable as a web page somewhere too are they?

jsmitchell (Tue, 25 Apr 2017 19:34:08 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-381/1/artifact/docs/build/html/app_developers_guide/txn_submit_tutorial/python.html

zac (Tue, 25 Apr 2017 19:34:20 GMT):
whoa

amundson (Tue, 25 Apr 2017 19:34:21 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-381/1/artifact/docs/build/html/index.html

zac (Tue, 25 Apr 2017 19:34:26 GMT):
All hail Jenkins

zac (Tue, 25 Apr 2017 19:35:17 GMT):
Weird, when I clicked on the file before it just rendered the source

zac (Tue, 25 Apr 2017 19:35:26 GMT):
Now it is rendering as a page

kelly_ (Tue, 25 Apr 2017 19:53:59 GMT):
oh nice! I just sent the build of the docs to some people who were interested in pending PR documentation

zac (Tue, 25 Apr 2017 20:26:20 GMT):
FYI, the language select will not work in the Jenkins build because it blocks the `script` tag.

prashiyn (Wed, 26 Apr 2017 05:41:19 GMT):
Has joined the channel.

pancake (Wed, 26 Apr 2017 13:24:20 GMT):
Hi, all, i am trying to figure out how PoET

pancake (Wed, 26 Apr 2017 13:27:59 GMT):
Hi, all, i am trying to figure out how PoET work, but after google, I only got a few info. Could you pls give me some advice or poet's detailed info?

pancake (Wed, 26 Apr 2017 13:30:21 GMT):
BTW, thx for the guy who have reply my question, and sorry for forget reply you for my poor memory. :joy:

pancake (Wed, 26 Apr 2017 13:31:12 GMT):
Few weeks ago.

jsmitchell (Wed, 26 Apr 2017 14:11:40 GMT):
hi @pancake - rocketchat provides a search feature. You should be able to look back and see the conversation.

jsmitchell (Wed, 26 Apr 2017 14:12:04 GMT):
aside from that, what would you like to know?

jsmitchell (Wed, 26 Apr 2017 14:12:46 GMT):
have you read this?http://intelledger.github.io/introduction.html#proof-of-elapsed-time-poet

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? >Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. >Formal Completeness

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? _Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. Formal Completeness_

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? _ Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. Formal Completeness _

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? "Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. Formal Completeness"

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? >"Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. Formal Completeness"

Dan (Wed, 26 Apr 2017 17:22:04 GMT):
Any volunteers to write up sawtooth doc for 'blocks and chains'? >"Introduce our block definition (okay to be specific here in terms of fields, signing approach, etc.), similar to batch/transaction specificity. >Formal Completeness"

amundson (Wed, 26 Apr 2017 17:40:43 GMT):
(for the arch. doc)

Dan (Wed, 26 Apr 2017 17:50:04 GMT):
Yeah section of the arch doc. Was going to add it to backlog but not sure who a good owner is.

pschwarz (Wed, 26 Apr 2017 18:34:26 GMT):
With the merger of https://github.com/hyperledger/sawtooth-core/pull/361, if one wants to modify on-chain configuration settings, you'll need do the following (minimaly): ``` > sawtooth config genesis -k -o config-genesis.batch ... other genesis batch creations, e.g using sawtooth config propose ... > sawtooth admin genesis config-genesis.batch ... ``` You can start up a validator without this, but without without an authorized key, you can only run with default settings.

amundson (Wed, 26 Apr 2017 18:56:52 GMT):
@pschwarz - can you omit the -k to use your default key?

johnsacco (Wed, 26 Apr 2017 20:22:31 GMT):
Has joined the channel.

pschwarz (Wed, 26 Apr 2017 21:34:50 GMT):
Yes, that's right

pschwarz (Wed, 26 Apr 2017 21:34:55 GMT):
I forgot about that

pschwarz (Wed, 26 Apr 2017 21:35:14 GMT):
The default generated with `sawtooth keygen`

pschwarz (Wed, 26 Apr 2017 21:35:14 GMT):
The default generated with `sawtooth keygen`, to be exact

pschwarz (Wed, 26 Apr 2017 21:49:58 GMT):

Message Attachments

amundson (Wed, 26 Apr 2017 23:12:09 GMT):
For the config key strategy, I think the sha256*8 (worst case) is lot of overhead. Essentially, we are using it to attempt to keep the tree balanced. Any suggestions for another, lighter, mechanism to hash/encode the path components?

pschwarz (Wed, 26 Apr 2017 23:22:21 GMT):
@boydjohnson Would be good to get that shutdown integration test from having those periodic failures

Dan (Wed, 26 Apr 2017 23:22:41 GMT):
thanks for the doc @pschwarz!

boydjohnson (Wed, 26 Apr 2017 23:22:57 GMT):
Yeah, definitely. @pschwarz

Dan (Thu, 27 Apr 2017 00:04:58 GMT):
@amundson that sounds like how to efficiently encode a string from a variable length ~52 element set into a fixed length string from a 16 element set. Sounds like something up @hartm's alley (If that's Hart Montgomery's handle?).

hartm (Thu, 27 Apr 2017 00:04:58 GMT):
Has joined the channel.

Dan (Thu, 27 Apr 2017 00:19:21 GMT):
Only loosely related but it would be nice to sweep all the hash use behind a facade like signing ops behind sawtooth-signing. That way we could swap in different hash libs or algos if needed w/o going all over the system.

amundson (Thu, 27 Apr 2017 01:11:24 GMT):
in the config case, it becomes part of the specification for that portion of state so explicit is probably better. if we did want it to be configurable, we would probably want to add some special address containing the hash method to use for bootstrapping the config system. Which might be ok for vaidator processes, but would add overhead to other things like the config cli, which would now need to know on-chain info tondo what can currently be done off chain.

jsmitchell (Thu, 27 Apr 2017 01:18:47 GMT):
Collisions will be quite likely with hashes that small

jsmitchell (Thu, 27 Apr 2017 01:19:33 GMT):
@pschwarz ^

pancake (Thu, 27 Apr 2017 02:05:49 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=XcdDQ2HrQ8fzHH2xD) @jsmitchell Thanks for your reply! I have read this before, but still can't understand why the wait time can achieve consistency? Does the validator become leader and can generate a txn block after it get shortest wait time? How to ensure weather it lose some txn and do not put these txns into a block.

jsmitchell (Thu, 27 Apr 2017 02:10:11 GMT):
Transactions are broadcast around the network, so all validators have the ability to include them in blocks. Once a block is received and applied, all validators start waittimers for the next block. If their waittimer expires before they have received a valid block from a competitor, then they have 'won' the right to build the block. They send out the block, and the other validators verify and apply it and the process begins again.

pancake (Thu, 27 Apr 2017 02:22:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=xwtdmMQsep6huscQX) @jsmitchell "Wait for a randomized amount of time - simulates partial preimage search", is this right?

jsmitchell (Thu, 27 Apr 2017 02:24:02 GMT):
Yep, simulates nakamoto mining

jsmitchell (Thu, 27 Apr 2017 02:24:40 GMT):
Except there is no 'work'

jsmitchell (Thu, 27 Apr 2017 02:24:48 GMT):
CPU is idle

pancake (Thu, 27 Apr 2017 02:26:21 GMT):
So what does "TargetWaitTime" and "InitialWaitTime" mean in txnvalidator.js?

jsmitchell (Thu, 27 Apr 2017 02:27:14 GMT):
It would be more instructive to look at the poet implementation in master

jsmitchell (Thu, 27 Apr 2017 02:27:49 GMT):
TargetWaitTime is the desired inter block time for the network

jsmitchell (Thu, 27 Apr 2017 02:28:03 GMT):
Usually 15-30 seconds in our networks

jsmitchell (Thu, 27 Apr 2017 02:31:28 GMT):
InitialWaitTime determines the shape of the 'population estimate' of the network for the first fifty blocks. This is used to shape the exponential random distribution to hit an inter block time based on a configured number of nodes. Once fifty blocks pass, real population data from the blocks are used to generate the population estimate.

pancake (Thu, 27 Apr 2017 02:36:04 GMT):
Could you pls explain the difference between "inter block time" and time generated by enclave?

pancake (Thu, 27 Apr 2017 02:36:09 GMT):
@jsmitchell

jsmitchell (Thu, 27 Apr 2017 02:37:53 GMT):
Interblock time is the average of the minimum random wait time generated by all enclaves across blocks

jsmitchell (Thu, 27 Apr 2017 02:38:46 GMT):
So, if we have 100 validators, and we are targeting 30 second interblock times, we need _most_ of the random times generated to be larger than 30s

jsmitchell (Thu, 27 Apr 2017 02:39:08 GMT):
Ideally one node will get a timer of around 30s

jsmitchell (Thu, 27 Apr 2017 02:39:15 GMT):
And the rest will be higher

pancake (Thu, 27 Apr 2017 02:39:32 GMT):
Like the bitcoin is generated about 10 min, am i right?

jsmitchell (Thu, 27 Apr 2017 02:39:44 GMT):
Yeah, 7 minutes I think

jsmitchell (Thu, 27 Apr 2017 02:40:59 GMT):
Or maybe it's 10 minutes

pancake (Thu, 27 Apr 2017 02:43:11 GMT):
@jsmitchell You’re one in a million, thanks a lot for your help:smile:

jsmitchell (Thu, 27 Apr 2017 02:43:37 GMT):
Anytime!

pschwarz (Thu, 27 Apr 2017 14:12:29 GMT):
@jsmitchell collisions are high, but the settings values in state are hash buckets - they handle collisions

pschwarz (Thu, 27 Apr 2017 14:12:29 GMT):
@jsmitchell collisions are potentially higher, but the settings values in state are hash buckets - they handle collisions

pschwarz (Thu, 27 Apr 2017 17:26:03 GMT):

Message Attachments

pschwarz (Thu, 27 Apr 2017 17:26:25 GMT):
@jsmitchell :point_up:

pschwarz (Thu, 27 Apr 2017 17:27:41 GMT):
I've reduced the number of parts from 8 to 4, which should create a better collision-avoidance outcome. It will also reduce the number of hashes made, which should have better performance characteristics

amundson (Thu, 27 Apr 2017 18:23:57 GMT):
@jsmitchell, @pschwarz, @agunde - do we intend to implement any additional topology management / peering mechanisms than the one we currently have for 0.8?

pschwarz (Thu, 27 Apr 2017 18:25:16 GMT):
There are plans for direct send of messages between peers over the network topology

pschwarz (Thu, 27 Apr 2017 18:25:28 GMT):
As well as directly

pschwarz (Thu, 27 Apr 2017 18:25:28 GMT):
As well as directly, with temporary connections

jsmitchell (Thu, 27 Apr 2017 18:25:54 GMT):
We don't need it for parity. We'll maybe need to do some tweaking of the current peering with larger network testing.

amundson (Thu, 27 Apr 2017 18:28:13 GMT):
would that include things like GET_TOPOLOGY, TOPOLOGY_STATUS_UPDATE and the like? or more subtle?

jsmitchell (Thu, 27 Apr 2017 18:28:54 GMT):
No, just different strategies on how many peers of peers we collect

amundson (Thu, 27 Apr 2017 18:29:41 GMT):
are we going to implement Epidemic as an alternative to Gossip?

jsmitchell (Thu, 27 Apr 2017 18:30:54 GMT):
You mean rename gossip to epidemic or implement stochastic forwarding?

amundson (Thu, 27 Apr 2017 18:31:57 GMT):
"validators exchange messages with each other based on the rules of a gossip or epidemic protocol"

jsmitchell (Thu, 27 Apr 2017 18:32:12 GMT):
Those are synonyms

jsmitchell (Thu, 27 Apr 2017 18:32:32 GMT):
There should probably be commas or parens around 'or epidemic'

amundson (Thu, 27 Apr 2017 18:33:45 GMT):
should we have a arch doc section on gossip?

jsmitchell (Thu, 27 Apr 2017 18:39:30 GMT):
What would it cover that's not already in the network section?

amundson (Thu, 27 Apr 2017 18:44:11 GMT):
@agunde - does the current validator network section cover what we have in the sawtooth_validator.gossip package?

amundson (Thu, 27 Apr 2017 18:44:37 GMT):
(architecturally)

amundson (Thu, 27 Apr 2017 18:47:56 GMT):
peering modes, endpoints, public_uri, min/max peer connectivity?

agunde (Thu, 27 Apr 2017 18:51:46 GMT):
Mostly yes. It talks about how peering is done, listening on endpoints, how the validator keeps trying to peer until it reaches min connectivity, and that it stops accepting peer requests after it reaches max connectivity. It however does not mention public_uri explicitly and this information is spread out across the doc.

amundson (Thu, 27 Apr 2017 18:53:59 GMT):
not sure it fits w/validator network, but the handler mechanism would seem like a good topic?

amundson (Thu, 27 Apr 2017 18:54:55 GMT):
maybe that is already in message delivery

agunde (Thu, 27 Apr 2017 18:55:47 GMT):
I agree. It is briefly mentioned now but not in detail. It could also go in the related components section.

amundson (Thu, 27 Apr 2017 18:59:12 GMT):
@mitchell @agunde - thanks, toc plan updated

amundson (Thu, 27 Apr 2017 18:59:12 GMT):
@jsmitchell @agunde - thanks, toc plan updated

jsmitchell (Thu, 27 Apr 2017 19:07:30 GMT):
:thumbsup:

Marcie (Thu, 27 Apr 2017 20:54:04 GMT):
Has joined the channel.

Dan (Thu, 27 Apr 2017 22:45:39 GMT):
@pschwarz regarding config key/val .. I don't see a performance problem in 8 hashes so long as it is a client side responsibility to generate the address.

pschwarz (Thu, 27 Apr 2017 22:46:15 GMT):
It will be both - the validator will need to generate the addresses as well

pschwarz (Thu, 27 Apr 2017 22:46:26 GMT):
Much of that can be memoized

pschwarz (Thu, 27 Apr 2017 22:47:02 GMT):
But reducing it 4 also has better collision-avoidance characteristics

Dan (Thu, 27 Apr 2017 23:09:42 GMT):
@jsmitchell I *love* the new global state section of the docs!

jsmitchell (Thu, 27 Apr 2017 23:14:45 GMT):
Sweet, thanks!

boydjohnson (Fri, 28 Apr 2017 20:08:04 GMT):
@agunde noticed a problem while working on the javascript xo transaction processor and I replicated by altering an intkey test. If there is some time between batches, and the last batch is invalid, the validator will keep trying to process the batch. This is some logging with only publisher statements left in :``` validator_1 | [19:39:46.918 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:46.918 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added validator_1 | [19:39:47.094 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:47.094 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added validator_1 | [19:39:47.276 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:47.278 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added```

boydjohnson (Fri, 28 Apr 2017 20:08:04 GMT):
@agunde noticed a problem while working on the javascript xo transaction processor and I replicated by altering an intkey test. If there is some time between batches, and the last batch is invalid, the validator will keep trying to process the batch. This is some logging with only publisher statements left in : ```validator_1 | [19:39:46.918 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:46.918 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added validator_1 | [19:39:47.094 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:47.094 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added validator_1 | [19:39:47.276 DEBUG publisher] Batch bb2809cfcf43bf146c71dae66973d45f42a604aec02f9bafe5865a3d4daade631d01d6b56493a6e597ac2c79e8a2aeb68ebe622b1203864997ba2d8a5bf67132 invalid, not added to block. validator_1 | [19:39:47.278 DEBUG publisher] Abandoning block (3, S:, P:2708e998) no batches added```

boydjohnson (Fri, 28 Apr 2017 20:09:36 GMT):

Message Attachments

boydjohnson (Fri, 28 Apr 2017 20:10:02 GMT):
Here is the diff that will show the behavior^

jsmitchell (Fri, 28 Apr 2017 20:10:08 GMT):
huh

jsmitchell (Fri, 28 Apr 2017 20:11:39 GMT):
@jjason ^

jsmitchell (Fri, 28 Apr 2017 20:11:57 GMT):
anything in the block publishing logic jump to mind?

jjason (Fri, 28 Apr 2017 20:13:04 GMT):
Nothing jumps to mind.

jsmitchell (Fri, 28 Apr 2017 20:13:54 GMT):
looks like maybe a condition where batch statuses are getting reset on the condition of abandoning a block?

zac (Fri, 28 Apr 2017 22:06:56 GMT):
To anyone writing docs for Sawtooth, the new templating system has just been merged

zac (Fri, 28 Apr 2017 22:09:34 GMT):
Long story short: - Add Jinja2 style templates to `docs/source/_templates/` - Add build target information to `template_config.yaml` in that same directory - When you run `make html` (or any other `make`), your targets will be built and deposited in `docs/source/_autogen/` - ToC and other files can reference them from there like anything else

Dan (Sat, 29 Apr 2017 16:28:28 GMT):
If any pycharm user wanted to write up how they configured pycharm to work with vagrant they would be my favorite person. First interest is in getting the python paths and dependencies clear to pycharm and bonus points for debugger integration.

rbuysse (Sat, 29 Apr 2017 18:58:08 GMT):
I'd be in favor of that as well.

jsmitchell (Sat, 29 Apr 2017 19:25:25 GMT):
You have been too charmed by pycharm. The wily snake has you hypnotized. "Stay Pure with vim!" (TM)

jjason (Sat, 29 Apr 2017 20:12:25 GMT):
Step 1 - pay for the license for PyCharm Professional.

Dan (Sat, 29 Apr 2017 20:15:13 GMT):
Step 1 complete

jjason (Sat, 29 Apr 2017 20:16:13 GMT):
Steps 2 - n are self-explanatory :) I don't recall if I wrote down anything when I got PyCharm working. You might ping @Tom Barnes

Dan (Sat, 29 Apr 2017 20:16:51 GMT):
You a real funny guy

jjason (Sat, 29 Apr 2017 20:19:21 GMT):
I thought that was why you hired me ;)

jjason (Sat, 29 Apr 2017 20:19:49 GMT):
That and my irresistible charm.

Dan (Sat, 29 Apr 2017 20:50:47 GMT):
No comment

mytrile (Sat, 29 Apr 2017 21:27:12 GMT):
Has joined the channel.

kpkulkarni (Sun, 30 Apr 2017 03:53:10 GMT):
Hi guys, I was following the tutorial document of tic tac toe game.., Theres a step where I need to run the validator and somehow the module secp256k1 is not getting recognized after running the below command.. How do i get around this ? ./bin/validator -v --config sawtooth-arcade/txnvalidator.js Traceback (most recent call last): File "./bin/validator", line 34, in sawtooth_signing/secp256k1_signer.py", line 20, in import secp256k1 ModuleNotFoundError: No module named 'secp256k1'

jsmitchell (Sun, 30 Apr 2017 03:54:09 GMT):
Are you running in vagrant?

kpkulkarni (Sun, 30 Apr 2017 03:59:05 GMT):
@jsmitchell yes

jsmitchell (Sun, 30 Apr 2017 03:59:58 GMT):
You must have had some install issues during vagrant up. Are you behind a filtering proxy?

kpkulkarni (Sun, 30 Apr 2017 04:01:03 GMT):
@jsmitchell you might be right.. I was behind a corporate proxy while i did vagrant up.

kpkulkarni (Sun, 30 Apr 2017 04:01:16 GMT):
Will give it a try by resetting my vagrant setup

kpkulkarni (Sun, 30 Apr 2017 04:01:22 GMT):
Thanks

jsmitchell (Sun, 30 Apr 2017 04:01:32 GMT):
Yep

kpkulkarni (Sun, 30 Apr 2017 04:01:33 GMT):
I am pretty new to this vagrant and py stuff

kpkulkarni (Sun, 30 Apr 2017 04:01:41 GMT):
will update here soon

kpkulkarni (Sun, 30 Apr 2017 04:01:42 GMT):
Thanks

amundson (Mon, 01 May 2017 14:15:57 GMT):
anyone else having out-of-space issues w/vagrant's /?

jsmitchell (Mon, 01 May 2017 14:16:46 GMT):
are you installing the latex stuff?

boydjohnson (Mon, 01 May 2017 14:16:47 GMT):
There is 'docker volume prune' which gets rid of volumes created when running tests.

boydjohnson (Mon, 01 May 2017 14:17:02 GMT):
Also, yes, I have had out of space issues.

amundson (Mon, 01 May 2017 14:17:03 GMT):
yes, attempting doc builds

boydjohnson (Mon, 01 May 2017 14:17:18 GMT):
Have you had repeated test runs?

amundson (Mon, 01 May 2017 14:17:54 GMT):
I probably haven't done much other than doc stuff (installed latex though)

jsmitchell (Mon, 01 May 2017 14:22:40 GMT):
I have the sphinx plugin installed and: `/dev/sda1 9.7G 8.1G 1.7G 84% /`

amundson (Mon, 01 May 2017 14:33:05 GMT):
could be the combination of go stuff and latex

Dan (Mon, 01 May 2017 15:36:36 GMT):
Is anyone working on generating the architecture diagram for the docs?

jsmitchell (Mon, 01 May 2017 15:40:04 GMT):
what diagram?

Dan (Mon, 01 May 2017 15:40:41 GMT):
The mother of all diagrams

jsmitchell (Mon, 01 May 2017 15:41:03 GMT):
that should be rethought for published docs, in my opinion

amundson (Mon, 01 May 2017 15:41:12 GMT):
yeah

jsmitchell (Mon, 01 May 2017 15:41:17 GMT):
i think it can be cleaned up quite a bit

jsmitchell (Mon, 01 May 2017 15:41:24 GMT):
and maybe broken into subdiagrams

Dan (Mon, 01 May 2017 15:42:19 GMT):
I think its beautiful.

amundson (Mon, 01 May 2017 15:42:54 GMT):
it's not great at 800px wide though

amundson (Mon, 01 May 2017 15:43:35 GMT):
(or whatever it is on retina screens)

Dan (Mon, 01 May 2017 15:44:15 GMT):
I want it transferred to canvas and hung over my fireplace.

amundson (Mon, 01 May 2017 15:44:30 GMT):
yes, burn it

Dan (Mon, 01 May 2017 15:45:31 GMT):
*Over* not *_in_*

rjones (Mon, 01 May 2017 18:32:11 GMT):
Has left the channel.

amundson (Mon, 01 May 2017 18:52:52 GMT):
I just worked around the vagrant space issue by doing the docker stuff directly on the mac, which worked fine for the docs (thanks @adamludvik for nice docker stuff that works)

adamludvik (Mon, 01 May 2017 19:48:33 GMT):
The Go SDK is (very?) intermittently failing intkey smoke on master. My current hypothesis is that it is taking longer than 1 second to process the first batch of requests because it starts up a bunch of threads and creates a bunch of sockets in after registering with the validator and before it starts processing.

adamludvik (Mon, 01 May 2017 19:48:33 GMT):
The Go SDK is (very?) intermittently failing intkey smoke on master. My current hypothesis is that it is taking longer than 1 second to process the first batch of requests because it starts up a bunch of threads and creates a bunch of sockets after registering with the validator and before it starts processing.

jsmitchell (Mon, 01 May 2017 19:49:07 GMT):
why would that cause it to fail the smoke tests?

adamludvik (Mon, 01 May 2017 19:49:45 GMT):
The smoke test submits transactions, sleeps for a second, then queries state. If state hasn't been updated, it fails.

jsmitchell (Mon, 01 May 2017 19:49:54 GMT):
dang, that's aggressive

jsmitchell (Mon, 01 May 2017 19:50:04 GMT):
i approve of its aggression

adamludvik (Mon, 01 May 2017 19:50:33 GMT):
Should I startup all the threads and sockets before registering then?

jsmitchell (Mon, 01 May 2017 19:51:07 GMT):
that thread/sockets start up stuff has to be like zero milliseconds though, right?

adamludvik (Mon, 01 May 2017 19:51:24 GMT):
sec

adamludvik (Mon, 01 May 2017 19:56:44 GMT):
hmmm

adamludvik (Mon, 01 May 2017 19:58:11 GMT):
0.000584 seconds

jsmitchell (Mon, 01 May 2017 19:58:19 GMT):
darn

jsmitchell (Mon, 01 May 2017 19:58:44 GMT):
85 microseconds less and it would have truly been zero milliseconds

jsmitchell (Mon, 01 May 2017 19:59:14 GMT):
i'm going to wager that that is not your issue

adamludvik (Mon, 01 May 2017 19:59:35 GMT):
I will be declining that wager

pschwarz (Mon, 01 May 2017 20:04:11 GMT):
Could it still be an issue with the txn processor registration ack from the validator getting in the way of the txn process request?

x8367180 (Tue, 02 May 2017 02:57:09 GMT):
Has joined the channel.

x8367180 (Tue, 02 May 2017 03:07:03 GMT):
hello,everybody.I'm glad to meet everybody.:grinning:

x8367180 (Tue, 02 May 2017 03:09:00 GMT):
I'm chinese.My English is not very well.

jsmitchell (Tue, 02 May 2017 03:09:50 GMT):
It's better than our Chinese :)

jsmitchell (Tue, 02 May 2017 03:10:16 GMT):
Welcome!

x8367180 (Tue, 02 May 2017 03:11:18 GMT):
Thank you~:grinning:

x8367180 (Tue, 02 May 2017 03:20:42 GMT):
I‘m learning sawtooth-lake.But I can't how to learn sawtooth-lake,Can you give me some suggestions?Thank you very much.

jsmitchell (Tue, 02 May 2017 03:21:43 GMT):
Have you read the documentation here? https://intelledger.github.io

jsmitchell (Tue, 02 May 2017 03:21:56 GMT):
Sorry we don't have a Chinese version yet.

jsmitchell (Tue, 02 May 2017 03:22:35 GMT):
Perhaps you could help with a translation!

x8367180 (Tue, 02 May 2017 03:25:18 GMT):
ok,thank you.I can

x8367180 (Tue, 02 May 2017 05:48:19 GMT):
@jsmitchell May I see sawtooth-lake as a database?

Dan (Tue, 02 May 2017 12:41:36 GMT):
Yes, you may think of sawtooth as a database.

Dan (Tue, 02 May 2017 12:42:23 GMT):
Blockchains in general are special types of databases. They let people who do not trust each other make changes to the same database.

Dan (Tue, 02 May 2017 12:43:09 GMT):
(Not all projects that claim to be blockchains really act this way though.)

boydjohnson (Tue, 02 May 2017 14:07:20 GMT):
@jsmitchell, I have updated PR #400 since you commented. Do you want to look again?

jsmitchell (Tue, 02 May 2017 14:07:36 GMT):
Gladly

adamludvik (Tue, 02 May 2017 14:26:39 GMT):
I am working on the "Audit URLs passed to urllib.urlopen()" Bandit issue. I did some additional research on the issue and it looks like there are some issues with the urllib library itself (http://blog.blindspotsecurity.com/2016/06/advisory-http-header-injection-in.html) The requests library (http://docs.python-requests.org/en/master/) seems to be the popular alternative to urllib and is based on a different library, urllib3. These libraries have not been blacklisted by bandit and appear to be more robust/security conscious. We are already using requests in other parts of the project (eg., poet-core). Does it make sense to replace urllib with requests to solve the problem? @jsmitchell

jsmitchell (Tue, 02 May 2017 14:27:54 GMT):
that snarfing code snippet i gave you for stats like things used requests, right?

jsmitchell (Tue, 02 May 2017 14:28:19 GMT):
I think I read at the time that that was the preferred way in python3 land

adamludvik (Tue, 02 May 2017 14:28:34 GMT):
yes

adamludvik (Tue, 02 May 2017 14:29:13 GMT):
That's what I gathered in my research too

jsmitchell (Tue, 02 May 2017 14:29:15 GMT):
seems reasonable to me

adamludvik (Tue, 02 May 2017 14:30:10 GMT):
Alright, thanks. Just wanted to check that it was reasonable.

compleatang (Tue, 02 May 2017 16:50:42 GMT):
Has joined the channel.

amundson (Tue, 02 May 2017 19:11:31 GMT):
@agunde in validator's main(), we call init_console_logging() multiple times which is causing duplicate log output in the console. wouldn't the first call cover all cases?

agunde (Tue, 02 May 2017 19:26:38 GMT):
I saw it override the init_console_logging if the config file had a root defined (even if disable_existing_loggers = false). I must have missed a case where both unit_console_logging() are being kept around. Are you using a config file?

agunde (Tue, 02 May 2017 19:26:38 GMT):
I saw it override the init_console_logging if the config file had a root defined (even if disable_existing_loggers = false). I must have missed a case where both init_console_logging() are being kept around. Are you using a logging config file?

amundson (Tue, 02 May 2017 19:27:52 GMT):
I don't think so, unless vagrant would have put one in place

amundson (Tue, 02 May 2017 19:29:27 GMT):
I think I did this: "Initialization errors occurred (see previous log ERROR messages), shutting down.", but I'm finding it fairly unfriendly with -vv as info statements come after the actual error

agunde (Tue, 02 May 2017 19:35:36 GMT):
Do you know what your error was? It looks like i accidentally left an extra init_console_logging in when fixing the above mentioned issues.

amundson (Tue, 02 May 2017 19:41:05 GMT):
yeah, hadn't run 'sawtooth admin keygen' yet so the validator keyfile was missing

agunde (Tue, 02 May 2017 19:42:13 GMT):
Okay, Ya it looks like I forgot to remove a line after debugging, will make a PR shortly.

amundson (Tue, 02 May 2017 19:48:22 GMT):
xo's --wait doesn't seem functional

amundson (Tue, 02 May 2017 19:50:10 GMT):
@zac do we have a client that has a good --wait implementation?

amundson (Tue, 02 May 2017 19:54:05 GMT):
@pschwarz if you don't generate a genesis file, the validator starts up but in a state where it doesn't create blocks

pschwarz (Tue, 02 May 2017 19:54:27 GMT):
Hmm

pschwarz (Tue, 02 May 2017 19:54:32 GMT):
Any blocks?

pschwarz (Tue, 02 May 2017 19:55:33 GMT):
It should be in peering mode, at that point

pschwarz (Tue, 02 May 2017 19:55:51 GMT):
It would need to connect to another node that has a genesis block

pschwarz (Tue, 02 May 2017 19:55:51 GMT):
It ~would need~ should to connect to another node that has a genesis block

pschwarz (Tue, 02 May 2017 19:55:51 GMT):
It ~would need to~ should connect to another node that has a genesis block

amundson (Tue, 02 May 2017 19:56:53 GMT):
```[19:51:14.832 DEBUG genesis] genesis_batch_file: None [19:51:14.832 DEBUG genesis] chain_head: None False [19:51:14.833 DEBUG genesis] block_chain_id: None [19:51:14.833 DEBUG genesis] Requires genesis: False [19:51:14.834 DEBUG selector_events] Using selector: ZMQSelector [19:51:14.835 DEBUG dispatch] Added send_message function for connection ServerThread [19:51:14.838 INFO chain] Chain controller initialized with chain head: None [19:51:14.838 INFO publisher] Now building on top of block: None```

amundson (Tue, 02 May 2017 19:57:08 GMT):
none of that suggests it is ok and going into peering mode

jsmitchell (Tue, 02 May 2017 19:57:41 GMT):
i think that's what the journal reports in that condition

jsmitchell (Tue, 02 May 2017 19:57:50 GMT):
how did you start it up?

amundson (Tue, 02 May 2017 19:58:33 GMT):
those are all the journal messages

amundson (Tue, 02 May 2017 19:58:39 GMT):
```./bin/validator -vv --public-uri tcp://localhost:40000/```

pschwarz (Tue, 02 May 2017 19:58:42 GMT):
Those log messages are not great, but yes, thous last two are journal's state

jsmitchell (Tue, 02 May 2017 19:58:56 GMT):
are you expecting that to be the genesis node?

pschwarz (Tue, 02 May 2017 19:59:23 GMT):
Should the port for public uri be 40000 or the peering port?

pschwarz (Tue, 02 May 2017 19:59:28 GMT):
(8900?)

amundson (Tue, 02 May 2017 19:59:41 GMT):
well, I'm only running one :) so this is what I get when I forgot a step.

jsmitchell (Tue, 02 May 2017 19:59:44 GMT):
it should be the network port (8800) or whatever

jsmitchell (Tue, 02 May 2017 19:59:50 GMT):
but, that's not the reason

amundson (Tue, 02 May 2017 19:59:54 GMT):
no one cares about public-uri

jsmitchell (Tue, 02 May 2017 19:59:56 GMT):
the reason is that there is no genesis block

amundson (Tue, 02 May 2017 20:00:03 GMT):
it's a garbage option in this instance presumably

pschwarz (Tue, 02 May 2017 20:00:06 GMT):
Right, I was just commenting on that

jsmitchell (Tue, 02 May 2017 20:00:34 GMT):
@amundson: what are you expecting to happen?

pschwarz (Tue, 02 May 2017 20:00:45 GMT):
Basically, you want a message that says: "Waiting on genesis peer", or something

jsmitchell (Tue, 02 May 2017 20:00:45 GMT):
some more descriptive log message?

amundson (Tue, 02 May 2017 20:01:05 GMT):
hmm, it used to error out. but I'm not sure that it's doing the wrong thing now. it's very not-obvious though.

amundson (Tue, 02 May 2017 20:01:28 GMT):
maybe something besides printing None out all over which suggests buggy code :)

amundson (Tue, 02 May 2017 20:02:08 GMT):
it feels like it shouldn't have done any journal stuff yet if it's not peered

pschwarz (Tue, 02 May 2017 20:02:18 GMT):
That's just initialization messages

pschwarz (Tue, 02 May 2017 20:02:27 GMT):
Journal still needs to start up

boydjohnson (Tue, 02 May 2017 20:02:37 GMT):
That logging statement "building on top of block: None" is a common one in other situations, too.

pschwarz (Tue, 02 May 2017 20:02:40 GMT):
But it's probably only useful if it is starting on top of an existing block

amundson (Tue, 02 May 2017 20:02:51 GMT):
any debug statement that prints None is a bug

amundson (Tue, 02 May 2017 20:02:51 GMT):
any debug statement that prints None should be considered a bug

amundson (Tue, 02 May 2017 20:04:56 GMT):
if we don't consider that a bug, how would we know when it is a bug?

amundson (Tue, 02 May 2017 20:05:31 GMT):
anyway, probably we need a logging statement in here that we are waiting to peer?

pschwarz (Tue, 02 May 2017 20:05:45 GMT):
Who's job is it to know that?

pschwarz (Tue, 02 May 2017 20:05:50 GMT):
Journal?

pschwarz (Tue, 02 May 2017 20:05:54 GMT):
Genesis?

amundson (Tue, 02 May 2017 20:05:59 GMT):
certainly not!

amundson (Tue, 02 May 2017 20:06:39 GMT):
what are the rules if we are not a genesis node with respect to peering?

amundson (Tue, 02 May 2017 20:06:50 GMT):
is there a minimum number of peers before we succeed?

amundson (Tue, 02 May 2017 20:06:57 GMT):
succeed->continue

jsmitchell (Tue, 02 May 2017 20:07:05 GMT):
there is no continuance

jsmitchell (Tue, 02 May 2017 20:07:08 GMT):
it happens in a thread

boydjohnson (Tue, 02 May 2017 20:07:11 GMT):
So the validator isn't waiting to peer, is it? It is just waiting for the genesis block to be broadcast to it.

jsmitchell (Tue, 02 May 2017 20:07:19 GMT):
as soon as the first connection happens, blocks will flow

jsmitchell (Tue, 02 May 2017 20:07:29 GMT):
and the journal will get the genesis block and proceed

jsmitchell (Tue, 02 May 2017 20:08:18 GMT):
the thread will continue to attempt to build out topology until it reaches its minimum peering threshold

jsmitchell (Tue, 02 May 2017 20:08:35 GMT):
but blocks and batches will be flowing

amundson (Tue, 02 May 2017 20:09:12 GMT):
hmm, seems to ignore whatever issues we were attempting to address in 0.7

zac (Tue, 02 May 2017 20:09:14 GMT):
@amundson you can use --wait when you submit via the CLI

amundson (Tue, 02 May 2017 20:09:24 GMT):
but, maybe journal should just print that it's waiting for genesis block

zac (Tue, 02 May 2017 20:09:36 GMT):
Otherwise I don't think anything has been built using the feature

amundson (Tue, 02 May 2017 20:09:56 GMT):
@zac - you mean sawtooth submit?

zac (Tue, 02 May 2017 20:10:02 GMT):
yep

zac (Tue, 02 May 2017 20:10:39 GMT):
`sawtooth submit "some-file.batches" --wait`

pschwarz (Tue, 02 May 2017 20:10:51 GMT):
I don't think that works without a genesis block

boydjohnson (Tue, 02 May 2017 20:11:05 GMT):
Does sawtooth submit use the RestClient?

zac (Tue, 02 May 2017 20:11:22 GMT):
yes

zac (Tue, 02 May 2017 20:11:35 GMT):
Do we know the ID of the genesis block?

zac (Tue, 02 May 2017 20:12:31 GMT):
Because if you did a `GET /batch_status` with a wait, I believe it would work fine, even if you were waiting for the genesis block

zac (Tue, 02 May 2017 20:12:39 GMT):
But you would need the Id

zac (Tue, 02 May 2017 20:14:07 GMT):
(The CLI has no command for querying a batch status directly. It submits batches, and then automatically queries for the status of the submitted ids)

zac (Tue, 02 May 2017 20:14:29 GMT):
(If you needed example code though, you would find it there)

amundson (Tue, 02 May 2017 20:15:05 GMT):
@pschwarz are you saying journal doesn't know?

pschwarz (Tue, 02 May 2017 20:15:45 GMT):
Well, I'm saying I don't know with out a deep-dive back into the Journal code

pschwarz (Tue, 02 May 2017 20:16:05 GMT):
But that's my understanding that journal won't commit blocks if it doesn't have a genesis block

jsmitchell (Tue, 02 May 2017 20:16:31 GMT):
@cianx ^

pschwarz (Tue, 02 May 2017 20:16:37 GMT):
Before we added the genesis controller, it would just create an empty genesis block

amundson (Tue, 02 May 2017 20:16:52 GMT):
@pschwarz something can know, whatever knows we are both not creating our own genesis block and that there is not one to process yet

amundson (Tue, 02 May 2017 20:17:04 GMT):
probably the genesis code knows that much

amundson (Tue, 02 May 2017 20:17:29 GMT):
isn't one of the error conditions that genesis block already exists?

pschwarz (Tue, 02 May 2017 20:17:50 GMT):
Now, this might not be the case anymore, since the consensus module was one of the gating factors. With PoET and Devmode handling changes in consensus, it might work now.

cianx (Tue, 02 May 2017 20:18:06 GMT):
The BlockPublisher will not produce block if there is not current chain head.

pschwarz (Tue, 02 May 2017 20:18:12 GMT):
There you go

pschwarz (Tue, 02 May 2017 20:18:50 GMT):
So yes, Genesis Controller knows this, could log it, but the validator still needs to start up everything to handle incoming blocks

amundson (Tue, 02 May 2017 20:18:59 GMT):
so replacing "Now building on top of block: None" with "Not publishing blocks until genesis block is received."

amundson (Tue, 02 May 2017 20:19:01 GMT):
or something

pschwarz (Tue, 02 May 2017 20:19:08 GMT):
Sure.

cianx (Tue, 02 May 2017 20:19:42 GMT):
There are other cases where the chain head is set to None in the block publisher.

boydjohnson (Tue, 02 May 2017 20:19:54 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/journal/publisher.py#L477

boydjohnson (Tue, 02 May 2017 20:20:17 GMT):
This is one of them^

cianx (Tue, 02 May 2017 20:21:04 GMT):
Yes, the block_publisher will not produce potential forks to a block it published.

pschwarz (Tue, 02 May 2017 20:22:21 GMT):
That looks like chain_head is being overloaded - it's a cache of the current chain head in the block store _and_ an indicator of processing state

pschwarz (Tue, 02 May 2017 20:22:21 GMT):
That looks like `chain_head` is being overloaded - it's a cache of the current chain head in the block store _and_ an indicator of processing state

amundson (Tue, 02 May 2017 20:22:50 GMT):
seems like the genesis code would know enough to print a statement "No genesis block is present, resulting in no initial chain head; block publishing is disabled until a chain head is updated" or something

pschwarz (Tue, 02 May 2017 20:23:06 GMT):
I agree with that logging statement

cianx (Tue, 02 May 2017 20:23:38 GMT):
sure, in the block_publisher it is the node that block should be built on.

cianx (Tue, 02 May 2017 20:24:34 GMT):
If it is not set then there is not block should not be built.

amundson (Tue, 02 May 2017 20:27:17 GMT):
so, I caused this situation " Abandoning block (3, S:, P:ebaafd02) no batches added", which put publisher (I think) in a very tight loop. the generated block had a single invalid batch. are we maybe not removing invalid txn from the pending queue?

jsmitchell (Tue, 02 May 2017 20:27:32 GMT):
boyd has a defect up about that in jira

jsmitchell (Tue, 02 May 2017 20:27:37 GMT):
@boydjohnson

jsmitchell (Tue, 02 May 2017 20:27:58 GMT):
it's got something to do with the last batch being invalid

jsmitchell (Tue, 02 May 2017 20:28:06 GMT):
if you submit more work to it, it should continue

jsmitchell (Tue, 02 May 2017 20:28:27 GMT):
i have seen it several times too

boydjohnson (Tue, 02 May 2017 20:28:36 GMT):
Yeah, there is a a diff that I linked to in the jira story, that can create it in intkey_smoke.

amundson (Tue, 02 May 2017 20:28:43 GMT):
does that assume I can generate valid batches? :) not with this xo implementation! :)

jsmitchell (Tue, 02 May 2017 20:29:53 GMT):
you can run intkey workload in parallel to generate some valid stuff

amundson (Tue, 02 May 2017 20:36:31 GMT):
@boydjohnson if a TP crashes without disconnecting cleanly, do we expect the validator to continue to work if you re-connect the TP?

boydjohnson (Tue, 02 May 2017 20:37:15 GMT):
No, that doesn't happen as of yet.

amundson (Tue, 02 May 2017 20:37:52 GMT):
ok

boydjohnson (Tue, 02 May 2017 20:37:53 GMT):
That might be similar to handling of the tp response of internal_error.

amundson (Tue, 02 May 2017 20:38:37 GMT):
actually, internal_error in the sdk invalidated the transaction I think, which is bad

boydjohnson (Tue, 02 May 2017 20:38:38 GMT):
Maybe not, though, but both would be in the TransactionExcetor.

boydjohnson (Tue, 02 May 2017 20:38:53 GMT):
Yeah, that is true.

cianx (Tue, 02 May 2017 20:38:58 GMT):
The block publisher does not hold and resubit transactions

amundson (Tue, 02 May 2017 20:39:39 GMT):
@cianx - that seems fine, the executor should try harder on TP internal errors

boydjohnson (Tue, 02 May 2017 20:40:12 GMT):
I think @cianx was talking about our previous discussion of invalid batches being replayed indefinitely.

cianx (Tue, 02 May 2017 20:40:26 GMT):
corret

amundson (Tue, 02 May 2017 20:40:29 GMT):
ah, ok

cianx (Tue, 02 May 2017 20:40:29 GMT):
*correct

jsmitchell (Tue, 02 May 2017 20:41:00 GMT):
yeah, it's some bug where that batch status isn't getting reflected on block abort

jsmitchell (Tue, 02 May 2017 20:41:18 GMT):
when the only candidate batch is invalid

amundson (Tue, 02 May 2017 20:41:21 GMT):
@boydjohnson so you think this internal error interpreted as invalid txn is a validator issue and not go-sdk specific?

boydjohnson (Tue, 02 May 2017 20:42:31 GMT):
Oh, definitly. The TransactionExecutor treats them as the same, because what the exact right thing to do, I thought, was a little complicated and so I deferred it.

amundson (Tue, 02 May 2017 20:45:07 GMT):
@boydjohnson - do we have a JIRA for it?

boydjohnson (Tue, 02 May 2017 20:46:26 GMT):
I don't think so. More thinking and talking about it seems important, too. I can make a jira for validator handling of the interal error message.

amundson (Tue, 02 May 2017 20:48:33 GMT):
@boydjohnson I'll create one, I need to test hyperledger jira access anyway

boydjohnson (Tue, 02 May 2017 20:48:48 GMT):
Cool, thanks!

amundson (Tue, 02 May 2017 21:00:52 GMT):
thinking we should start using priority field, especially for bugs

amundson (Tue, 02 May 2017 21:00:59 GMT):
@mfford ^

mfford (Tue, 02 May 2017 21:03:08 GMT):
That field is available. You can set priority ranging from Highest to Lowest.

amundson (Tue, 02 May 2017 21:04:04 GMT):
we will probably need to define objectively what those mean

amundson (Tue, 02 May 2017 21:07:45 GMT):
also components, so we can list all "high bugs related to transaction execution" for example

amundson (Tue, 02 May 2017 21:07:59 GMT):
that will probably require some debate as to how we draw the lines

mfford (Tue, 02 May 2017 21:09:26 GMT):
We can work through that as we build this out

amundson (Tue, 02 May 2017 21:53:18 GMT):
for the TP crash issue where executor doesn't recover - https://jira.hyperledger.org/browse/STL-37

amundson (Tue, 02 May 2017 21:54:10 GMT):
for the xo create --wait not working issue - https://jira.hyperledger.org/browse/STL-34

amundson (Tue, 02 May 2017 21:54:24 GMT):
@zac you might want to add some thoughts on STL-34

amundson (Tue, 02 May 2017 21:55:14 GMT):
For the internal errors treated like invalid transactions - https://jira.hyperledger.org/browse/STL-31

amundson (Tue, 02 May 2017 21:55:24 GMT):
(mentioning these here in case people want to add more info/comments)

amundson (Tue, 02 May 2017 22:07:03 GMT):
for the discussion about printing a log statement when starting up with no genesis block: https://jira.hyperledger.org/browse/STL-39

amundson (Tue, 02 May 2017 22:07:38 GMT):
maybe that one should be a feature request, doesn't sound like it's actually buggy

zac (Tue, 02 May 2017 22:17:00 GMT):
I have added a comment to the issue

jpdias (Wed, 03 May 2017 13:22:25 GMT):
Has joined the channel.

adamludvik (Wed, 03 May 2017 18:36:46 GMT):
What is the difference between `--join` and `--peers` for the validator?

toddojala (Wed, 03 May 2017 18:42:58 GMT):
@adamludvik I think that --join specifies which hosts to connect to for the initial connection to the network. --peers is the list of all the hosts to connect to, not just the initial connection.

toddojala (Wed, 03 May 2017 18:43:15 GMT):
I got this idea from looking at the validator -help

adamludvik (Wed, 03 May 2017 18:50:07 GMT):
Thanks @toddojala. James serendipitously walked up stairs after posting this and I asked him in person. `--join` is used to point at a validator from which you want gather peering information from. `--peers` is used to specify a static list of peers that should be peered with.

adamludvik (Wed, 03 May 2017 18:50:47 GMT):
So if you are using `--peering dynamic` you can just point `--join` at a validator and it will gather peering info from it and make connections based on that.

boydjohnson (Wed, 03 May 2017 18:55:20 GMT):
You can also do `--peering dynamic` and have `--peers` be non-empty, too.

adamludvik (Wed, 03 May 2017 18:57:02 GMT):
I also learned that peering is bidirectional, so setting `--peers` to a list of all other validators may be creating duplicate connections. The static peering in poet-smoke is the correct way to create a fully-connected network.

Dan (Wed, 03 May 2017 19:17:03 GMT):
if --peering isn't specified is the default dynamic?

boydjohnson (Wed, 03 May 2017 19:24:30 GMT):
No, the default is static.

zzying (Thu, 04 May 2017 07:42:09 GMT):
Has left the channel.

amundson (Thu, 04 May 2017 14:31:58 GMT):
I have a set of data files which will cause the journal to spin in a loop the first time it receives a transaction, but no transaction ever makes it to a TP

amundson (Thu, 04 May 2017 14:32:31 GMT):
not sure how I caused it exactly

amundson (Thu, 04 May 2017 14:33:01 GMT):
would be handy to have a block inspector for the data files

amundson (Thu, 04 May 2017 14:37:11 GMT):
please add ideas for what you might want in such a tool here: https://jira.hyperledger.org/browse/STL-89

jsmitchell (Thu, 04 May 2017 14:42:14 GMT):
What's the validator logging when it's in this loop?

Dan (Thu, 04 May 2017 14:44:37 GMT):
+1 block inspector tool. (I'd thumbs up your post, but rocketchat can't seem to hold onto the mouse focus for the context menu)

amundson (Thu, 04 May 2017 14:49:22 GMT):
@jsmitchell - I last ran with these data files a couple days ago, so I don't have the output without resetting back to those files.

amundson (Thu, 04 May 2017 14:50:52 GMT):
I have two related proposals I just entered into JIRA. The first is to remove the subprocess backend for the 'sawtooth cluster' command. The second is to remove the 'sawtooth cluster' command completely. Please comment on these if you want either to be kept around. https://jira.hyperledger.org/browse/STL-90 https://jira.hyperledger.org/browse/STL-91

amundson (Thu, 04 May 2017 15:00:06 GMT):
@mitchell - does --peers make sense if you are using --peering dynamic?

jsmitchell (Thu, 04 May 2017 15:00:27 GMT):
Yes, it supports both simultaneously

jsmitchell (Thu, 04 May 2017 15:00:56 GMT):
It will peer with the static ones you provide and also build out topology up to the minimum peering threshold

Dan (Thu, 04 May 2017 15:51:02 GMT):
does this link work for anyone? http://intelledger.github.io/sawtooth_cli.html

toddojala (Thu, 04 May 2017 15:51:21 GMT):
not for me.

Dan (Thu, 04 May 2017 15:51:36 GMT):
thanks. could you look into why that's broken?

toddojala (Thu, 04 May 2017 15:51:43 GMT):
roger

Dan (Thu, 04 May 2017 15:56:34 GMT):
I was going to look for how to use docker compose in lieu of sawtooth cluster.

Dan (Thu, 04 May 2017 15:57:48 GMT):
I see a simple example in the getting started section. If I wanted to set up a network of let's say 10 validators within my vagrant shell do we have some instructions somewhere?

boydjohnson (Thu, 04 May 2017 16:00:56 GMT):
We don't have for that, but you could look at integration/sawtooth_integration/docker/poet-smoke.yaml for an example of a multi-validator configuration.

amundson (Thu, 04 May 2017 16:33:37 GMT):
@Dan url changed - http://intelledger.github.io/cli.html

amundson (Thu, 04 May 2017 17:56:25 GMT):
```[17:55:44.736 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:44.736 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:44.838 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:44.839 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:44.941 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:44.942 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:45.043 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:45.044 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:45.060 DEBUG dispatch] Removed send_message function for connection ServerThread [17:55:45.145 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:45.146 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:45.247 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:45.248 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:45.349 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:45.350 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:45.452 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e```

amundson (Thu, 04 May 2017 17:56:58 GMT):
@jsmitchell ^ replicated the same issue again

amundson (Thu, 04 May 2017 17:57:59 GMT):
```ubuntu@ubuntu-xenial:/project/sawtooth-core$ ./bin/validator -vv --public-uri tcp://localhost:8800 [17:55:02.536 INFO path] Skipping path loading from non-existent config file: /home/ubuntu/sawtooth/etc/path.toml [17:55:02.537 INFO keys] Loading signing key: /home/ubuntu/sawtooth/keys/validator.priv [17:55:02.539 INFO cli] config [path]: config_dir = "/home/ubuntu/sawtooth/etc" [17:55:02.540 INFO cli] config [path]: key_dir = "/home/ubuntu/sawtooth/keys" [17:55:02.540 INFO cli] config [path]: data_dir = "/home/ubuntu/sawtooth/data" [17:55:02.540 INFO cli] config [path]: log_dir = "/home/ubuntu/sawtooth/logs" [17:55:02.541 DEBUG core] database file is /home/ubuntu/sawtooth/data/merkle-00.lmdb [17:55:02.541 DEBUG core] state delta store file is /home/ubuntu/sawtooth/data/state-deltas-00.lmdb [17:55:02.542 DEBUG core] block store file is /home/ubuntu/sawtooth/data/block-00.lmdb [17:55:02.545 DEBUG selector_events] Using selector: ZMQSelector [17:55:02.546 DEBUG dispatch] Added send_message function for connection ServerThread [17:55:02.547 DEBUG genesis] genesis_batch_file: None [17:55:02.548 DEBUG genesis] chain_head: ba948f5f(1, S:708ca7fb, P:0b7cc994) True [17:55:02.549 DEBUG genesis] block_chain_id: 0b7cc994902e7e8df0bb5bb7d336a2c8c501d886954f1486b55e7e89f67ed4061dec60e3c386c8640f0aeb272ec969465d5d686ff7e4b0753cd6e7cf0ae75b22 [17:55:02.550 DEBUG genesis] Requires genesis: False [17:55:02.551 DEBUG selector_events] Using selector: ZMQSelector [17:55:02.551 DEBUG dispatch] Added send_message function for connection ServerThread [17:55:02.553 INFO chain] Chain controller initialized with chain head: ba948f5f(1, S:708ca7fb, P:0b7cc994) [17:55:02.553 INFO publisher] Now building on top of block: ba948f5f(1, S:708ca7fb, P:0b7cc994) [17:55:29.803 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 102 bytes [17:55:29.804 INFO processor_handlers] registered transaction processor: connection_id=e56ceed9c0c1308e7e8341ff25192430a1861aaf84a7bdd9cf64564f12672bce18cd00a3739cde386289db285e2b83cfb6b3a1de6a594c552ddae4e5d4f98d64, family=xo, version=1.0, encoding=csv-utf8, namespaces=['5b7349'] [17:55:29.805 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'04f7f956-b79e-491b-8f9f-48c208d350ee' [17:55:31.257 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1122 bytes [17:55:31.272 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:31.274 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'1fc06e4391e043d6' [17:55:31.374 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:31.479 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e [17:55:31.479 DEBUG publisher] Abandoning block (2, S:, P:ba948f5f) no batches added [17:55:31.581 DEBUG publisher] Dropping previously committed batch: bed9c2659f1ac3263b4551110c99e349415cf39a5c5d238806dac2999474af9566cf02b20448392e4f4d753715b9e74e180118f338925e0d2c679f4152dacd5e```

amundson (Thu, 04 May 2017 17:58:12 GMT):
that includes the message prior

jsmitchell (Thu, 04 May 2017 17:58:39 GMT):
@amundson: that seems similar to a defect in jira related to the publisher seeming to lose state on invalid batches, when the last batch is determined to be invalid

jsmitchell (Thu, 04 May 2017 17:59:05 GMT):
looks like it's a duplicate

amundson (Thu, 04 May 2017 17:59:09 GMT):
maybe. but I'd describe this as 'can't restart the validator'

jsmitchell (Thu, 04 May 2017 17:59:25 GMT):
which triggers block publishing

jsmitchell (Thu, 04 May 2017 17:59:43 GMT):
which fails (abandons block) because there is only a single batch and it's bad

amundson (Thu, 04 May 2017 18:00:27 GMT):
don't know how it would know if a batch is bad though, it never talked to a TP

jsmitchell (Thu, 04 May 2017 18:00:48 GMT):
in this case it is bad because it is already in the blockstore

jsmitchell (Thu, 04 May 2017 18:00:53 GMT):
it is a duplicate signature

amundson (Thu, 04 May 2017 18:01:11 GMT):
oh. maybe xo doesn't have a nonce.

jsmitchell (Thu, 04 May 2017 18:02:06 GMT):
so, we need to know why the publisher is seeing duplicates, and why it doesn't dispense of bad batches (for whatever reason) from the pending list so it doesn't get into this looping state

boydjohnson (Thu, 04 May 2017 18:02:09 GMT):
Yes, that is true.

amundson (Thu, 04 May 2017 18:02:40 GMT):
yeah, if I use a different game name, then it works

boydjohnson (Thu, 04 May 2017 18:11:38 GMT):
Hey, @adamludvik Is this Jira story still valid? :https://jira.hyperledger.org/browse/STL-62

adamludvik (Thu, 04 May 2017 18:16:52 GMT):
@boydjohnson Is the `exception Exception as e:` the right way to solve that?

adamludvik (Thu, 04 May 2017 18:16:52 GMT):
@boydjohnson Is the `except Exception as e:` the right way to solve that?

boydjohnson (Thu, 04 May 2017 18:20:40 GMT):
So my thinking was that any uncaught error in the asyncio coroutine would stop messages from being able to be received on that validator, so better to just log the error.

pschwarz (Thu, 04 May 2017 18:22:55 GMT):
We could be smarter about it

adamludvik (Thu, 04 May 2017 18:23:00 GMT):
I think that makes sense in general, but in this case the problem is that an assumption is being made about the length of the list being returned by recv_multipart which isn't valid and is causing an error.

pschwarz (Thu, 04 May 2017 18:23:34 GMT):
That's a pretty naive solution, but we could actually examine the multipart message for the correct pieces

boydjohnson (Thu, 04 May 2017 18:26:42 GMT):
Certainly a naive solution, but the length of the recv_multipart return value is only invalid when a non-dealer socket is connected. We make assumptions in that code that it will only receive messages from a dealer if that socket is a router, or from a router, if that socket is a dealer.

adamludvik (Thu, 04 May 2017 18:28:04 GMT):
I'm not sure that's true. I think you can send n-part messages from a dealer to a router. They are not always 2-part.

boydjohnson (Thu, 04 May 2017 18:31:36 GMT):
That is true. I just looked at the code and had remembered it slightly differently. We are making the assumption that it is a 2-part message, the first part being the identity and the second part being the serialized protobuf bytes of a validator_pb2.Message() instance.

adamludvik (Thu, 04 May 2017 18:36:06 GMT):
So I guess the issue is resolved in that the validator no longer crashes when receiving a >2-part message. If we have a problem with using broad excepts in general, maybe that should be a separate story.

benjaminbollen (Thu, 04 May 2017 18:36:20 GMT):
I guess I should post this here: > benjaminbollen 8:34 PM > hi Shawn, I have to run now but I made a first [non-building!] PR here : https://github.com/hyperledger/sawtooth-core/pull/415 with some initial explanation of where I am the packages introduced will function as a complete set; the non-building should be related to the gopath etc

benjaminbollen (Thu, 04 May 2017 18:36:20 GMT):
I guess I should post this here: > benjaminbollen 8:34 PM > hi Shawn, I have to run now but I made a first [non-building!] PR here : https://github.com/hyperledger/sawtooth-core/pull/415 > with some initial explanation of where I am the packages introduced will function as a complete set; the non-building should be related to the gopath etc

benjaminbollen (Thu, 04 May 2017 18:36:20 GMT):
I guess I should post this here: > benjaminbollen 8:34 PM > hi Shawn, I have to run now but I made a first [non-building!] PR here : https://github.com/hyperledger/sawtooth-core/pull/415 > with some initial explanation of where I am > the packages introduced will function as a complete set; the non-building should be related to the gopath etc

adamludvik (Thu, 04 May 2017 18:40:25 GMT):
@benjaminbollen The PR broke because we have a whitelist of users who can run PRs automatically on our build server. I started a one-off run with the whitelist check disabled for you.

chrisconway (Thu, 04 May 2017 20:28:33 GMT):
Has joined the channel.

Dan (Thu, 04 May 2017 21:27:15 GMT):
Let's add ben to the white list please

mvp1108 (Thu, 04 May 2017 23:10:02 GMT):
Has joined the channel.

mvp1108 (Thu, 04 May 2017 23:11:41 GMT):
hi, working my way through the tutorial for submitting to the REST API from Python, and stuck on some code that doesn't work in my Python 2.7.10 environment --

mvp1108 (Thu, 04 May 2017 23:11:47 GMT):
```key_handler = secp256k1.PrivateKey(private_key) # No need to manually generate a SHA-256 hash in Python txn_signature_bytes = key_handler.ecdsa_sign(txn_header_bytes) txn_signature_hex = txn_signature_bytes.hex()```

mvp1108 (Thu, 04 May 2017 23:12:15 GMT):
I get an error saying that the txn_signature_bytes object doesn't implement a hex() method

mvp1108 (Thu, 04 May 2017 23:12:30 GMT):
it appears to be a wrapper to a C pointer?

mvp1108 (Thu, 04 May 2017 23:19:06 GMT):
there was a place earlier in the code where hex() wouldn't work but .encode("hex") did, but that doesn't work here

amundson (Thu, 04 May 2017 23:33:37 GMT):
@mvp1108 - those docs are for python 3

amundson (Thu, 04 May 2017 23:34:59 GMT):
I confirmed here that they work with python 3 and not python 2.7

amundson (Thu, 04 May 2017 23:39:09 GMT):
@mvp1108 I opened a JIRA issue for this here - https://jira.hyperledger.org/browse/STL-97

amundson (Thu, 04 May 2017 23:40:45 GMT):
@mvp1108 is python 2.7 support important for you?

amundson (Thu, 04 May 2017 23:47:01 GMT):
Also opened https://jira.hyperledger.org/browse/STL-98 - if you want python 2.7 support, please add a comment there in support of this task.

mvp1108 (Thu, 04 May 2017 23:57:29 GMT):
thanks @amundson -- any chance you know how to code that in 2.7? Also, I wasn't able to log into your JIRA board -- I just opened a hyperledger account today but used Facebook SSO...

amundson (Fri, 05 May 2017 00:02:52 GMT):
I can look in a few hours and see if I can figure it out. I haven't tried to sign anything with python 2 since we switched the signing implementation.

jsmitchell (Fri, 05 May 2017 00:03:35 GMT):
That doesn't look like it's using our signing package

jsmitchell (Fri, 05 May 2017 00:03:49 GMT):
It's using secp256k directly

mvp1108 (Fri, 05 May 2017 00:04:00 GMT):
right

mvp1108 (Fri, 05 May 2017 00:04:45 GMT):
well maybe I will try the Javascript tutorial...another victory for node! :-)

jjason (Fri, 05 May 2017 15:11:31 GMT):
@mvp1108 Can you try to following to see if it solves your problem with converting to hex: ``` import binascii txn_signature_hex = binascii.hexlify(key_handler.ecdsa_serialize(txn_signature_bytes)) ```

jjason (Fri, 05 May 2017 15:11:31 GMT):
@mvp1108 Can you try the following to see if it solves your problem with converting to hex: ``` import binascii txn_signature_hex = binascii.hexlify(key_handler.ecdsa_serialize(txn_signature_bytes)) ```

chrisconway (Fri, 05 May 2017 15:18:15 GMT):
$ sawtooth keygen my_key $ sawtooth config proposal create --key /home/ubuntu/.sawtooth/keys/my_key.priv sawtooth.validator.transaction_families='[{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}, {"family":"sawtooth_config", "version":"1.0", "encoding":"application/protobuf"}]'

chrisconway (Fri, 05 May 2017 15:19:41 GMT):
Creates a my_key.wif and my_key.addr and then throws an error because there is no my_key.priv

jsmitchell (Fri, 05 May 2017 15:20:20 GMT):
are you on current master?

jsmitchell (Fri, 05 May 2017 15:20:33 GMT):
sawtooth keygen should create a priv and a pub file

jsmitchell (Fri, 05 May 2017 15:20:47 GMT):
not a wif and an addr

jsmitchell (Fri, 05 May 2017 15:21:45 GMT):
as of this commit https://github.com/hyperledger/sawtooth-core/commit/144d4335658dc70c1d8c340cbdcc08ea254980d1

Dan (Fri, 05 May 2017 15:32:07 GMT):
Anyone know a trick to hiding whitespace in github diffs? I thought I found a hidden trick with adding ?w=1 to the url but that doesn't work. I see subsequent github conversations talking about 'hide space' buttons that don't seem to have made it out to github.com.

jsmitchell (Fri, 05 May 2017 15:33:15 GMT):
what do you mean by 'hiding whitespace'?

Dan (Fri, 05 May 2017 15:36:11 GMT):
https://github.com/camsong/chrome-github-mate/issues/5

jsmitchell (Fri, 05 May 2017 15:38:01 GMT):
this seems like a terrible idea

jsmitchell (Fri, 05 May 2017 15:38:14 GMT):
but, that link is for a chrome extension, not github

Dan (Fri, 05 May 2017 15:38:31 GMT):
right but it conveys the feature I was looking for

Dan (Fri, 05 May 2017 15:39:08 GMT):
I don't think you should ignore whitespace in a review, but when you have a large PR bumping up the SNR is helpful.

Dan (Fri, 05 May 2017 15:39:08 GMT):
I don't think you should ignore whitespace in a review, but when you have a large PR bumping up the SnR is helpful.

jsmitchell (Fri, 05 May 2017 15:42:50 GMT):
there is an argument to git diff that does this

jsmitchell (Fri, 05 May 2017 15:43:12 GMT):
`git diff -b` or `git diff -w`

Dan (Fri, 05 May 2017 15:44:38 GMT):
cool. did not know that.

Dan (Fri, 05 May 2017 15:44:40 GMT):
thanks

chrisconway (Fri, 05 May 2017 16:29:57 GMT):
@jsmitchell thanks for getting back to me so fast :) I cloned sawtooth-core last night. I ran the commands from inside the compose_client_1 container built with the hyperledger/sawtooth-all:unstable image from the demo. I appreciate the commit reference because it gave me the confidence to change the name to my_key.priv and things seem to be working now :)

jsmitchell (Fri, 05 May 2017 16:30:38 GMT):
Hrmmmmm

chrisconway (Fri, 05 May 2017 16:35:17 GMT):
Is there a better set of images to be using?

adamludvik (Fri, 05 May 2017 16:59:33 GMT):
@chrisconway Right now our docs are tracking master but our DockerHub images and repo.sawtooth.me/ubuntu/0.8/stable are tracking stable versions. This led to the inconsistency you saw. We are creating a JIRA task to start publishing two versions of the docs, one for stable and one for master to avoid this problem in the future.

AlexCacciamani (Fri, 05 May 2017 17:49:26 GMT):
Hello im on branch 0.7, looking at the extension examples like marketplace and sawtooth xo. I'm finding a warning message on the validator:

AlexCacciamani (Fri, 05 May 2017 17:49:42 GMT):
[17:49:16 WARNING root_page] /Xo/Transaction - NoResource [17:49:16 WARNING root_page] ['Xo', 'Transaction'] - 2

AlexCacciamani (Fri, 05 May 2017 17:49:47 GMT):
is this normal?

AlexCacciamani (Fri, 05 May 2017 17:49:56 GMT):
thanks :)

AlexCacciamani (Fri, 05 May 2017 17:51:20 GMT):
im also seeing it with the marketplace validator transaction family too...

AlexCacciamani (Fri, 05 May 2017 17:51:20 GMT):
im also seeing it with the marketplace validator transaction family ..

AlexCacciamani (Fri, 05 May 2017 17:51:20 GMT):
im also seeing it with the marketplace validator transaction family ...

boydjohnson (Fri, 05 May 2017 17:51:29 GMT):
@AlexCacciamani I think both of those logging statements are normal (but abnormally bad logging statements in the validator http interface).

AlexCacciamani (Fri, 05 May 2017 17:51:34 GMT):
thanks!

AlexCacciamani (Fri, 05 May 2017 17:57:12 GMT):
An entry level question, how do i force the journal to commit the current block, even if no transactions exist?

AlexCacciamani (Fri, 05 May 2017 17:57:12 GMT):
An entry level question, how do i force the journal to commit the current block? So it doesnt wait for the timer

AlexCacciamani (Fri, 05 May 2017 17:57:26 GMT):
or is that not possible?

boydjohnson (Fri, 05 May 2017 18:00:06 GMT):
I can't fully answer that. Would that be part of constructing a byzantine (or in some way malicious) validator?

AlexCacciamani (Fri, 05 May 2017 18:00:47 GMT):
not at all; just wondering if i had the scenario of a long TIMER variable

AlexCacciamani (Fri, 05 May 2017 18:00:47 GMT):
not at all; just wondering if i had the scenario of a long TIMER variable, but i wanted, at some point on an administrative level be able to commit the current block

boydjohnson (Fri, 05 May 2017 18:02:49 GMT):
You can set poet configurations related to target wait time, or for simple testing use a DevMode consensus on a single validator, but I don't think it is possible or desirable to force a validator to commit the current block.

AlexCacciamani (Fri, 05 May 2017 18:03:07 GMT):
okay, thanks

boydjohnson (Fri, 05 May 2017 18:03:22 GMT):
No problem.

mvp1108 (Fri, 05 May 2017 18:11:30 GMT):
@jjason that worked, thanks

mvp1108 (Fri, 05 May 2017 18:11:33 GMT):
however

mvp1108 (Fri, 05 May 2017 18:12:13 GMT):
now that I can submit a batch to my local validator (I'm just doing the tutorial, Docker-flavor), I get a 400 back saying the batch signature is invalid

mvp1108 (Fri, 05 May 2017 18:13:36 GMT):

Message Attachments

mvp1108 (Fri, 05 May 2017 18:13:44 GMT):
that's what I have right now

mvp1108 (Fri, 05 May 2017 18:13:55 GMT):
for running under python 2.7

mvp1108 (Fri, 05 May 2017 18:14:02 GMT):
thoughts?

ChrisCortez (Fri, 05 May 2017 18:18:46 GMT):
Has joined the channel.

AlexCacciamani (Fri, 05 May 2017 18:20:47 GMT):
`test`

Dan (Fri, 05 May 2017 18:48:57 GMT):
Can you run with python 3? or do you need to work with 2.7 for other reasons?

amundson (Fri, 05 May 2017 19:14:28 GMT):
@Dan - JIRA for the bug you found earlier - https://jira.hyperledger.org/browse/STL-118

mvp1108 (Fri, 05 May 2017 20:04:45 GMT):
@Dan well I installed python 3 yesterday side by side and even made a virtualenv but when I tried pip3 install I got a strange error, I think because it was already installed on the 2.x side and involves native C code?

mvp1108 (Fri, 05 May 2017 20:06:11 GMT):
does the code I posted look like it is at least taking the correct steps to create a hex representation of the public key?

Dan (Fri, 05 May 2017 20:16:59 GMT):
let me try it out ...

amundson (Fri, 05 May 2017 20:22:07 GMT):
just tested out @adamludvik 's latest go SDK additions and restarting the a go TP works great! awesome.

amundson (Fri, 05 May 2017 20:22:07 GMT):
just tested out @adamludvik 's latest go SDK additions and restarting a go TP works great! awesome.

toddojala (Fri, 05 May 2017 20:23:00 GMT):
Awesome

jjason (Fri, 05 May 2017 20:23:56 GMT):
@mvp1108 Can you post a larger snippet of your code as all I can find is the part where you sign the transaction?

Dan (Fri, 05 May 2017 20:23:58 GMT):
@mvp1108 instead of `public_key_hex = public_key_bytes.encode("hex")` try using `public_key_hex = binascii.hexlify(public_key_bytes).decode()

Dan (Fri, 05 May 2017 20:23:58 GMT):
@mvp1108 instead of `public_key_hex = public_key_bytes.encode("hex")` try using `public_key_hex = binascii.hexlify(public_key_bytes).decode()`

mvp1108 (Fri, 05 May 2017 20:24:26 GMT):
k

Dan (Fri, 05 May 2017 20:24:48 GMT):
and then it looks like you are signing the batch using a different mechanism.

mvp1108 (Fri, 05 May 2017 20:25:00 GMT):
@jjason the submit_transaction.py.txt file I posted has it all

mvp1108 (Fri, 05 May 2017 20:25:06 GMT):
really?

jjason (Fri, 05 May 2017 20:25:07 GMT):
@mvp1108 Thx.

Dan (Fri, 05 May 2017 20:25:50 GMT):
oh n/m @mvp1108 I misread the method for the batch signing.

mvp1108 (Fri, 05 May 2017 20:28:21 GMT):
@Dan still getting: 400: A submitted batch had an invalid signature

jjason (Fri, 05 May 2017 20:31:06 GMT):
@mvp1108 @Dan I think you meant `public_key_hex = binascii.hexlify(public_key_bytes)` however I don't think that should matter.

jjason (Fri, 05 May 2017 20:31:22 GMT):
I think `public_key_bytes.encode("hex")` should work fine

mvp1108 (Fri, 05 May 2017 20:31:24 GMT):
y tried it both ways

mvp1108 (Fri, 05 May 2017 20:31:36 GMT):
with and without decode()

Dan (Fri, 05 May 2017 20:42:56 GMT):
On my phone atm, but I can look closer in a bit.

jjason (Fri, 05 May 2017 20:46:54 GMT):
I can also look at it. Give me a bit though, as I don't have Python 2.7 environment currently working with master branch.

Dan (Fri, 05 May 2017 21:02:15 GMT):
@mvp1108 what was the pip3 error you got?

mvp1108 (Fri, 05 May 2017 21:07:57 GMT):
one sec

mvp1108 (Fri, 05 May 2017 21:09:46 GMT):
```Installing collected packages: secp256k1 Running setup.py install for secp256k1 ... error Complete output from command /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-h5cbx3u2-record/install-record.txt --single-version-externally-managed --compile: 0.29.2 Using bundled libsecp256k1 running install running build running build_py creating build creating build/lib.macosx-10.6-intel-3.6 creating build/lib.macosx-10.6-intel-3.6/secp256k1 copying secp256k1/__init__.py -> build/lib.macosx-10.6-intel-3.6/secp256k1 copying secp256k1/__main__.py -> build/lib.macosx-10.6-intel-3.6/secp256k1 running build_clib /private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/libsecp256k1/autogen.sh: line 3: autoreconf: command not found Traceback (most recent call last): File "", line 1, in File "/private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/setup.py", line 295, in "Topic :: Security :: Cryptography" File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/core.py", line 148, in setup dist.run_commands() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 955, in run_commands self.run_command(cmd) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/command/install.py", line 61, in run return orig.install.run(self) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/command/install.py", line 545, in run self.run_command('build') File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/setup.py", line 165, in run cwd=absolute("libsecp256k1"), File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 291, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/libsecp256k1/autogen.sh']' returned non-zero exit status 127. ---------------------------------------- Command "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-h5cbx3u2-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/x9/xlqxyzhd269bqpkxv73lyf91n7pfzq/T/pip-build-pzk5_y0b/secp256k1/```

Dan (Fri, 05 May 2017 21:11:39 GMT):
@mvp1108 this might be it.. I see you have serialize but probably need serialize_compact for what sawtooth is expecting `txn_signature_hex = binascii.hexlify(key_handler.ecdsa_serialize_compact(txn_signature_bytes))`

mvp1108 (Fri, 05 May 2017 21:12:04 GMT):
ah

mvp1108 (Fri, 05 May 2017 21:13:01 GMT):
for both of them right?

Dan (Fri, 05 May 2017 21:14:03 GMT):
right

pschwarz (Fri, 05 May 2017 21:14:24 GMT):
Looks like that needs to be corrected in the docs

pschwarz (Fri, 05 May 2017 21:14:42 GMT):
https://intelledger.github.io/_autogen/txn_submit_tutorial_python.html#sign-the-header

pschwarz (Fri, 05 May 2017 21:14:58 GMT):
(if you can double check that, @dan, I'll open a bug for it)

mvp1108 (Fri, 05 May 2017 21:16:01 GMT):
it worked!

Dan (Fri, 05 May 2017 21:16:10 GMT):
yay!

mvp1108 (Fri, 05 May 2017 21:16:12 GMT):
where is the party parrot gif on here?

Dan (Fri, 05 May 2017 21:16:56 GMT):
woot

Dan (Fri, 05 May 2017 21:16:59 GMT):
:woo:

Dan (Fri, 05 May 2017 21:17:15 GMT):
@pscwarz what do you think about that tutorial just using the sawtooth_signing package? It's intended to make all this formating agreement automagic.

Dan (Fri, 05 May 2017 21:17:15 GMT):
@pscwarz what do you think about that tutorial just using the sawtooth_signing package? It's intended to make all this formating

mvp1108 (Fri, 05 May 2017 21:17:30 GMT):
:woot:

pschwarz (Fri, 05 May 2017 21:19:52 GMT):
The purpose of that tutorial was to show how to use the rest api without relying on sawtooth core packages.

pschwarz (Fri, 05 May 2017 21:20:13 GMT):
The javascript version of the same is similar, in that sense (and probably needs the same correction)

mvp1108 (Fri, 05 May 2017 21:22:28 GMT):
y Javascript is broke too, tried that last night in desperation

pschwarz (Fri, 05 May 2017 21:22:47 GMT):
With the same signing issue?

mvp1108 (Fri, 05 May 2017 21:22:53 GMT):
that happy parrot doubles as the canary in the coal mine :-)

pschwarz (Fri, 05 May 2017 21:23:00 GMT):
Haha

mvp1108 (Fri, 05 May 2017 21:23:01 GMT):
y 400 error

pschwarz (Fri, 05 May 2017 21:23:07 GMT):
Cool

pschwarz (Fri, 05 May 2017 21:23:29 GMT):
(well, not cool, but it makes sense)

Dan (Fri, 05 May 2017 21:25:46 GMT):
@pschwarz now that we have the packaging more accessible maybe it would make things easier to use our signing interface.

pschwarz (Fri, 05 May 2017 21:25:47 GMT):
Is that compact format the DER format, @Dan ?

pschwarz (Fri, 05 May 2017 21:26:07 GMT):
Well, we have it in debs, but we don't yet have it in pip packaging

pschwarz (Fri, 05 May 2017 21:26:14 GMT):
Still need to fix the example for JS

Dan (Fri, 05 May 2017 21:26:26 GMT):
no der is different

pschwarz (Fri, 05 May 2017 21:26:30 GMT):
Hm

Dan (Fri, 05 May 2017 21:26:57 GMT):
I had that mislabeled at one point.

pschwarz (Fri, 05 May 2017 21:26:58 GMT):
What is the compact format (or am I going to need to read some source?)

pschwarz (Fri, 05 May 2017 21:26:58 GMT):
What is the compact format (or am I going to need to read some source)?

Dan (Fri, 05 May 2017 21:27:08 GMT):
compact is just the (r,s)

mvp1108 (Fri, 05 May 2017 21:27:10 GMT):
what does it mean when the validator says a transaction in my batch has an unsatisfied dependency?

Dan (Fri, 05 May 2017 21:27:18 GMT):
I think DER prepends some header bytes.

mvp1108 (Fri, 05 May 2017 21:27:26 GMT):
is my blockchain on crack? :-)

pschwarz (Fri, 05 May 2017 21:27:34 GMT):
Gotcha

boydjohnson (Fri, 05 May 2017 21:28:29 GMT):
A transaction can specify a dependency, which is a transaction id of another transaction in a different batch.

pschwarz (Fri, 05 May 2017 21:28:51 GMT):
Then I'm not sure why it doesn't work in JS, since that's what's being produced. Will have to try both examples

boydjohnson (Fri, 05 May 2017 21:31:30 GMT):
@mvp1108, in the TransactionHeader in that txt file you posted, there id a dependencies list with a hard coded string that I can't tell where it comes from. So that transaction id will have to be submitted to the validator in a batch before that transaction will be processed.

boydjohnson (Fri, 05 May 2017 21:31:30 GMT):
@mvp1108, in the TransactionHeader in that txt file you posted, there is a dependencies list with a hard coded string that I can't tell where it comes from. So that transaction id will have to be submitted to the validator in a batch before that transaction will be processed.

pschwarz (Fri, 05 May 2017 21:58:04 GMT):
@boydjohnson was there as part of the example, but for @mvp1108's case it can be empty.

pschwarz (Fri, 05 May 2017 21:58:04 GMT):
@boydjohnson the dependency was there as part of the example, but for @mvp1108's case it can be empty.

boydjohnson (Fri, 05 May 2017 22:02:26 GMT):
Oh, cool. I hadn't looked at that. The note below that python snippet seems to explain it.

Dan (Fri, 05 May 2017 22:04:26 GMT):
@mvp1108 if there was anything unclear in that doc - in addition to or besides these items, feel free to suggest some edits in a PR. and/or lay claim to the jira ticket that @pschwarz did or will create.

mvp1108 (Fri, 05 May 2017 22:04:54 GMT):
I had trouble logging into your JIRA -- can I use mvp1108 somehow

mvp1108 (Fri, 05 May 2017 22:05:55 GMT):
also, what does it mean when validator says "scheduler is finalized, cannot take new batches?" I am running docker containers started with docker compose per tutorial.

boydjohnson (Fri, 05 May 2017 22:09:37 GMT):
The scheduler is finalized, cannot take new batches" logging statement is when the block publishing portion of the code has determined through consensus that it can take a new block, and so won't be adding any new batches to that block and is just waiting on a calculation of the state hash.

Dan (Fri, 05 May 2017 22:10:17 GMT):
so that's just like an info statement not an error @boydjohnson ?

boydjohnson (Fri, 05 May 2017 22:10:27 GMT):
Yeah, definitely.

Dan (Fri, 05 May 2017 22:11:00 GMT):
@mvp1108 I think you can just use that handle as your linux foundation ID. @rjones would mvp need any special permissions?

rjones (Fri, 05 May 2017 22:11:00 GMT):
Has joined the channel.

mvp1108 (Fri, 05 May 2017 22:11:58 GMT):
I couldn't get the password to work, asked it to send me a reset link but email never came../

Dan (Fri, 05 May 2017 22:12:16 GMT):
You should submit a bug about that ... oh wait ;)

rjones (Fri, 05 May 2017 22:12:56 GMT):
I HEAR YOUR SUMMONS

rjones (Fri, 05 May 2017 22:13:25 GMT):
@mvp1108 what is your LFID? (username)

mvp1108 (Fri, 05 May 2017 22:14:23 GMT):
mvp1108 if anything

rjones (Fri, 05 May 2017 22:14:52 GMT):
it is. I'll take the rest of this debugging to DM

Dan (Fri, 05 May 2017 22:21:28 GMT):
:D

pschwarz (Fri, 05 May 2017 22:50:17 GMT):
@mvp1108 @dan Created https://jira.hyperledger.org/browse/STL-125 for the above doc issues

rjones (Fri, 05 May 2017 22:57:38 GMT):
@Dan for some reason I left the volume on my other machine ALL THE WAY UP so when you summoned me to the channel I got a super-loud DING-DONG

Dan (Fri, 05 May 2017 23:27:31 GMT):
So did you @rjones

Dan (Fri, 05 May 2017 23:27:40 GMT):
Change the @rjones

Dan (Fri, 05 May 2017 23:27:52 GMT):
Volume @rjones ?

rjones (Fri, 05 May 2017 23:28:06 GMT):
well, I exited the client on that machine, so... yes

Dan (Fri, 05 May 2017 23:28:19 GMT):
Awwwww :(

Dan (Fri, 05 May 2017 23:28:41 GMT):
There goes my friday night fun.

rjones (Fri, 05 May 2017 23:29:50 GMT):
:)

bmkor (Sat, 06 May 2017 05:19:18 GMT):
Has joined the channel.

MohammadObaid (Sat, 06 May 2017 06:41:16 GMT):
Has joined the channel.

verasnt (Sat, 06 May 2017 14:10:28 GMT):
Has joined the channel.

verasnt (Sat, 06 May 2017 14:11:39 GMT):
hello guys! I want to help the project o/

verasnt (Sat, 06 May 2017 14:15:26 GMT):
i've been reading the docs and i'll try to build and 'play' around with sawtooth a little bit in my machine.. BUT, please, send me the tasks or point me some directions that i can learn and help in a more effective way

verasnt (Sat, 06 May 2017 14:15:29 GMT):
:D

verasnt (Sat, 06 May 2017 14:16:41 GMT):
(i'm from Brazil, sorry about my trash english -- please correct me at anytime ;) )

Dan (Sat, 06 May 2017 15:48:06 GMT):
Ah no, your english is good. Way better than my Portuguese, but that isn't saying much.

Dan (Sat, 06 May 2017 15:48:29 GMT):
We just started filling in tickets on jira:

Dan (Sat, 06 May 2017 15:48:39 GMT):
https://jira.hyperledger.org/secure/RapidBoard.jspa?rapidView=3&view=planning.nodetail&epics=visible

Dan (Sat, 06 May 2017 15:49:43 GMT):
Feel free to also make items if you find inaccuracies in the docs while you are learning.

Dan (Sat, 06 May 2017 15:50:47 GMT):
We change those with the same pull request process. Everything is in sawtooth-core/docs/source/

Dan (Sat, 06 May 2017 15:51:23 GMT):
There's also some relatively new SDKs in several languages if you have a certain language you like.

verasnt (Sat, 06 May 2017 15:52:26 GMT):
roger that.

SahilKapoor (Sat, 06 May 2017 21:23:58 GMT):
Has joined the channel.

verasnt (Sun, 07 May 2017 12:23:03 GMT):
hey guys, i'm translating the sawtooth doc to portuguese(brazilian). I should fork the intelledger repo or create a branch?

verasnt (Sun, 07 May 2017 13:43:05 GMT):
little question.. i was reading the doc, more specific at this page http://intelledger.github.io/architecture/transactions_and_batches.html, and i found a lttle typo.. (alway --> always)

verasnt (Sun, 07 May 2017 13:46:26 GMT):
so i went to gh, fork the sawtooth-docs and i cannot found this specific page in it... Then i fork the sawtooth-core and i found the page, correct the typo and submit a pull request

verasnt (Sun, 07 May 2017 13:47:02 GMT):
is this correct? can i do this?

Dan (Sun, 07 May 2017 16:44:59 GMT):
Yes, all the docs are in sawtooth-core.

Dan (Sun, 07 May 2017 16:45:27 GMT):
Docs in Portuguese will be awesome!

jsmitchell (Mon, 08 May 2017 00:51:29 GMT):
@verasnt Yes, forking the repo and then submitting a PR against master is the right thing to do.

rucha_rangnekar (Mon, 08 May 2017 06:10:51 GMT):
Has joined the channel.

sanket.navin (Mon, 08 May 2017 06:34:13 GMT):
Has joined the channel.

mpiekarska (Mon, 08 May 2017 09:41:34 GMT):
Has joined the channel.

Styxt (Mon, 08 May 2017 10:51:12 GMT):
Has joined the channel.

PacoEcotrust (Mon, 08 May 2017 12:11:47 GMT):
Hi, I am reading about the maintaining the Global State. For example, if in one instance of Sawtooth we had 6 families then we had a tree with 3 levels to represent the 6 families, and the rest specific of the each one of the familie, is it right? Other question, how is saved the radix tree into the block?

PacoEcotrust (Mon, 08 May 2017 12:11:47 GMT):
Hi, I am reading about the maintaining the Global State. For example, if in one instance of Sawtooth we had 6 families then we had a tree with 3 levels to represent the 6 families, and the rest specific of the each one of the familie, is it right? Other question, how is saved the radix tree into the block for each one of the transactions? Thanks very much

verasnt (Mon, 08 May 2017 12:16:39 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=uKwYXJKJ8HmKq6n5q) @Dan YEAH! fingers on fire here :)

boydjohnson (Mon, 08 May 2017 12:59:25 GMT):
@PacoEcotrust I have an answer to your 2nd question, but I'm not sure on your 1st: The merkle root, from the merkle/radix tree at the end of processing the transactions from a valid block, is inserted as part of the block so that every other validator can verify that the ending state that that validator ends up with is the same as for the validator that produced the block.

toddojala (Mon, 08 May 2017 14:14:55 GMT):
@PacoEcotrust Maybe @jsmitchell could help with the first question?

jsmitchell (Mon, 08 May 2017 14:19:23 GMT):
@toddojala why don't you take a crack at it? Seems related to the namespace doc you wrote.

toddojala (Mon, 08 May 2017 14:24:24 GMT):
I shall do so. ;)

PacoEcotrust (Mon, 08 May 2017 15:54:18 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=GxGX9pMMYCQk3u74c) @boydjohnson , Yes, ( Global State-Of the all families) the merkle root into the block, but the rest of the tree?, Thanks

PacoEcotrust (Mon, 08 May 2017 15:54:18 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=GxGX9pMMYCQk3u74c) @boydjohnson , Yes, ( Global State-Of all families) the merkle root into the block, but the rest of the tree?, Thanks

jsmitchell (Mon, 08 May 2017 15:55:11 GMT):
Each node keeps its own copy of the global state

jsmitchell (Mon, 08 May 2017 15:56:28 GMT):
when a block comes in, the transactions are processed, which result in transaction level state changes. If the ordered set of state changes of the transactions in the block result in the same merkle hash that is on the block header, then the state changes are atomically committed to the local copy of state.

PacoEcotrust (Mon, 08 May 2017 15:58:10 GMT):
Yeap, but the Global State is not only the merkle root, is also the rest of components of the tree

jsmitchell (Mon, 08 May 2017 16:03:43 GMT):
the merkle root _refers_ to a version of the tree in global state

zac (Mon, 08 May 2017 16:38:27 GMT):
@mvp1108 @amundson @pschwarz I will address these documentation issues today

zac (Mon, 08 May 2017 16:38:45 GMT):
My feeling is that we should _not_ write 2.7 documentation though

zac (Mon, 08 May 2017 16:39:35 GMT):
The idea isn't to exhaustively document the best way to create a Transaction in every version of every language

zac (Mon, 08 May 2017 16:40:01 GMT):
The idea is to leave a handful of examples of ways you _could_ do it, to better explain the underlying principles

zac (Mon, 08 May 2017 16:40:37 GMT):
If you don't need to understand the underlying principles, you should probably just use one of the SDKs

PacoEcotrust (Mon, 08 May 2017 16:43:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=YoY4g7whQhBurkGS3) @jsmitchell Yes, but the rest of components of the tree where they are saved?

jsmitchell (Mon, 08 May 2017 16:43:18 GMT):
in a key value store on every node

PacoEcotrust (Mon, 08 May 2017 16:49:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=zJ7MvmseoYtSYgjYG) @jsmitchell ..the key is the address and the value is the particular tree?

jsmitchell (Mon, 08 May 2017 16:49:37 GMT):
no

jsmitchell (Mon, 08 May 2017 16:49:59 GMT):
http://intelledger.github.io/architecture/global_state.html

jsmitchell (Mon, 08 May 2017 16:50:31 GMT):
the merkle trie is a set of versioned trees all referenced by their respective state root hashes

jsmitchell (Mon, 08 May 2017 16:50:47 GMT):
the state root hash points to the root node of a given version of the tree

jsmitchell (Mon, 08 May 2017 16:51:12 GMT):
from that point, the radix address can be traversed to find a specific leaf node for that version of the tree

jsmitchell (Mon, 08 May 2017 16:51:41 GMT):
from the perspective of the user of the state, there is data stored at an address

amundson (Mon, 08 May 2017 17:00:18 GMT):
we have a new channel - #sawtooth-burrow for discussion specific to sawtooth+burrow integration

jsmitchell (Mon, 08 May 2017 17:22:02 GMT):
@PacoEcotrust does that make sense?

jsmitchell (Mon, 08 May 2017 17:51:43 GMT):
@cianx: I'm starting to think about this consensus messaging thing

jsmitchell (Mon, 08 May 2017 17:53:11 GMT):
it seems like there would be a need to drive the configuration of the network

jsmitchell (Mon, 08 May 2017 17:53:38 GMT):
e.g. peer in this fashion because of the expectations of the consensus

jsmitchell (Mon, 08 May 2017 17:55:56 GMT):
beyond the questions of the mechanics of consensus messaging

mhart (Mon, 08 May 2017 18:20:28 GMT):
Hi all! What's the expected behavior of the validator when trying to set state at an existing address? I'm currently getting an infinite loop of output

mhart (Mon, 08 May 2017 18:20:38 GMT):
```

mhart (Mon, 08 May 2017 18:20:38 GMT):
``` [18:17:50.425 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added [18:17:50.528 DEBUG publisher] Dropping previously committed batch: 4be7155e1191a3ca137976e1be50ba3dbe2afe7e7604dffe46fbc403dc9cb73455aa9a7f919b1fa6ccf6b23637c16b430892ba308acd45b6f1b6f6042a80be5a [18:17:50.529 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added [18:17:50.631 DEBUG publisher] Dropping previously committed batch: 4be7155e1191a3ca137976e1be50ba3dbe2afe7e7604dffe46fbc403dc9cb73455aa9a7f919b1fa6ccf6b23637c16b430892ba308acd45b6f1b6f6042a80be5a [18:17:50.633 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added [18:17:50.735 DEBUG publisher] Dropping previously committed batch: 4be7155e1191a3ca137976e1be50ba3dbe2afe7e7604dffe46fbc403dc9cb73455aa9a7f919b1fa6ccf6b23637c16b430892ba308acd45b6f1b6f6042a80be5a [18:17:50.736 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added [18:17:50.840 DEBUG publisher] Dropping previously committed batch: 4be7155e1191a3ca137976e1be50ba3dbe2afe7e7604dffe46fbc403dc9cb73455aa9a7f919b1fa6ccf6b23637c16b430892ba308acd45b6f1b6f6042a80be5a [18:17:50.841 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added [18:17:50.943 DEBUG publisher] Dropping previously committed batch: 4be7155e1191a3ca137976e1be50ba3dbe2afe7e7604dffe46fbc403dc9cb73455aa9a7f919b1fa6ccf6b23637c16b430892ba308acd45b6f1b6f6042a80be5a [18:17:50.944 DEBUG publisher] Abandoning block (4, S:, P:8546fe9d) no batches added ```

mhart (Mon, 08 May 2017 18:20:54 GMT):
Just keeps repeating that over and over ^

boydjohnson (Mon, 08 May 2017 18:22:39 GMT):
That is a known bug where if a batch is invalid for any reason (The batch has the same signature as an already committed batch) the block publisher won't clear it out and just keeps repeating it. I'll post the jira issue for this bug, if you want to comment further on it.

mhart (Mon, 08 May 2017 18:23:12 GMT):
right - yep, it has the same signature

mhart (Mon, 08 May 2017 18:23:22 GMT):
basically just submitting the same transaction twice

mhart (Mon, 08 May 2017 18:23:27 GMT):
ok, so known issue, all good

jsmitchell (Mon, 08 May 2017 18:49:15 GMT):
yeah, if sole batch in a block is invalid for any reason, it isn't handled correctly atm

jsmitchell (Mon, 08 May 2017 18:49:48 GMT):
@mhart: if you intended those transactions to be different, you gotta nonce

boydjohnson (Mon, 08 May 2017 18:52:36 GMT):
Here is the jira issue for fixing this bug: https://jira.hyperledger.org/browse/STL-158.

chrisconway (Mon, 08 May 2017 21:49:00 GMT):
```test```

jsmitchell (Mon, 08 May 2017 21:49:11 GMT):
```test succeeded```

chrisconway (Mon, 08 May 2017 21:49:51 GMT):
Unfortunatly, this one does not ```root@fe821b8ef287:/# xo create test Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 42, in __init__ with open(keyfile) as fd: FileNotFoundError: [Errno 2] No such file or directory: '/root/.sawtooth/keys/root.wif' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 357, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 340, in main do_create(args, config) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 275, in do_create keyfile=key_file) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 46, in __init__ raise IOError("Failed to read keys.") OSError: Failed to read keys. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif /root/.sawtooth/keys/root.wif cp: cannot create regular file '/root/.sawtooth/keys/root.wif': No such file or directory root@fe821b8ef287:/# cd root/ root@fe821b8ef287:~# mkdir .sawtooth root@fe821b8ef287:~# cd .sawtooth/ root@fe821b8ef287:~/.sawtooth# mkdir keys root@fe821b8ef287:~/.sawtooth# cd .. root@fe821b8ef287:~# cd .. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# cd etc/sawtooth/keys/root.wif root/.sawtooth/keys/. bash: cd: etc/sawtooth/keys/root.wif: Not a directory root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif root/.sawtooth/keys/. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.addr root/.sawtooth/keys/. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# xo create first Error: root@fe821b8ef287:/# xo create -h usage: xo create [-h] [-v] [--disable-client-validation] [--wait] name positional arguments: name an identifier for the new game optional arguments: -h, --help show this help message and exit -v, --verbose enable more verbose output --disable-client-validation disable client validation --wait wait for this commit before exiting root@fe821b8ef287:/# xo create test -v Error: ```

chrisconway (Mon, 08 May 2017 21:49:51 GMT):
Unfortunatly, this one does not ```root@fe821b8ef287:/# xo create test Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 42, in __init__ with open(keyfile) as fd: FileNotFoundError: [Errno 2] No such file or directory: '/root/.sawtooth/keys/root.wif' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 357, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 340, in main do_create(args, config) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 275, in do_create keyfile=key_file) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 46, in __init__ raise IOError("Failed to read keys.") OSError: Failed to read keys. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif /root/.sawtooth/keys/root.wif cp: cannot create regular file '/root/.sawtooth/keys/root.wif': No such file or directory root@fe821b8ef287:/# cd root/ root@fe821b8ef287:~# mkdir .sawtooth root@fe821b8ef287:~# cd .sawtooth/ root@fe821b8ef287:~/.sawtooth# mkdir keys root@fe821b8ef287:~/.sawtooth# cd .. root@fe821b8ef287:~# cd .. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# cd etc/sawtooth/keys/root.wif root/.sawtooth/keys/. bash: cd: etc/sawtooth/keys/root.wif: Not a directory root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif root/.sawtooth/keys/. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.addr root/.sawtooth/keys/. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# xo create first Error: root@fe821b8ef287:/# xo create -h usage: xo create [-h] [-v] [--disable-client-validation] [--wait] name positional arguments: name an identifier for the new game optional arguments: -h, --help show this help message and exit -v, --verbose enable more verbose output --disable-client-validation disable client validation --wait wait for this commit before exiting root@fe821b8ef287:/# xo create test -v Error: ```

chrisconway (Mon, 08 May 2017 21:49:51 GMT):
Unfortunatly, this one does not ```root@fe821b8ef287:/# xo create test Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 42, in __init__ with open(keyfile) as fd: FileNotFoundError: [Errno 2] No such file or directory: '/root/.sawtooth/keys/root.wif' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 357, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 340, in main do_create(args, config) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 275, in do_create keyfile=key_file) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 46, in __init__ raise IOError("Failed to read keys.") OSError: Failed to read keys. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif /root/.sawtooth/keys/root.wif cp: cannot create regular file '/root/.sawtooth/keys/root.wif': No such file or directory root@fe821b8ef287:/# cd root/ root@fe821b8ef287:~# mkdir .sawtooth root@fe821b8ef287:~# cd .sawtooth/ root@fe821b8ef287:~/.sawtooth# mkdir keys root@fe821b8ef287:~/.sawtooth# cd .. root@fe821b8ef287:~# cd .. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# cd etc/sawtooth/keys/root.wif root/.sawtooth/keys/. bash: cd: etc/sawtooth/keys/root.wif: Not a directory root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif root/.sawtooth/keys/. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.addr root/.sawtooth/keys/. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# xo create first Error: root@fe821b8ef287:/# xo create -h usage: xo create [-h] [-v] [--disable-client-validation] [--wait] name positional arguments: name an identifier for the new game optional arguments: -h, --help show this help message and exit -v, --verbose enable more verbose output --disable-client-validation disable client validation --wait wait for this commit before exiting root@fe821b8ef287:/# xo create test -v Error: ```

chrisconway (Mon, 08 May 2017 21:49:51 GMT):
Unfortunatly, this one does not ```root@fe821b8ef287:/# xo create test Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 42, in __init__ with open(keyfile) as fd: FileNotFoundError: [Errno 2] No such file or directory: '/root/.sawtooth/keys/root.wif' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 357, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 340, in main do_create(args, config) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_cli.py", line 275, in do_create keyfile=key_file) File "/usr/lib/python3/dist-packages/sawtooth_xo/xo_client.py", line 46, in __init__ raise IOError("Failed to read keys.") OSError: Failed to read keys. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif /root/.sawtooth/keys/root.wif cp: cannot create regular file '/root/.sawtooth/keys/root.wif': No such file or directory root@fe821b8ef287:/# cd root/ root@fe821b8ef287:~# mkdir .sawtooth root@fe821b8ef287:~# cd .sawtooth/ root@fe821b8ef287:~/.sawtooth# mkdir keys root@fe821b8ef287:~/.sawtooth# cd .. root@fe821b8ef287:~# cd .. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# cd etc/sawtooth/keys/root.wif root/.sawtooth/keys/. bash: cd: etc/sawtooth/keys/root.wif: Not a directory root@fe821b8ef287:/# cp etc/sawtooth/keys/root.wif root/.sawtooth/keys/. root@fe821b8ef287:/# cp etc/sawtooth/keys/root.addr root/.sawtooth/keys/. root@fe821b8ef287:/# ls batches.intkey bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@fe821b8ef287:/# xo create first Error: root@fe821b8ef287:/# xo create -h usage: xo create [-h] [-v] [--disable-client-validation] [--wait] name positional arguments: name an identifier for the new game optional arguments: -h, --help show this help message and exit -v, --verbose enable more verbose output --disable-client-validation disable client validation --wait wait for this commit before exiting root@fe821b8ef287:/# xo create test -v Error: ```

amundson (Mon, 08 May 2017 21:50:12 GMT):
the ``` have to go on a separate line

pschwarz (Mon, 08 May 2017 21:51:30 GMT):
@chrisconway What's your environment like? Did you install from docker? Debs?

amundson (Mon, 08 May 2017 21:51:49 GMT):
to generate the client key for xo, use 'sawtooth keygen'

amundson (Mon, 08 May 2017 21:51:59 GMT):
no need to run as root for that, fwiw

boydjohnson (Mon, 08 May 2017 21:52:21 GMT):
Those commands look like from within a docker container.

chrisconway (Mon, 08 May 2017 21:52:36 GMT):
I installed docker and am using the demo environment that was provided by sawtooth

chrisconway (Mon, 08 May 2017 21:53:02 GMT):
those commands are from within the compose_client_1

chrisconway (Mon, 08 May 2017 21:54:23 GMT):
@amundson I'll give the sawtooth keygen command a try without the admin

boydjohnson (Mon, 08 May 2017 21:54:36 GMT):
Ah, are you able to ```ping validator```?

boydjohnson (Mon, 08 May 2017 21:54:36 GMT):
Ah, are you able to 'ping validator'?

amundson (Mon, 08 May 2017 21:54:57 GMT):
'sawtooth admin keygen' generates keys for the validator, 'sawtooth keygen' for the client

boydjohnson (Mon, 08 May 2017 21:55:49 GMT):
How about, also, 'ping rest_api'?

chrisconway (Mon, 08 May 2017 21:59:57 GMT):
@boydjohnson when i do 'ping $addr' it returns "PING $addr ($addr): 56 data bytes" and hangs

chrisconway (Mon, 08 May 2017 22:00:32 GMT):
when i do 'ping $addr:$port' it returns cannot resolve unknown host

chrisconway (Mon, 08 May 2017 22:00:52 GMT):
I think this means I have to deal with some proxy issues on my end

chrisconway (Mon, 08 May 2017 22:00:59 GMT):
thank you

boydjohnson (Mon, 08 May 2017 22:01:57 GMT):
No problem. I think our docker compose demo yaml file might be out of date -- expecting the cli loading tools to directly hit the validator instead of the rest api.

zac (Tue, 09 May 2017 01:30:35 GMT):
@mvp1108 Thanks for being a guinea pig for the new transaction submit docs! A PR is in with some updates that clarify a few things, and also have example code that will run if just copied and pasted in. https://github.com/hyperledger/sawtooth-core/pull/430

PacoEcotrust (Tue, 09 May 2017 07:27:42 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=AvK4cYErQuPxRKD43) @jsmitchell , From the theoretical point of view I understand , but from the implementation which is the data structure that manage the tree into the block data structure, thanks.

SahilKapoor (Tue, 09 May 2017 11:27:30 GMT):
Hi,

SahilKapoor (Tue, 09 May 2017 11:27:34 GMT):
I am new to sawtooth

SahilKapoor (Tue, 09 May 2017 11:27:52 GMT):
Can market place example run on version 0.8 ?

SahilKapoor (Tue, 09 May 2017 11:28:04 GMT):
I wanted to run that and learn from it.

SahilKapoor (Tue, 09 May 2017 11:28:30 GMT):
As per the documents it is mentioned v0.7

SahilKapoor (Tue, 09 May 2017 12:46:49 GMT):
Fabric cna interact with external world via api, can sawtooth do the same thing

SahilKapoor (Tue, 09 May 2017 12:46:49 GMT):
Fabric can interact with external world via api, can sawtooth do the same thing ?

jsmitchell (Tue, 09 May 2017 12:48:10 GMT):
@SahilKapoor Yes - http://intelledger.github.io/rest_api/endpoint_specs.html

jsmitchell (Tue, 09 May 2017 12:48:45 GMT):
We have not ported MarketPlace to 0.8 yet

Dan (Tue, 09 May 2017 15:07:33 GMT):
If I want a native linux dev environment for just validator dev, can I just install the stuff I see listed in tools/package_groups/{*deps; *tools} ?

Dan (Tue, 09 May 2017 15:27:02 GMT):
n/m I got hooked up

jsmitchell (Tue, 09 May 2017 15:29:15 GMT):
@PacoEcotrust: blocks contain batches. batches contain transactions. the block header contains the hash of the root of the state trie resulting from the state transitions due to the transactions in the block.

jsmitchell (Tue, 09 May 2017 15:29:46 GMT):
the raw block data is stored in the block store

jsmitchell (Tue, 09 May 2017 15:31:03 GMT):
each node processes the transactions in a block, and if they get to an identical version of state (by comparing the state root hash in the block header against their own calculated version based on generating the transaction state transitions), then they apply the block to the blockstore and they apply the state transitions to the merkle trie.

jsmitchell (Tue, 09 May 2017 15:33:12 GMT):
the state is _not_ stored in the block data

jsmitchell (Tue, 09 May 2017 15:33:30 GMT):
the state is calculated from the transaction data in the blocks

jsmitchell (Tue, 09 May 2017 15:34:14 GMT):
and the state root hash in the block header proves that all nodes end up with the identical bits based on those calculations

toddojala (Tue, 09 May 2017 15:34:43 GMT):
@PacoEcotrust We will soon have a document published that may help to explain the addressing and namespacing. I'll send you a message when it is up.

SahilKapoor (Tue, 09 May 2017 16:01:00 GMT):
@jsmitchell Any timeline by when Market place will be ported to 0.8.

PacoEcotrust (Tue, 09 May 2017 16:42:48 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Ly8YkkYR7qX7P3N84) @toddojala Thanks

jjason (Tue, 09 May 2017 16:49:23 GMT):
@adamludvik Has something changed with `build_all` recently that breaks when behind firewall? Doesn't seem to be using proxy environment variables when running `docker`command :(

adamludvik (Tue, 09 May 2017 16:55:11 GMT):
Not that I know of. I will look into it

jjason (Tue, 09 May 2017 16:55:18 GMT):
Thx.

jjason (Tue, 09 May 2017 16:55:51 GMT):
I didn't see any changes in git since it was fixed that looked like they should have any impact on this, but I am docker ignorant.

adamludvik (Tue, 09 May 2017 16:58:59 GMT):
Can you double check you have the http proxy environment variables set in the environment you're running the command from?

jjason (Tue, 09 May 2017 16:59:26 GMT):
``` http_proxy=http://proxy-us.intel.com:911 ftp_proxy= https_proxy=http://proxy-us.intel.com:912 HTTPS_PROXY=http://proxy-us.intel.com:912 no_proxy=intel.com,.intel.com,10.0.0.0,10.0.0.8,192.168.0.0,192.168.0.16,localhost,127.0.0.0,127.0.0.8,134.134.0.0,134.134.0.16,172.16.0.0,172.16.0.20 HTTP_PROXY=http://proxy-us.intel.com:911 ```

jjason (Tue, 09 May 2017 17:00:53 GMT):
http://stackoverflow.com/questions/23111631/cannot-download-docker-images-behind-a-proxy

jjason (Tue, 09 May 2017 17:01:19 GMT):
That seems to fix the proxy problem, but I don't like it. Also it then just lead to failure when it tried to fetch GPG keys.

jjason (Tue, 09 May 2017 17:01:39 GMT):
Has the docker deb package updated recently I wonder....

adamludvik (Tue, 09 May 2017 17:02:31 GMT):
Was it failing when downloading the `ubuntu:xenial` images?

adamludvik (Tue, 09 May 2017 17:02:31 GMT):
Was it failing when downloading the `ubuntu:xenial` image?

adamludvik (Tue, 09 May 2017 17:03:39 GMT):
I'm probably going to need to see the error messages. Can you dm them to me?

jjason (Tue, 09 May 2017 17:05:11 GMT):
Yes.

verasnt (Tue, 09 May 2017 21:39:22 GMT):
hey guys, quick question...

verasnt (Tue, 09 May 2017 21:39:55 GMT):
sawtooth doc was created with sphinx? And, how should i proceed with this translation(i'm translating to PT Brazil)? must i Create a branch and submit a PR with all the work at once?

jsmitchell (Tue, 09 May 2017 21:52:37 GMT):
@verasnt: yep, the doc uses sphinx

jsmitchell (Tue, 09 May 2017 21:54:46 GMT):
@amundson what do you think about longer-lived branches for translations that can be merged to master once they are done?

verasnt (Tue, 09 May 2017 22:00:07 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=PNkhLoxg4wLFCK8od) @jsmitchell i think the longer-lived branches are a better idea :)

SahilKapoor (Wed, 10 May 2017 15:16:57 GMT):
Any examples running on 0.8 version?

boydjohnson (Wed, 10 May 2017 15:32:03 GMT):
Hi @SahilKapoor , Do you mean example to get started with the 0.8 version or do you mean example transaction processing implementations? Here are some docs about getting started: http://intelledger.github.io/app_developers_guide/intro_to_sawtooth.html?highlight=tutorial.

SahilKapoor (Wed, 10 May 2017 15:34:32 GMT):
@boydjohnson Like we have market place based on 0.7. Any of these will work on https://01.org/sawtooth/index.html?

boydjohnson (Wed, 10 May 2017 15:36:55 GMT):
We don't yet have any transaction families implemented yet for 0.8 that are as complex as those.

SahilKapoor (Wed, 10 May 2017 16:28:38 GMT):
@boydjohnson Thanks. Do we have any example using java for transactions?

boydjohnson (Wed, 10 May 2017 16:51:31 GMT):
@SahilKapoor This is an example of the java transaction processor handler (where the business logic goes) for a very simple transaction family call intkey: https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/intkey_java/IntegerKeyHandler.java. The java implementation isn't yet up to the intkey spec that we just published to our docs, but will be soon. Here is that specification: http://intelledger.github.io/transaction_family_specifications/integerkey_transaction_family.html.

pschwarz (Wed, 10 May 2017 18:57:43 GMT):
@SahilKapoor Not a Java Transaction Processor, but here's a nice write up on the XO transaction family example that is in `sawtooth-core/sdk/examples/xo_python` or `sawtooth-core/sdk/examples/xo_javascript`. There is a java implementation coming soon

pschwarz (Wed, 10 May 2017 18:57:47 GMT):
https://iamjustatad.wordpress.com/2017/05/09/tic-tac-woe-getting-the-hyperledger-sawtooth-lake-noughts-and-crosses-example-working/

Dan (Wed, 10 May 2017 19:20:34 GMT):
@rbuysse https://chat.hyperledger.org/channel/general?msg=NMf2unhiF9ntkwoaZ

Dan (Wed, 10 May 2017 19:20:57 GMT):
https://provenance.sawtooth.me/ is not responding

rbuysse (Wed, 10 May 2017 20:23:26 GMT):
apache crashed, it's back up now.

rbuysse (Wed, 10 May 2017 20:23:48 GMT):
it's been up for a while, I've been having trouble logging into rocketchat.

rbuysse (Wed, 10 May 2017 20:45:06 GMT):
I just added some monitoring.

jjason (Wed, 10 May 2017 23:21:49 GMT):
Instead of passing around `data_dir`, `key_dir`, etc., to different modules/methods, should we replace these with passing around a `PathConfig` object?

jjason (Wed, 10 May 2017 23:25:57 GMT):
Or at a minimum, establish that if an object/method needs more than one of `data_dir`, 'config_dir`, etc., pass a `PathConfig` object instead?

jjason (Wed, 10 May 2017 23:25:57 GMT):
Or at a minimum, establish that if an object/method needs more than one of `data_dir`, `config_dir`, etc., pass a `PathConfig` object instead?

verasnt (Thu, 11 May 2017 11:26:28 GMT):
morning guys.. i'm trying to run the project in my machine here and i'm facing this error ``` $:~/Documents/codex/sawtooth/sawtooth-core/bin$ ./build_all [--- Build mode: mounted ---] [--- Building go ---] [--- Building sawtooth-dev-go from docker/sawtooth-dev-go ---] unable to prepare context: path "docker/" not found ```

verasnt (Thu, 11 May 2017 11:27:48 GMT):
i already search for something like this in the dock installation tutorial but i can't found...

verasnt (Thu, 11 May 2017 11:33:34 GMT):
Oops.. it seems that i forgot to run vagrant up inside the tools directory... I'll update my vagrant and run it again..

verasnt (Thu, 11 May 2017 12:19:29 GMT):
problem solved :D .. i wasn't running the ``` vagrant ssh ```

verasnt (Thu, 11 May 2017 12:21:41 GMT):
problem solvled.. i wasn't running the ``` vagrant ssh ```

verasnt (Thu, 11 May 2017 12:21:51 GMT):
:rolling_eyes:

SahilKapoor (Thu, 11 May 2017 13:06:59 GMT):
Is there a way of making a transaction private? Lets say I transfer asset from A to B at some price but that price should not be visible to C. D being a regulator can see everything ? Is this kind of scenario possible?

jaemin.lim (Thu, 11 May 2017 13:10:46 GMT):
Has joined the channel.

verasnt (Thu, 11 May 2017 13:14:04 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=exkQcuynyRq3RLmYA) @SahilKapoor i'm a n00b here BUT i think it'll be.. not sure if is already implemented

jsmitchell (Thu, 11 May 2017 13:16:00 GMT):
@SahilKapoor The trivial solution is a centralized ordering service that just stores receipts. That would keep the multi-party secured data somewhere else (e.g. a 'side-chain). Would be very easy to implement as a transaction processor in Sawtooth.

jsmitchell (Thu, 11 May 2017 13:16:27 GMT):
We are interested in more substantial solutions

jsmitchell (Thu, 11 May 2017 13:17:02 GMT):
Do you have a use case for this?

jsmitchell (Thu, 11 May 2017 13:18:02 GMT):
We have a team exploring a non-trivial solution in this space. Depending on what you are trying to do, it may make sense to have a conversation.

amundson (Thu, 11 May 2017 13:48:54 GMT):
FYI - @rbuysse enabled a github feature yesterday which enforces the requirement that there be at least one approval and no changes requested prior to merge. It changes the interface a bit in that it tells you that "Merging is blocked" when those conditions are not met

amundson (Thu, 11 May 2017 13:57:16 GMT):
@verasnt - A long-lived branch is a possibility. I think what we need to know before deciding on the branch strategy is how we would expect to maintain and publish the translated docs. I've not looked into this much yet, but there is this - http://www.sphinx-doc.org/en/stable/config.html#intl-options. I think that is suggesting that we would set the language in the conf file prior to build and it would generate it in the selected language. We might want to find a couple projects doing internationalization with sphinx-doc and see if there is a common pattern/approach.

amundson (Thu, 11 May 2017 14:02:29 GMT):
we could also start internationalizing our CLI and logging messages as well, which I think initially means figuring out how to do it properly (and probably? start marking all the strings with _())

verasnt (Thu, 11 May 2017 14:04:29 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=tMcwBmG3juac2Ch5K) @amundson i agree with that.. i'll look for some projects that are doing this and bring some insights here for we discuss

SahilKapoor (Thu, 11 May 2017 14:28:27 GMT):
@jsmitchell I want to hide some of the trade data i.e C can see which all entities were involved in the trade but cannot see few other parameters like rating of the entities or price of the of the exchange.

SahilKapoor (Thu, 11 May 2017 14:28:43 GMT):
Can we get some example of side chain?

SahilKapoor (Thu, 11 May 2017 14:29:03 GMT):
I was going through fabric and I asked similar question there

SahilKapoor (Thu, 11 May 2017 14:29:32 GMT):
In response I got this -> https://jira.hyperledger.org/browse/FAB-1151 . It has nice documentation and ppt.

SahilKapoor (Thu, 11 May 2017 14:29:49 GMT):
Would something like that can be created in sawtooth..

SahilKapoor (Thu, 11 May 2017 14:30:56 GMT):
Sea food example is great but I need to implement few of it features as private part of the transaction

jsmitchell (Thu, 11 May 2017 14:52:11 GMT):
@SahilKapoor: The side chain stuff would be as simple as crafting a transaction processor which stores hashes on the 'common' chain. These hashes would be submitted as a result of transactions on the side chains as 'ordered proof' that the transactions exist on the side chains. The side chains would be instanced to the counterparties and the regulators, and store the actual data.

jsmitchell (Thu, 11 May 2017 14:53:07 GMT):
not a very interesting model, and not something we're focused on

jsmitchell (Thu, 11 May 2017 14:54:44 GMT):
if you trust encryption into the future, you could also pursue a multi-sig approach which creates an encrypted blob of data as part of the transaction that gets written to global state. Only the parties with the private keys would be able to decrypt the data, even though all consortium participants would have a copy of the encrypted blob.

travin (Thu, 11 May 2017 15:58:24 GMT):
Hey everyone. Is the seafood supply chain project available for review on GitHub?

travin (Thu, 11 May 2017 15:58:24 GMT):
Ah, alright. Thanks for the update @kelly_ !

travin (Thu, 11 May 2017 15:58:24 GMT):
Hey everyone, is the seafood supply chain project on GitHub

kelly_ (Thu, 11 May 2017 16:00:59 GMT):
hey @travin that code is not yet available on github

kelly_ (Thu, 11 May 2017 16:01:06 GMT):
we are porting it to the .8 architecture

kelly_ (Thu, 11 May 2017 16:01:19 GMT):
@cianx is working on that and it will likely be available in the next couple weeks

kelly_ (Thu, 11 May 2017 16:01:38 GMT):
all of the demos are built on .7 which had a different architecture for smart contracts

travin (Thu, 11 May 2017 16:06:15 GMT):
Hey @kelly_ Thanks for the info! Looking forward to it.

kelly_ (Thu, 11 May 2017 16:06:52 GMT):
if you have any specific requirements we'd love to hear them so we can incorporate them

travin (Thu, 11 May 2017 16:08:37 GMT):
Not at the moment, but if some come up, I'll make sure to mention them here. Thank you!

amundson (Thu, 11 May 2017 22:45:44 GMT):
C++ SDK has been merged into master!!! Great work @cianx!

amundson (Fri, 12 May 2017 14:20:23 GMT):
I'm working on the desired table of contents for the Application Developer's Guide today. If you have ideas about the guide, please let me know. Will paste what I come up with here later.

jjason (Fri, 12 May 2017 14:46:28 GMT):
I would like a section on how to call from VBA (VisualBasic for Applications). A day doesn't go by when I don't think - dang, if I only had access to a blockchain from my Excel spreadsheet.

JonathanLevi (Fri, 12 May 2017 15:07:25 GMT):
A quick question. The github.com/haltingstate/secp256k1-go for secp256k1 is not compatible with Sawtooth validator...

JonathanLevi (Fri, 12 May 2017 15:07:51 GMT):
We are trying to work in Golang... working with the Go SDK

jsmitchell (Fri, 12 May 2017 15:08:17 GMT):
@adamludvik ^

JonathanLevi (Fri, 12 May 2017 15:08:33 GMT):
There is no code to create transaction in gosdk, transaction processor only... so suggestions welcome, please.

JonathanLevi (Fri, 12 May 2017 15:08:33 GMT):
There is (currentlyno code to create transaction in gosdk, transaction processor only... so suggestions welcome, please.

JonathanLevi (Fri, 12 May 2017 15:08:33 GMT):
There is (currently) no code to create transaction in gosdk, transaction processor only... so suggestions welcome, please.

jsmitchell (Fri, 12 May 2017 15:10:15 GMT):
@JonathanLevi when you say it is not compatible, what do you mean?

adamludvik (Fri, 12 May 2017 15:16:20 GMT):
The Go SDK is still relatively new and we haven't developed client side tools yet. If you are interested in helping put something together I'd be happy to give you a hand! The javascript SDK is the only SDK that has client side tools. Otherwise both intkey_python and xo_python have example CLIs for those transaction families. I am not familiar with that repo, but I have been planning to look into this project for secp256k1: https://github.com/tendermint/go-crypto.

JonathanLevi (Fri, 12 May 2017 15:52:29 GMT):
Hi sorry, I'm back sorry.

JonathanLevi (Fri, 12 May 2017 15:52:29 GMT):
Hi sorry, I'm back.

JonathanLevi (Fri, 12 May 2017 15:52:29 GMT):
Hi, sorry, I'm back here.

JonathanLevi (Fri, 12 May 2017 15:52:56 GMT):
We basically generate a transaction and use the REST API... but whatever we do, we end up with *signature_verifier] batch failed signature validation*

JonathanLevi (Fri, 12 May 2017 15:53:56 GMT):
It may even be the data format and not the library (or initialization parameters), I can't tell. Thought I'd run it by this channel.

JonathanLevi (Fri, 12 May 2017 15:55:08 GMT):
(BTW: Have been trying to do the same thing as the intkey_python... yes.

JonathanLevi (Fri, 12 May 2017 15:55:25 GMT):
type IntkeyPayload struct { Verb string Name string Value int }

JonathanLevi (Fri, 12 May 2017 15:55:28 GMT):
etc.)

kelly_ (Fri, 12 May 2017 16:00:17 GMT):
@Dan may be able to help you out on the crypto side @JonathanLevi

zac (Fri, 12 May 2017 16:21:38 GMT):
@JonathanLevi Have you read over the new Transaction creation tutorial?

zac (Fri, 12 May 2017 16:22:07 GMT):
There are a lot of moving parts, and the tutorial mostly lists them out

zac (Fri, 12 May 2017 16:22:29 GMT):
Could be a relatively small oversight

JonathanLevi (Fri, 12 May 2017 16:26:07 GMT):
The *new* Transaction creation tutorial, being: http://intelledger.github.io/0.8/_autogen/sdk_submit_tutorial_js.html?highlight=transaction%20creator ?

JonathanLevi (Fri, 12 May 2017 16:26:07 GMT):
I think so. We were following this (with the exact same parameter). I believe this is the latest? http://intelledger.github.io/0.8/_autogen/sdk_submit_tutorial_js.html?highlight=transaction%20creator

JonathanLevi (Fri, 12 May 2017 16:26:07 GMT):
I think so. We were following this (with the exact same parameters). I believe this is the latest? http://intelledger.github.io/0.8/_autogen/sdk_submit_tutorial_js.html?highlight=transaction%20creator

JonathanLevi (Fri, 12 May 2017 16:27:09 GMT):
I suspect too that it may be something minor...

Dan (Fri, 12 May 2017 16:30:53 GMT):
signatures... when you can't be one bit off its always something minor. ;)

JonathanLevi (Fri, 12 May 2017 16:31:19 GMT):
Yes, it's a shame it's not all of them!

Dan (Fri, 12 May 2017 16:31:27 GMT):
gist with the sig is we are only passing the (r,s).

JonathanLevi (Fri, 12 May 2017 16:31:31 GMT):
Let me try to xor them.

Dan (Fri, 12 May 2017 16:31:36 GMT):
lol

zac (Fri, 12 May 2017 16:31:42 GMT):
That is the tutorial for the SDK, which obfuscates a lot of the steps

zac (Fri, 12 May 2017 16:31:51 GMT):
Helpful if you are using the SDK, but not otherwise

JonathanLevi (Fri, 12 May 2017 16:32:11 GMT):
What would you recommend to follow @zac?

zac (Fri, 12 May 2017 16:32:18 GMT):
http://intelledger.github.io/0.8/_autogen/txn_submit_tutorial_js.html

JonathanLevi (Fri, 12 May 2017 16:32:26 GMT):
(and, of course, thanks everyone!)

zac (Fri, 12 May 2017 16:32:53 GMT):
That is hopefully helpful

JonathanLevi (Fri, 12 May 2017 16:32:56 GMT):
Yes, the same. Same parameters, btw.

zac (Fri, 12 May 2017 16:33:23 GMT):
There is a slightly newer version, which includes the detail that the signature must be a compact 64-byte sig

JonathanLevi (Fri, 12 May 2017 16:33:42 GMT):
We can just spend some more time over it, not a biggy. Thought you guys may have seen it, which is why I posted here quickly.

zac (Fri, 12 May 2017 16:33:44 GMT):
Other than that, everything _I_ know is in that doc

JonathanLevi (Fri, 12 May 2017 16:33:59 GMT):
@zac: Roger. Thanks!

zac (Fri, 12 May 2017 16:33:59 GMT):
@Dan Probably understands more though

Dan (Fri, 12 May 2017 16:37:40 GMT):
@zac should probably understand that was an incorrect assertion. ;)

zac (Fri, 12 May 2017 16:38:07 GMT):
I don't have to understand anything

Dan (Fri, 12 May 2017 16:38:10 GMT):
I might play with that secp256 go library on the plane later. I see they at least have good commit messages. https://github.com/haltingstate/secp256k1-go/commit/12062bbe5b33d56668ed2d7218f67a3d6ef4ce91

Dan (Fri, 12 May 2017 16:39:02 GMT):
But anyway, the trick with signing for others before was just we were unclear, all we look for is the r,s pair. so if there's header bytes etc. that's going to break things.

Dan (Fri, 12 May 2017 16:39:15 GMT):
Bitcoin seems to call that a compact signature.

Dan (Fri, 12 May 2017 16:39:48 GMT):
I can't guarantee that term is consistently used in these wrapper libraries.

Dan (Fri, 12 May 2017 16:39:56 GMT):
Which curve is Fabric using?

zac (Fri, 12 May 2017 16:42:10 GMT):
I saw "compact" used with the Python secp256k1 library, but not elsewhere

zac (Fri, 12 May 2017 16:42:35 GMT):
I think they key is 64-bytes

zac (Fri, 12 May 2017 16:42:43 GMT):
If it's longer then that, it's not right

zac (Fri, 12 May 2017 16:42:43 GMT):
If it's longer than that, it's not right

Dan (Fri, 12 May 2017 16:43:06 GMT):
another good tip

TomBarnes (Fri, 12 May 2017 18:00:01 GMT):
Does the rest API allow you to inspect transactions that are pending (not yet published in a block)?

TomBarnes (Fri, 12 May 2017 18:02:45 GMT):
Does the rest API allow you to inspect blocks that may have once been in the block chain but have since been removed due to fork resolution?

zac (Fri, 12 May 2017 18:15:32 GMT):
No to both

zac (Fri, 12 May 2017 18:15:53 GMT):
You can inspect the committed status of _batches_ that are pending

zac (Fri, 12 May 2017 18:16:01 GMT):
But not the transactions within them

zac (Fri, 12 May 2017 18:16:20 GMT):
And blocks discarded by fork resolution are (to my understanding) just tossed out

zac (Fri, 12 May 2017 18:16:34 GMT):
So the REST API would have no way of finding them

zac (Fri, 12 May 2017 18:17:32 GMT):
Though, if forked blocks _do_ stick around for a bit, and are stored in the block store like other blocks, you _would_ be able to fetch them individually by block id

amundson (Fri, 12 May 2017 18:45:27 GMT):
@Tom Barnes what's the use case behind the first question? the current capability is basically that if you submitted a batch, you can lookup it's status.

amundson (Fri, 12 May 2017 18:45:44 GMT):
hmm, that space in the username is unfortunate

jsmitchell (Fri, 12 May 2017 18:46:02 GMT):
yeah, rocketchat continues to impress

boydjohnson (Fri, 12 May 2017 18:49:32 GMT):
There are 1800 open issues. https://github.com/RocketChat/Rocket.Chat

amundson (Fri, 12 May 2017 18:49:51 GMT):
```Application Developer's Guide - Installing and Running Sawtooth - Using Sawtooth with Docker - Using Sawtooth on Ubuntu 16.04 - Understanding Transaction Family Concepts - Address and Namespace Design - ... - Introduction to the Xo Transaction Family - C++ Development - Building and Submitting Transactions - Installing the C++ SDK - via git repository - via Debian packages - Transaction Processor Tutorial - Go Development - Installing the Go SDK - via git repository - via Debian packages - Building and Submitting Transactions - Transaction Processor Tutorial - Java Development - Installing the Java SDK - via Maven - via Debian packages - via git repository - Building and Submitting Transactions - Transaction Processor Tutorial - Javascript Development - Installing the Javascript SDK - via npm - via Debian packages - via git repository - Building and Submitting Transactions - Transaction Processor Tutorial - Python 3 Development - Installing the Python 3 SDK - via PIP - via Debian packages - via git repository - Building and Submitting Transactions - Transaction Processor Tutorial - Testing Transaction Processors - Development without an SDK - Building and Submitting Transactions (Python 3) - Building and Submitting Transactions (Javascript) ```

amundson (Fri, 12 May 2017 18:50:12 GMT):
oh, pretty read

amundson (Fri, 12 May 2017 18:50:12 GMT):
oh, pretty red

amundson (Fri, 12 May 2017 18:50:28 GMT):
(funny typo)

amundson (Fri, 12 May 2017 18:51:04 GMT):
anyway, that's a work-in-progress version of the potential TOC for the app dev guide

amundson (Fri, 12 May 2017 18:51:21 GMT):
lots of good input from @zac

amundson (Fri, 12 May 2017 18:52:25 GMT):
the division by language is intended to prevent skipping around the document. lots of text on those sections would be the same, but language-specific examples, etc.

boydjohnson (Fri, 12 May 2017 18:53:28 GMT):
Since there is a 'Development without an SDK' section, do we want to have section about how, in general, an sdk is made?

amundson (Fri, 12 May 2017 18:53:52 GMT):
no, creating a new SDK isn't the goal of the app dev guide

zac (Fri, 12 May 2017 18:54:19 GMT):
Decent idea for Core Dev though

amundson (Fri, 12 May 2017 18:55:08 GMT):
that's essentially there as an advanced topic, as there are potentially languages we don't currently have SDKs for, and so knowing how to craft transactions are constructed is potentially useful

amundson (Fri, 12 May 2017 18:55:08 GMT):
that's essentially there as an advanced topic, as there are potentially languages we don't currently have SDKs for, and so knowing how to craft transactions is potentially useful

amundson (Fri, 12 May 2017 18:56:42 GMT):
The first section "Installing and Running Sawtooth" would contain a lot more content than the current environment setup section, as it would cover everything you need to know about using sawtooth in the given environment (start/stop validators, connect TPs, whatever)

amundson (Fri, 12 May 2017 18:57:24 GMT):
"Introduction to the Xo Transaction Family" would walk you through using the existing implementation(s), so you know how to use the CLI and such prior to working through the TP tutorial

amundson (Fri, 12 May 2017 18:57:38 GMT):
(feedback from a blog post)

Dan (Fri, 12 May 2017 20:14:23 GMT):
@amundson your ToC flew by while I was afk. Might have for others. could be you'll get other feedback by email to stl list.

adamludvik (Fri, 12 May 2017 21:57:54 GMT):
Working on a Go Client SDK using the tendermint library... @Dan @JonathanLevi

JonathanLevi (Fri, 12 May 2017 21:58:48 GMT):
Thank you Adam.

TomBarnes (Fri, 12 May 2017 23:09:26 GMT):
@amundson OK - thanks. Question involved non-repudiation - wanted to understand at what point submitted transactions were "inspect-able" - that would be the first point at which they might be repudiated. Looks like the only way to repudiate a transaction is to manipulate the contents of the current fork, either by attacking the fork data, or by creating an alternative fork.

SahilKapoor (Sun, 14 May 2017 09:03:36 GMT):
Hi

SahilKapoor (Sun, 14 May 2017 09:04:23 GMT):
Is there any date by when we can one working scenario for v0.8.. It would really help in building and understanding further use cases.

Dpkkmr (Sun, 14 May 2017 11:11:11 GMT):
Has joined the channel.

Dpkkmr (Sun, 14 May 2017 11:22:42 GMT):
Hi All I'm new to sawtoothlake, I'm following Getting Started with Sawtooth, while I'm starting Validator using (sawtooth keygen --key-dir /home/ubuntu/sawtooth/keys/ validator) command, I am facing some problem. (Error: no such directory: /home/ubuntu/sawtooth/keys/ ). It will be helpful if some one can help me resolve this error.

Dan (Sun, 14 May 2017 16:28:46 GMT):
Hi @Dpkkmr did you setup your environment with docker our one of the other options?

Dan (Sun, 14 May 2017 16:28:51 GMT):
http://intelledger.github.io/app_developers_guide/environment_setup.html

Dpkkmr (Sun, 14 May 2017 17:29:50 GMT):

Message Attachments

Dpkkmr (Sun, 14 May 2017 17:29:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=8Coezkpd9x4YuP6ZT) @Dan I have followed the instructions given in the link which you have mentioned.

Dan (Sun, 14 May 2017 18:07:37 GMT):
@toddojala are those sawtooth commands consistent with the docker install?

rbuysse (Sun, 14 May 2017 18:44:37 GMT):
Generating keys, creating a genesis block and validator startup are done automatically in the docker environment.

rbuysse (Sun, 14 May 2017 18:44:48 GMT):
people using the docker environment can skip ahead to http://intelledger.github.io/app_developers_guide/intro_to_sawtooth.html#multi-language-support-for-transaction-processors

rbuysse (Sun, 14 May 2017 18:45:55 GMT):
though I think some of the documentation there is a little out of date. I know that @toddojala has a PR up to fix it.

Dan (Sun, 14 May 2017 18:50:40 GMT):
Thanks @rbuysse. Does that clear things up some @Dpkkmr

rbuysse (Sun, 14 May 2017 18:51:12 GMT):
Looks like it was merged, the current correct instructions can be found here: http://intelledger.github.io/0.8/app_developers_guide/intro_to_sawtooth.html#multi-language-support-for-transaction-processors

tcsiwula (Mon, 15 May 2017 00:06:40 GMT):
Has joined the channel.

William_weicong (Mon, 15 May 2017 06:27:24 GMT):
Has joined the channel.

boydjohnson (Mon, 15 May 2017 13:49:02 GMT):
@amundson With the ToC for App Developers guide, I would imagine that some folks would want a docker image for their transaction processor, so making a transaction processor docker image and container is as simple as basing the file off of our SDK image and then adding transaction family specific dependencies.

amundson (Mon, 15 May 2017 13:49:59 GMT):
is that a section we add near the end of the TOC?

amundson (Mon, 15 May 2017 13:50:25 GMT):
or something we cover in "Using Sawtooth with Docker" section?

boydjohnson (Mon, 15 May 2017 14:17:33 GMT):
I would think either as part of "Using Sawtooth with Docker", or an optional section within each SDK section.

toddojala (Mon, 15 May 2017 14:46:18 GMT):
@boydjohnson I like that idea, as long as we don't get too deep into docker technical details, which can change - and which we don't want to have to support. But you make it sound really easy!

boydjohnson (Mon, 15 May 2017 14:55:48 GMT):
@rbuysse @adamludvik Are we publishing base image docker files to docker hub?

toddojala (Mon, 15 May 2017 14:56:06 GMT):
@Dan and @Dpkkmr I think Ryan nailed it. The latest iteration of the documentation has not gone to the release version of our docs yet, so you just need to add the /0.8 to the documentation URL. @rbuysse We should consider creating a new release, due to the doc updates...

jjason (Mon, 15 May 2017 15:40:31 GMT):
Anyone seen this error before when submitting PR? ``` integration_test_1 | [15:29:00.459 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml integration_test_1 | [15:29:00.460 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.priv integration_test_1 | [15:29:00.463 INFO cli] config [path]: config_dir = "/etc/sawtooth" integration_test_1 | [15:29:00.464 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" integration_test_1 | [15:29:00.464 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" integration_test_1 | [15:29:00.464 INFO cli] config [path]: log_dir = "/var/log/sawtooth" integration_test_1 | [15:29:00.477 ERROR cli] Address already in use integration_test_1 | Traceback (most recent call last): integration_test_1 | File "/project/sawtooth-core/validator/sawtooth_validator/server/cli.py", line 214, in main integration_test_1 | validator.start() integration_test_1 | File "/project/sawtooth-core/validator/sawtooth_validator/server/core.py", line 481, in start integration_test_1 | self._service.start() integration_test_1 | File "/project/sawtooth-core/validator/sawtooth_validator/networking/interconnect.py", line 597, in start integration_test_1 | raise err integration_test_1 | File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner integration_test_1 | self.run() integration_test_1 | File "/usr/lib/python3.5/threading.py", line 862, in run integration_test_1 | self._target(*self._args, **self._kwargs) integration_test_1 | File "/project/sawtooth-core/validator/sawtooth_validator/networking/interconnect.py", line 348, in setup integration_test_1 | self._socket.bind(self._address) integration_test_1 | File "zmq/backend/cython/socket.pyx", line 487, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5156) integration_test_1 | File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:7535) integration_test_1 | zmq.error.ZMQError: Address already in use integration_test_1 | Exception in thread InterconnectThread-5: integration_test_1 | Traceback (most recent call last): integration_test_1 | File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner integration_test_1 | self.run() integration_test_1 | File "/usr/lib/python3.5/threading.py", line 862, in run integration_test_1 | self._target(*self._args, **self._kwargs) integration_test_1 | File "/project/sawtooth-core/validator/sawtooth_validator/networking/interconnect.py", line 348, in setup integration_test_1 | self._socket.bind(self._address) integration_test_1 | File "zmq/backend/cython/socket.pyx", line 487, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5156) integration_test_1 | File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:7535) integration_test_1 | zmq.error.ZMQError: Address already in use ```

jsmitchell (Mon, 15 May 2017 15:41:23 GMT):
that's from jenkins @jjason ?

jjason (Mon, 15 May 2017 15:45:09 GMT):
Yep

jjason (Mon, 15 May 2017 15:45:42 GMT):
Trying to figure out if it something in my PR that I did or just really bad luck. https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-458/1/console

jsmitchell (Mon, 15 May 2017 15:47:57 GMT):
@adamludvik @boydjohnson are we reusing docker containers between test executions in the same PR test run?

boydjohnson (Mon, 15 May 2017 15:56:52 GMT):
The shutdown-smoke, which is skipped right now, does. But there isn't another test that reuses a docker container, that I know of.

amundson (Mon, 15 May 2017 16:34:29 GMT):
this is a good document for commit message format - https://chris.beams.io/posts/git-commit/

amundson (Mon, 15 May 2017 16:34:55 GMT):
as we start doing more tagging and release notes, that becomes more important

boydjohnson (Mon, 15 May 2017 16:37:35 GMT):
@jjason @jsmitchell The test error posted is from dynamic network test that starts up validators all in one container. I'm unsure what caused the error, though.

jjason (Mon, 15 May 2017 16:38:27 GMT):
@boydjohnson Thanks. I re-ran the build on that PR and it passed, so looks like another intermittent problem.

adamludvik (Mon, 15 May 2017 17:22:17 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=LZh6WF5MTf6JMusLr) @boydjohnson I am not sure what you mean by this.

adamludvik (Mon, 15 May 2017 17:27:59 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=L4ELxfZPSzbwizCWH) @jsmitchell Not intentionally. I believe the dynamic network test uses subprocess to create networks. If something goes wrong and a process doesn't exit cleanly, you could get that error when the next process starts that tries to use the same address.

boydjohnson (Mon, 15 May 2017 17:41:14 GMT):
@adamludvik @rbuysse Explained to me that we are pushing docker images, but not files. I had thought it might be nice to have a sawtooth-python-sdk (or any other) published docker file for app developers to base a docker file off of, if they wanted to do their development in docker, and didn't want to look around our repo. I'm definitely not pushing that we need to do this, or talk about it a bunch in our docs.

jsmitchell (Mon, 15 May 2017 18:17:14 GMT):
just saw that zmq address in use issue in another PR build

boydjohnson (Mon, 15 May 2017 19:54:48 GMT):
@jsmitchell I am working on namespace/(wildcarded)/(shortened) address read/write access in the context manager. Since I am touching that part of the code, can I do the hex character enforcement and (any other address enforcement) that I thought you were maybe working on? I would use regex, and length of the str for addresses. Do we want to enforce on context creation where the inputs and outputs are provided?

Dan (Mon, 15 May 2017 21:56:28 GMT):
@jsmitchell ^

Dera (Tue, 16 May 2017 04:43:25 GMT):
Has joined the channel.

KentLandholm (Tue, 16 May 2017 07:36:09 GMT):
Has joined the channel.

jsmitchell (Tue, 16 May 2017 13:48:22 GMT):
@boydjohnson sounds good!

boydjohnson (Tue, 16 May 2017 13:48:58 GMT):
I'll do so.

Dan (Tue, 16 May 2017 15:56:06 GMT):
random failure on a pr: ```validator_1 | INFO:sawtooth_processor_test.mock_validator:Received TpStateGetRequest(7) from b'bb2f09ffe94c4888' validator_1 | ERROR validator_1 | test_inc_a (test_tp_intkey.TestIntkey) ... INFO:sawtooth_processor_test.mock_validator:Sending TpProcessRequest(5) to b'bb2f09ffe94c4888' ERROR:__main__:Test timed out. ERROR:__main__:Command '['docker-compose', '-p', 'ea97d08b2f0bd18d6f1be1e006f9eb5f1d6da7b64a103cdb1ec2949dab641201', '-f', ```

Dan (Tue, 16 May 2017 15:56:39 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-468/2/

Dan (Tue, 16 May 2017 16:55:55 GMT):
~5 failures on a doc change

Dan (Tue, 16 May 2017 16:56:27 GMT):
Can I get some more eyes on https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-468/5/console

toddojala (Tue, 16 May 2017 16:58:40 GMT):
@Dan I started a new build.

agunde (Tue, 16 May 2017 16:58:48 GMT):
I think it needs to be rebased.

agunde (Tue, 16 May 2017 16:58:48 GMT):
I think it needs to be rebased. @Dan

Dan (Tue, 16 May 2017 17:08:56 GMT):
Thanks @agunde. I feel a little deja-vu.

Dan (Tue, 16 May 2017 17:20:54 GMT):
I fixed the glitch.

Dan (Tue, 16 May 2017 17:21:13 GMT):
Now I'm going to find a :burrito: before the :fire: starts.

boydjohnson (Tue, 16 May 2017 17:22:42 GMT):
@amundson @jsmitchell When a transaction processor tries to set to an invalid address does it make sense to deal with it differently than an authorization exception? I am thinking about sending back an invalid address status, but that would mean that each sdk would have to deal with that as a possible status.

Dan (Tue, 16 May 2017 17:30:29 GMT):
I was looking at our app dev guide... I don't see environment setup for proxy.

toddojala (Tue, 16 May 2017 17:31:55 GMT):
@Dan The App Dev guide is no longer going to use Vagrant, just Docker and direct installs, so there probably isn't a need for a proxy setup. (I could be wrong!)

Dan (Tue, 16 May 2017 17:32:28 GMT):
I think docker needs to reach out to get things.

Dan (Tue, 16 May 2017 17:33:02 GMT):
Please put yourself behind a proxy and see if it works. I'm still committed to finding a :burrito: but slowly failing on that mission.

kelly_ (Tue, 16 May 2017 17:36:00 GMT):
can confirm that proxy needs to be set behind intel firewalls

kelly_ (Tue, 16 May 2017 17:36:00 GMT):
can confirm that proxy needs to be set behind firewalls

kelly_ (Tue, 16 May 2017 17:36:31 GMT):

Message Attachments

SahilKapoor (Tue, 16 May 2017 17:38:43 GMT):
Hi,

kelly_ (Tue, 16 May 2017 17:39:53 GMT):
@dan - this may be relevant https://intelpedia.intel.com/Proxy_at_Intel#Docker

SahilKapoor (Tue, 16 May 2017 17:40:09 GMT):
I know all the developers are doing their best to port demo to v0.8. Can we have some timeline by when can they be ready? I helps a lot to pick up and learn from the examples.

kelly_ (Tue, 16 May 2017 17:47:43 GMT):
@SahilKapoor I believe @cianx will be uploading a simple supply chain based transaction family sometime this week

rjones (Tue, 16 May 2017 19:38:11 GMT):
Has left the channel.

Dan (Tue, 16 May 2017 20:26:49 GMT):
@adamludvik PEM was the format I couldn't think of earlier (for persisting keys)

adamludvik (Tue, 16 May 2017 20:54:21 GMT):
Thanks

jjason (Tue, 16 May 2017 20:58:58 GMT):
@Dan @toddojala I fought with docker behind proxy trying to do things on bare metal Linux. I had to do the following as it didn't seem to want to respect my HTTP proxy environent variables (`HTTP_PROXY`, etc.): ``` sudo mkdir /etc/systemd/system/docker.service.d Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/http-proxy.conf and add the following lines to it: [Service] Environment="HTTP_PROXY=http://:" Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/https-proxy.conf and add the following lines to it: [Service] Environment="HTTPS_PROXY=http://:" Execute the following: sudo systemctl daemon-reload You can verify that the environment variables are loaded: sudo systemctl show --property Environment docker Now you can restart docker: sudo systemctl restart docker ```

jjason (Tue, 16 May 2017 20:58:58 GMT):
@Dan @toddojala I fought with docker behind proxy trying to do things on bare metal Linux. I had to do the following as it didn't seem to want to respect my HTTP proxy environent variables (`HTTP_PROXY`, etc.): ``` sudo mkdir /etc/systemd/system/docker.service.d Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/http-proxy.conf and add the following lines to it: [Service] Environment="HTTP_PROXY=http://proxy-us.intel.com:911/" Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/https-proxy.conf and add the following lines to it: [Service] Environment="HTTPS_PROXY=http://proxy-us.intel.com:912/" Execute the following: sudo systemctl daemon-reload You can verify that the environment variables are loaded: sudo systemctl show --property Environment docker Now you can restart docker: sudo systemctl restart docker ```

jjason (Tue, 16 May 2017 20:58:58 GMT):
@Dan @toddojala I fought with docker behind proxy trying to do things on bare metal Linux. I had to do the following as it didn't seem to want to respect my HTTP proxy environent variables (`HTTP_PROXY`, etc.): ``` sudo mkdir /etc/systemd/system/docker.service.d Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/http-proxy.conf and add the following lines to it: [Service] Environment="HTTP_PROXY=http://:/" Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/https-proxy.conf and add the following lines to it: [Service] Environment="HTTPS_PROXY=http://::912/" Execute the following: sudo systemctl daemon-reload You can verify that the environment variables are loaded: sudo systemctl show --property Environment docker Now you can restart docker: sudo systemctl restart docker ```

jjason (Tue, 16 May 2017 20:58:58 GMT):
@Dan @toddojala I fought with docker behind proxy trying to do things on bare metal Linux. I had to do the following as it didn't seem to want to respect my HTTP proxy environent variables (`HTTP_PROXY`, etc.): ``` sudo mkdir /etc/systemd/system/docker.service.d Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/http-proxy.conf and add the following lines to it: [Service] Environment="HTTP_PROXY=http://:/" Create a file as root (aka sudo) named /etc/systemd/system/docker.service.d/https-proxy.conf and add the following lines to it: [Service] Environment="HTTPS_PROXY=http://:/" Execute the following: sudo systemctl daemon-reload You can verify that the environment variables are loaded: sudo systemctl show --property Environment docker Now you can restart docker: sudo systemctl restart docker ```

jjason (Tue, 16 May 2017 21:01:36 GMT):
In addition, I had problems with DNS. Docker seems to want to look for `/etc/resolv.conf`, which on my bare metal Linux box only had `nameserver 127.0.0.1`, which docker ignores. to fix that I ran `nmcli dev show | grep DNS` and looked for the IPv4 DNS servers and added them to `/etc/resolv.conf`. If not behind the proxy, you may still need to add DNS servers.

toddojala (Tue, 16 May 2017 21:06:16 GMT):
@jjason Thanks, great info. We'll discuss this and add something to help with proxy based on our discussion.

Dan (Tue, 16 May 2017 21:19:04 GMT):
@adamludvik you can try changing sawtooth signing to use hex for the privkey and then cross import/export for your go client. I put up a branch on my fork, but its basically just changing wif to hex in the keyword args for the two private encode/decode methods. https://github.com/dcmiddle/sawtooth-core/tree/change-privkey-format

Dan (Tue, 16 May 2017 21:22:26 GMT):
I was considering putting up something with PEM but that introduces some messiness.

adamludvik (Tue, 16 May 2017 21:34:55 GMT):
yep

adamludvik (Tue, 16 May 2017 21:41:34 GMT):
I feel silly now. Thanks. I get the same pubkey, but different sigs. But I can debug this now.

adamludvik (Tue, 16 May 2017 21:43:03 GMT):
https://github.com/dcmiddle/sawtooth-core/commit/ea490b58bdca9962f121bf0ca4f3629956c1803e#diff-4c571163d2762287ec52434384613b91L137 should there be two `sig = ...` lines there?

adamludvik (Tue, 16 May 2017 21:43:22 GMT):
Oh wait... nm

adamludvik (Tue, 16 May 2017 22:31:38 GMT):
https://github.com/bitcoin-core/secp256k1/blob/master/src/secp256k1.c#L249

adamludvik (Tue, 16 May 2017 22:35:01 GMT):
This is what it does to R and S in compact encoding: https://github.com/bitcoin-core/secp256k1/blob/a8abae7e5f45c04a3b70cca215601ba903769586/src/scalar_low_impl.h#L60

FlyingTiger (Wed, 17 May 2017 13:21:15 GMT):
Hi, guys, I think the Journal diagram in http://intelledger.github.io/architecture/journal.html has a bug. It should be that the BlockPublisher broadcasts a published block to the validator network through the gossip protocol, not Consensus.BlockPublisher?

FlyingTiger (Wed, 17 May 2017 13:21:40 GMT):
What's your point? :)

Dan (Wed, 17 May 2017 13:34:51 GMT):
@adamludvik it looks fancier than it is. the relevant compact encoding stuff is here: https://github.com/bitcoin-core/secp256k1/blob/master/src/secp256k1.c#L269 That structuring he's doing in get32 is just formatting into the 32 byte field. Main thing is compact = [r[32],s[32]]

Dan (Wed, 17 May 2017 13:36:40 GMT):
(and sorry I didn't notice your message earlier. too many :rocket: windows open and they gobble the notifications as though I'm not afk).

boydjohnson (Wed, 17 May 2017 14:21:32 GMT):
Hey @FlyingTiger It is good to hear from you! I think you are right. That diagram shows an arrow from Consensus.BlockPublisher to Gossip but it is the journal.publisher.BlockPublisher that actually sends the block out through Gossip. @cianx, can you provide info on this?

cianx (Wed, 17 May 2017 15:46:49 GMT):
Thanks Boyd, @FlyingTiger you are correct the block is published from the block publisher to gossip. There is a channel for transactions from the consensus.BlockPublisher to gossip but that does not need to be shown on this diagram.

cianx (Wed, 17 May 2017 15:47:04 GMT):
We will get the docs updated shortly.

adamludvik (Wed, 17 May 2017 18:07:46 GMT):
@JonathanLevi I have a PR up for a Go Client SDK: https://github.com/hyperledger/sawtooth-core/pull/479 Would appreciate your feedback!

Dan (Thu, 18 May 2017 01:05:23 GMT):
someone have a .ssh/config for osx? What I use on linux and gitbash doesn't seem to fly on osx.

jsmitchell (Thu, 18 May 2017 01:05:43 GMT):
fly for what purpose?

Dan (Thu, 18 May 2017 01:25:31 GMT):
keychain

Dan (Thu, 18 May 2017 01:26:39 GMT):
`Bad configuration option: AddKeysToAgent`

Dan (Thu, 18 May 2017 01:26:59 GMT):
`Bad configuration option: UseKeychain`

Dan (Thu, 18 May 2017 01:27:18 GMT):
Gotta get my keys on a `blockchain`

jsmitchell (Thu, 18 May 2017 01:28:29 GMT):
UseKeychain appears to be a mac specific option

Dan (Thu, 18 May 2017 01:31:12 GMT):
I'm sure I got it off the interwebs a while ago. I remember it not working but been a while since I coded on this machine. Anyway if you have a .ssh config that caches your git creds lemme know.

jsmitchell (Thu, 18 May 2017 01:31:37 GMT):
i run ssh-add and ssh-agent when I reboot

jsmitchell (Thu, 18 May 2017 01:31:48 GMT):
my ssh config is empty

Dan (Thu, 18 May 2017 01:39:10 GMT):
does it prompt you everytime you pull/push?

jsmitchell (Thu, 18 May 2017 01:39:23 GMT):
no, that's what ssh-add does

jsmitchell (Thu, 18 May 2017 01:39:51 GMT):
caches the credentials in the agent

Dan (Thu, 18 May 2017 01:40:12 GMT):
yeah I thought I had that

Dan (Thu, 18 May 2017 01:40:25 GMT):
might have somethign to do with me `expoert`ing variables in my bashrc

Dan (Thu, 18 May 2017 01:40:39 GMT):
spilling is hard

FlyingTiger (Thu, 18 May 2017 01:51:36 GMT):
@boydjohnson @cinty Thanks for your answer. I opened a new issue for this bug, please take a look. https://jira.hyperledger.org/browse/STL-246

FlyingTiger (Thu, 18 May 2017 01:51:57 GMT):
@cianx

cianx (Thu, 18 May 2017 03:04:37 GMT):
@FlyingTiger thanks, are you going to the Beijing hackathon in june?

FlyingTiger (Thu, 18 May 2017 03:20:33 GMT):
@cianx No, I'm not. As I know, all of the last hackathons were organized for fabric. Is there any plan for STL? Look forward to it. :)

FlyingTiger (Thu, 18 May 2017 03:26:52 GMT):
I went to the shanghai hackathon in March. Out team developed a project "Get me a bike". Users of share bike company A could borrow a bike from company B.

cianx (Thu, 18 May 2017 03:34:58 GMT):
Cool, that sound like a fun project. I am planning to be at the bejing hackathon. I am not sure what projects we will be working on yet. Any ideas you have for STL?

vinoypm (Thu, 18 May 2017 06:22:19 GMT):
Has joined the channel.

vinoypm (Thu, 18 May 2017 06:23:43 GMT):
i am completely new to saw tooth give me some model projects pages

Dpkkmr (Thu, 18 May 2017 07:25:56 GMT):
[ ](https://chat.hyperledger.org/channel/sawtoothlake?msg=Kt6rX2s4h3vLz5Gq8) @toddojala Thanks :)

FlyingTiger (Thu, 18 May 2017 08:20:38 GMT):
HI, guys. I couldn't found the definition of a transaction processor on http://intelledger.github.io/. So I want to ask the following questions. What are the features of a transaction processor? What's the relationship between a transaction process and a transaction family? Is there any document about a transaction processor?

FlyingTiger (Thu, 18 May 2017 08:39:01 GMT):
:) I found the document about the transaction processor, it is on http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html

kelly_ (Thu, 18 May 2017 13:53:26 GMT):
@vinoypm there are some Demos here - https://01.org/sawtooth/

SahilKapoor (Thu, 18 May 2017 14:06:46 GMT):
@kelly_ aren't these demos based on previous version

pschwarz (Thu, 18 May 2017 14:27:33 GMT):
@vinoypm You'll find some simple examples in https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples

toddojala (Thu, 18 May 2017 14:36:50 GMT):
@FlyingTiger Great. We have Transaction Processor tutorials out for both Python and JavaScript as of today (more coming). http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html

kelly_ (Thu, 18 May 2017 14:38:05 GMT):
Sawtooth is now an active project! Nice proposal Dan!

jsmitchell (Thu, 18 May 2017 14:38:16 GMT):
:woot:

kelly_ (Thu, 18 May 2017 14:39:45 GMT):
@SahilKapoor yes those are .7 demos. @cianx is pushing a supply chain transaction family for 0.8 today I believe

cbf (Thu, 18 May 2017 14:55:19 GMT):
Congrats to Dan and team on graduating to Active status!

jsmitchell (Thu, 18 May 2017 14:55:31 GMT):
Thanks @cbf!

Dan (Thu, 18 May 2017 14:58:24 GMT):
Thanks @cbf !

Dan (Thu, 18 May 2017 14:59:29 GMT):
@vinoypm there's examples here: https://www.hyperledger.org/projects/sawtooth For traceability, financial transactions, and digital marketplace.

Dan (Thu, 18 May 2017 14:59:37 GMT):
Traceability = Supply Chain

zac (Thu, 18 May 2017 15:00:46 GMT):
@vinoypm The only major demos are 0.7 ones right now (though that supply chain demo _is dropping very soon). But for writing your own Transaction Processors there are a lot of examples in that SDK directory in multiple languages. In particular I would checkout the tic-tac-toe demo `xo`. It has a CLI you can use, so it demonstrates end-to-end functionality and demonstrates somewhat interesting behavior.

Dan (Thu, 18 May 2017 15:01:06 GMT):
@FlyingTiger I've been meaning to make some clarifications on Transaction proc vs. Family. tldr: Transaction Family = {Transaction Processor {handler}, Client}

Dan (Thu, 18 May 2017 15:03:19 GMT):
Family is the concept that there is a small list of transaction types for any given domain or deployment. (Even though things like EVM would allow for a broad set of transactions). The transaction processor is the server side component that interprets the validity and state change for the transactions (or atomic batches of transactions). In 0.8 one aspect of the TP is that it is its own process which is another important design feature of Transaction Processors and why we make references to that server side logic explicitly over Transaction Family's as the general concept.

Dan (Thu, 18 May 2017 15:03:43 GMT):
@amundson can now disagree with me. :D

Dan (Thu, 18 May 2017 15:07:05 GMT):
Hi @rjones I'm going to rename this channel again to #sawtooth. Can you please create a different #sawtoothlake so we catch anyone with old links for a few weeks?

rjones (Thu, 18 May 2017 15:07:05 GMT):
Has joined the channel.

amundson (Thu, 18 May 2017 16:58:28 GMT):
@Dan I agree with that, Family is the overriding concept (like intkey) which includes the transaction processor, client(s), state specification/design, etc.

amundson (Thu, 18 May 2017 16:59:30 GMT):
for intkey for example, we have multiple implementation of the transaction processors (one per SDK language), and one CLI client in python, integration tests which use it, state definition of the intkey namespace, etc.

rjones (Thu, 18 May 2017 17:00:58 GMT):
@dan that's a little fraught - why rename it? I mean, it's your channel, but we have hit a lot of bugs in rocket.chat renaming channels and I'm not sure I trust that every single one is fixed

rjones (Thu, 18 May 2017 17:04:45 GMT):
@dan but, the heart wants what the heart wants, and I guess it would be nice to have a test case for "renaming channels no longer makes them invite only". Rename away!

amundson (Thu, 18 May 2017 17:12:18 GMT):
@rjones - we could test that on #sawtoothlake-pr-review first

rjones (Thu, 18 May 2017 17:43:26 GMT):
@amundson if the bot breaks I'm going to cry :)

rjones (Thu, 18 May 2017 17:44:21 GMT):
@amundson renamed. We'll see soon enough if the webhook still works

cianx (Thu, 18 May 2017 17:46:28 GMT):
running `build_all -l python`

cianx (Thu, 18 May 2017 17:46:34 GMT):
```Unpacking libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.4) ... dpkg: error processing archive /var/cache/apt/archives/libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb (--unpack): error creating directory './usr/lib/gcc/x86_64-linux-gnu/5/include': No space left on device dpkg: unrecoverable fatal error, aborting: unable to flush /var/lib/dpkg/updates/tmp.i after padding: No space left on device E: Sub-process /usr/bin/dpkg returned an error code (2) The command '/bin/sh -c echo "deb http://repo.sawtooth.me/ubuntu/ci xenial universe" >> /etc/apt/sources.list && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B58B1AC10FB5F63 && apt-get update && apt-get install -y -q apt-transport-https build-essential ca-certificates curl git inetutils-ping libffi-dev libssl-dev pep8 python3-aiodns=1.1.1-1 python3-aiohttp=1.3.5-1 python3-async-timeout=1.2.0-1 python3-bitcoin=1.1.42-1 python3-cbor python3-cchardet=2.0a3-1 python3-chardet=2.3.0-1 python3-colorlog python3-cov-core python3-cryptography-vectors=1.7.2-1 python3-cryptography=1.7.2-1 python3-dev python3-grpcio-tools=1.1.3-1 python3-grpcio=1.1.3-1 python3-lmdb=0.92-1 python3-multidict=2.1.4-1 python3-nose2 python3-pip python3-protobuf=3.2.0-1 python3-pycares=2.1.1-1 python3-pytest-runner=2.6.2-1 python3-pytest=2.9.0-1 python3-pytz=2016.10-1 python3-requests python3-secp256k1=0.13.2-1 python3-setuptools-scm=1.15.0-1 python3-six=1.10.0-1 python3-toml python3-yaml python3-yarl=0.10.0-1 python3-zmq software-properties-common && apt-get clean && rm -rf /var/lib/apt/lists/* && pip3 install pylint==1.6.5 bandit coverage --upgrade' returned a non-zero code: 100```

pschwarz (Thu, 18 May 2017 17:53:26 GMT):
It looks like a space issue - probably due to docker images

pschwarz (Thu, 18 May 2017 17:54:59 GMT):
What does `docker container ls` show?

cianx (Thu, 18 May 2017 17:56:54 GMT):
```(SAWTOOTH)ubuntu-xenial /project/sawtooth-core $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES```

cianx (Thu, 18 May 2017 17:57:44 GMT):
```(SAWTOOTH)ubuntu-xenial /project/sawtooth-core $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE sawtooth-rest_api latest 0236de0d889c 7 days ago 727MB sawtooth-tp_config latest 0236de0d889c 7 days ago 727MB sawtooth-tp_intkey_python latest 0236de0d889c 7 days ago 727MB sawtooth-tp_supply_python latest 0236de0d889c 7 days ago 727MB sawtooth-tp_validator_registry latest 0236de0d889c 7 days ago 727MB sawtooth-tp_xo_python latest 0236de0d889c 7 days ago 727MB sawtooth-validator latest 0236de0d889c 7 days ago 727MB sawtooth-dev-python latest 0236de0d889c 7 days ago 727MB sawtooth-tp_xo_javascript latest b4727eb8f09d 7 days ago 395MB sawtooth-dev-javascript latest b4727eb8f09d 7 days ago 395MB sawtooth-tp_intkey_javascript latest b4727eb8f09d 7 days ago 395MB sawtooth-dev-java latest 337982edc744 7 days ago 653MB sawtooth-tp_intkey_java latest 337982edc744 7 days ago 653MB sawtooth-tp_intkey_go latest c247e3f0bc07 7 days ago 646MB sawtooth-dev-go latest c247e3f0bc07 7 days ago 646MB hyperledger/sawtooth-validator latest f3d80125caa8 8 days ago 166MB hyperledger/sawtooth-tp_xo_python latest 78a47ef119e1 8 days ago 165MB hyperledger/sawtooth-tp_intkey_python latest dcd6ed457e62 8 days ago 160MB hyperledger/sawtooth-tp_config latest 46992f46fd02 8 days ago 161MB hyperledger/sawtooth-rest_api latest 02534c8800c4 8 days ago 164MB hyperledger/sawtooth-all latest 6858687624a8 8 days ago 173MB sawtooth-dev-test latest c827bd63cfca 2 weeks ago 491MB sawtooth-build-python latest 7662d78edee8 2 weeks ago 543MB 32a047d9753a 2 weeks ago 681MB sawtooth-build-javascript latest 5be12c90ef5b 2 weeks ago 681MB ef1a502f7a58 2 weeks ago 653MB sawtooth-build-java latest c5d37cf69e8e 2 weeks ago 653MB cb5cea5f04a0 2 weeks ago 605MB sawtooth-build-go latest cfa9bd2981df 2 weeks ago 646MB maven 3-jdk-8 b3f2349372b0 3 weeks ago 653MB ubuntu xenial f7b3f317ec73 3 weeks ago 117MB yarnpkg/node-yarn 0.20-node7 5a46fe1fe7f2 2 months ago 677MB```

pschwarz (Thu, 18 May 2017 17:58:40 GMT):
How about `docker image ls`?

pschwarz (Thu, 18 May 2017 18:09:20 GMT):
nvm, I see what you did there

pschwarz (Thu, 18 May 2017 18:10:08 GMT):
You can delete `yarnpkg/node-yarn` from that list we don't use that

pschwarz (Thu, 18 May 2017 18:10:39 GMT):
You can probably delete all the one's named `` . Those are (most likely) the result of a failed build

pschwarz (Thu, 18 May 2017 18:11:05 GMT):
Those two should free up 1.7GB

Dan (Thu, 18 May 2017 22:27:35 GMT):
@rjones you scared me with your :rocket: :ghost: stories.

Dan (Thu, 18 May 2017 22:28:01 GMT):
If you think its less breakage then please just create a #sawtooth channel and we will wend our conversations that way.

rjones (Thu, 18 May 2017 22:28:13 GMT):
had to look to see if you follow me on snapchat

rjones (Thu, 18 May 2017 22:28:45 GMT):
Room name changed to: sawtooth by rjones

rjones (Thu, 18 May 2017 22:28:51 GMT):
nah

Dan (Thu, 18 May 2017 22:34:51 GMT):
omg he just threw caution to the wind!

rjones (Thu, 18 May 2017 22:47:26 GMT):
didn't realize you renamed the project. why?

Dan (Thu, 18 May 2017 22:48:26 GMT):
Official rules are to put HL in front of each name. Saying "Hyperledger Sawtooth Lake" was too long.

Dan (Thu, 18 May 2017 22:49:10 GMT):
Even without HL, it was kind of a long name.

rjones (Thu, 18 May 2017 22:49:14 GMT):
but Sawtooth Lake is a place I can go

Dan (Thu, 18 May 2017 22:49:30 GMT):
Today's blockchain kids demand syllable minimization.

rjones (Thu, 18 May 2017 22:49:37 GMT):
HYPSTL

Dan (Thu, 18 May 2017 22:50:08 GMT):
Oh that would have been good too. "Hey you running HYPSTL?" "You know it!"

Dan (Thu, 18 May 2017 22:52:10 GMT):
The fact it's a real lake will be part of the backstory only the most devoted will know.

rjones (Thu, 18 May 2017 22:53:44 GMT):
glad I only got those tattoos lined and not filled :(

Dan (Fri, 19 May 2017 00:22:55 GMT):
Lol

FlyingTiger (Fri, 19 May 2017 02:35:40 GMT):
@Dan @amundson Thanks for your detailed explanation. Would you add the relationship between TP and TF to the document? I think the new one could understand TP better if adding it.

SahilKapoor (Fri, 19 May 2017 07:51:04 GMT):
@cianx Were you able to push the sample or still facing some issues? If you were then for sure it will be really helpful to lot of people.

cianx (Fri, 19 May 2017 12:54:58 GMT):
@SahilKapoor I am working on getting the unit tests to pass. Once those are running I will post the PR.

SahilKapoor (Fri, 19 May 2017 13:15:43 GMT):
@cianx Great!

jsmitchell (Fri, 19 May 2017 13:48:52 GMT):
I've merged a PR which should hopefully eliminate most (all?) of the remaining intermittent test failure we've been seeing. If you have a PR that has failed testing due to `AssertionError: http://0.0.0.0:8083/blocks is not available within 5 attempts`, you should rebase and push.

jsmitchell (Fri, 19 May 2017 13:50:22 GMT):
@pschwarz ^ At first glance, I think you're the only one with a test failure for this reason at the moment.

greg2git (Fri, 19 May 2017 14:38:13 GMT):
Has joined the channel.

Dan (Fri, 19 May 2017 15:13:50 GMT):
@jsmitchell yay!

Dan (Fri, 19 May 2017 15:18:00 GMT):
Curious on namespace preferences... when I'm reading unfamiliar code it helps to see the namespace where e.g. a class comes from. Import wild cards that hide that make the code more concise but lose that immediate traceability. Not language specific thing (adam was explaining go imports to me just now for example).

kelly_ (Fri, 19 May 2017 18:29:03 GMT):
hey @SahilKapoor what sort of projects are you working on? are you an independent developer or working for a company?

SahilKapoor (Fri, 19 May 2017 18:29:40 GMT):
@kelly_ Independent Developer

kelly_ (Fri, 19 May 2017 18:29:58 GMT):
excellent, any specific use cases you are interested in?

SahilKapoor (Fri, 19 May 2017 18:31:07 GMT):
I think supply chain example can be taken forward and many use case can come out of it.

SahilKapoor (Fri, 19 May 2017 18:32:52 GMT):
And digital asset market place which is common but can be of great use in developing countries..

SahilKapoor (Fri, 19 May 2017 18:54:00 GMT):
Just one thing I think would be helpful is managing private data of the asset. For example. land registry asset given to bank for loan. Now that bank want to use it for leverage but want to hide owner's name or some specific details. So transaction is not private but some data of the asset is public to only few kind of participant .

SahilKapoor (Fri, 19 May 2017 18:54:12 GMT):
Dont know how that can be implemented using sawtooth

rjones (Fri, 19 May 2017 19:00:46 GMT):
Has left the channel.

kelly_ (Fri, 19 May 2017 19:29:35 GMT):
hey Sahil, those are great use cases

kelly_ (Fri, 19 May 2017 19:30:00 GMT):
a very simple way would be to hash the private data before putting it on the blockchain

kelly_ (Fri, 19 May 2017 19:30:19 GMT):
that way the owner could prove ownership, but it wouldn't be possible to know just by looking at the blockchain

SahilKapoor (Fri, 19 May 2017 20:38:26 GMT):
@kelly_ But what if regulator want to see that data?

Dan (Fri, 19 May 2017 20:40:52 GMT):
instead of hashing it could be encrypted with the regulator's public key.

Dan (Fri, 19 May 2017 20:42:00 GMT):
If the regulation policy is that both the user and the regulator must agree then encrypt with both keys.

Dan (Fri, 19 May 2017 20:42:00 GMT):
of if the regulation policy is that both the user and the regulator must agree then encrypt with both keys.

Dan (Fri, 19 May 2017 20:42:51 GMT):
btw, we're in the process of facilitating meetups in a few cities. If you don't mind me asking what city are you in?

SahilKapoor (Fri, 19 May 2017 20:48:02 GMT):
Delhi, India

Dan (Fri, 19 May 2017 20:50:05 GMT):
Cool. I'll put that on the list to investigate.

Dan (Fri, 19 May 2017 20:51:13 GMT):
wow isn't it like 2:20 am for you right now?

cianx (Fri, 19 May 2017 21:48:19 GMT):
What does this mean?

cianx (Fri, 19 May 2017 21:48:24 GMT):
```(SAWTOOTH)ubuntu-xenial /project/sawtooth-core $ run_docker_test sdk/examples/intkey_python/tests/tp-intkey-python.yaml -s validator --clean /project/sawtooth-core INFO:__main__:Shutting down with: ['docker-compose', '-p', 'latest', '-f', 'sdk/examples/intkey_python/tests/tp-intkey-python.yaml', 'down', '--remove-orphans'] Removing network latest_default WARNING: Network latest_default not found. ```

cianx (Fri, 19 May 2017 21:48:48 GMT):
I just rebased of the latest master and did a `build_all -l python`

drozd (Fri, 19 May 2017 23:42:45 GMT):
@cianx I think `--clean` is only needed if the last run of `run_docker_test` failed to shut down properly, so that warning just means there wasn't anything to clean

gtewallace (Sat, 20 May 2017 12:26:11 GMT):
Has joined the channel.

SahilKapoor (Sat, 20 May 2017 19:41:51 GMT):
Hi @cianx the supplychain example, how can we use it? It is not merged in master and is there any documentation around it?

SahilKapoor (Sat, 20 May 2017 19:41:51 GMT):
Hi @cianx

SahilKapoor (Sat, 20 May 2017 19:41:51 GMT):
Hi @cianx the supplychain example , how can we use it? It is not merged in master and is there any documentation around it?

SahilKapoor (Sat, 20 May 2017 19:41:51 GMT):
Hi @cianx the supplychain example , how can we use it? It is not merged in master and is there any documentation around it?

SahilKapoor (Sat, 20 May 2017 19:42:28 GMT):
I guess you were facing some issues with the example, are those resolved now?

boydjohnson (Sat, 20 May 2017 21:58:41 GMT):
Hey @jsmitchell, I spread some bad information, specifically to you. I had said 'depends_on' in docker-compose yaml files was necessary for one container to use another container's service name as a host name. This is false. Every container that is made by the 'docker-compose up' command can reach any other container listed in the same yaml file by it's service name. From the docs https://docs.docker.com/compose/networking/: "Each container for a service joins the default network and is both reachable by other containers on that network, and discoverable by them at a hostname identical to the container name."

jsmitchell (Sat, 20 May 2017 22:11:07 GMT):
_cries_

jsmitchell (Sat, 20 May 2017 22:11:33 GMT):
If you can't believe @boydjohnson, who _can_ you believe

davidscherban (Sat, 20 May 2017 22:34:25 GMT):
Has joined the channel.

anuragsrivastava (Sun, 21 May 2017 10:30:46 GMT):
Has joined the channel.

anuragsrivastava (Sun, 21 May 2017 10:33:39 GMT):
Hi! I am trying to wrap my head around the architecture of sawtooth. Got stuck in Journal. What is the difference between a Block and a Batch and why are they processed differently?

anuragsrivastava (Sun, 21 May 2017 10:46:25 GMT):
I understand that a set of ordered transactions form a batch

anuragsrivastava (Sun, 21 May 2017 11:54:10 GMT):
is a block collection of batches?

FlyingTiger (Sun, 21 May 2017 12:53:32 GMT):
@ambatigaan Transactions are always wrapped inside of a batch. All transactions within a batch are committed to state together or not at all.

ambatigaan (Sun, 21 May 2017 12:53:32 GMT):
Has joined the channel.

FlyingTiger (Sun, 21 May 2017 12:57:01 GMT):
A block is a collection of transactions, and contains a link to a previous block. The data in a block cannot be altered.

FlyingTiger (Sun, 21 May 2017 13:31:10 GMT):
Sorry, a block should be a collection of batches in the latest new version of STL.

anuragsrivastava (Sun, 21 May 2017 13:36:17 GMT):
@FlyingTiger thanks for validating it. :)

FlyingTiger (Sun, 21 May 2017 13:50:00 GMT):
Could anybody help me? When I ran "./bin/run_tests -x java_sdk -x javascript_sdk", I got the following error:

FlyingTiger (Sun, 21 May 2017 13:50:27 GMT):
[---Running signing tests---] /root/projects/sawtooth-core Traceback (most recent call last): File "/root/projects/sawtooth-core/bin/run_docker_test", line 357, in main() File "/root/projects/sawtooth-core/bin/run_docker_test", line 93, in main _check_for_existing_containers(compose_file, compose_dict, isolation_id) File "/root/projects/sawtooth-core/bin/run_docker_test", line 266, in _check_for_existing_containers containers = _get_existing_containers() File "/root/projects/sawtooth-core/bin/run_docker_test", line 285, in _get_existing_containers containers = subprocess.run( AttributeError: 'module' object has no attribute 'run'

FlyingTiger (Sun, 21 May 2017 13:50:29 GMT):
What's wrong with it?

cianx (Sun, 21 May 2017 18:51:45 GMT):
@SahilKapoor The initial transaction processor PR is up: https://github.com/hyperledger/sawtooth-core/pull/493

boydjohnson (Sun, 21 May 2017 21:45:44 GMT):
@FlyingTiger I would guess, but don't know, that the ./bin/run_tests command was run in an environment that didn't have python 3.5 installed.

FlyingTiger (Mon, 22 May 2017 02:19:59 GMT):
@boydjohnson ~/projects/sawtooth-core# python --version Python 3.4.3

FlyingTiger (Mon, 22 May 2017 02:19:59 GMT):
Python 3.4.3 is not enough, Python 3.5 is needed?

Robtg4 (Mon, 22 May 2017 06:34:18 GMT):
Has joined the channel.

Robtg4 (Mon, 22 May 2017 06:34:27 GMT):
Any tutorials around this?

FlyingTiger (Mon, 22 May 2017 08:06:34 GMT):
@Robtg4 Around what? STL or STL Environment Setup?

FlyingTiger (Mon, 22 May 2017 08:07:55 GMT):
http://intelledger.github.io/core_developers_guide/environment_setup.html

JonathanLevi (Mon, 22 May 2017 10:49:24 GMT):
Good morning. Just waking up after quite an intense hacking sessions.

JonathanLevi (Mon, 22 May 2017 10:49:24 GMT):
Good morning. Just waking up after quite an intense overnight hacking session.

JonathanLevi (Mon, 22 May 2017 10:49:41 GMT):
*We won 2 ( ! ) awards yesterday* with our *Sawtooth* based secure/guaranteed payment/audit-able, privacy preserving Chess game that uses Sovrin identifiers and Quorum for guaranteed funds distribution.

JonathanLevi (Mon, 22 May 2017 10:50:32 GMT):
Didn't want to build it on Fabric, as I wanted to force myself to sit down and get a working end-to-end flaw of SL.

JonathanLevi (Mon, 22 May 2017 10:50:57 GMT):
You guys have quite an awesome architecture, really.

FlyingTiger (Mon, 22 May 2017 11:37:41 GMT):
@boydjohnson Thanks, you are right. I installed and used python 3.5, and "./bin/run_tests -x java_sdk -x javascript_sdk" is passed.

jsmitchell (Mon, 22 May 2017 11:56:45 GMT):
@JonathanLevi wow, thanks! Congratulations on your awards!

SahilKapoor (Mon, 22 May 2017 12:53:00 GMT):
Hi @cianx

SahilKapoor (Mon, 22 May 2017 12:53:03 GMT):
the supplychain example, how can we use it? It is not merged in master and is there any documentation around it?

Dan (Mon, 22 May 2017 13:08:45 GMT):
Hi @SahilKapoor it is still in review. You can use that branch though to get familiar.

SahilKapoor (Mon, 22 May 2017 13:09:19 GMT):
Yes will do..

boydjohnson (Mon, 22 May 2017 13:14:27 GMT):
@FlyingTiger Yes! I'm glad you got python 3.5 installed. Note that the build_all script will build docker images by default that can have the source code mounted inside, but if you want to test out the debian packages, which is what is being run in the build server, you would first run 'build_all [any exclusion or limiting] debs' and then run_tests. To go back to the mounted version you would have to run 'build_all' again. Since build_all debs takes so long it is recommended that during development only the mounted files are used for python development.

boydjohnson (Mon, 22 May 2017 13:22:57 GMT):
Has anyone else noticed differences on the dynamic-network.yaml test between mounted and debs? It passes for both, but with mounted each validator only has 1 block at the end, where for debs each validator has ~18 blocks. To see the difference (if any) run `build_all -l python debs` (on current master) and then `run_docker_test integration/sawtooth_integration/docker/dynamic-network.yaml` it should produce many blocks and pass. Run `build_all -l python` and then `run_docker_test integration/sawtooth_integration/docker/dynamic-network.yaml` and only 1 block is produced.

adamludvik (Mon, 22 May 2017 14:04:49 GMT):
What if you do `build_all -l python installed`?

boydjohnson (Mon, 22 May 2017 14:06:49 GMT):
Haven't tried that. Will try soon.

boydjohnson (Mon, 22 May 2017 14:11:46 GMT):
Hey @adamludvik What is the difference between 'debs' and 'installed'?

rbuysse (Mon, 22 May 2017 14:12:37 GMT):
debs just builds the debs

adamludvik (Mon, 22 May 2017 14:12:51 GMT):
`installed` builds debs for all the python components and then creates docker images with those debs. ^

boydjohnson (Mon, 22 May 2017 14:14:30 GMT):
Oh, thanks. So running build_all debs shouldn't affect the test?

rbuysse (Mon, 22 May 2017 14:15:25 GMT):
running build_all debs should not have any affect on the docker images used for tests

boydjohnson (Mon, 22 May 2017 14:16:12 GMT):
Thanks. I will try to get a more rational test difference. Perhaps there is a intermittent difference.

toddojala (Mon, 22 May 2017 14:20:02 GMT):
@Robtg4 Keep in mind that if you go the "latest release" version of the docs, you'll get the very latest, but that might be out of sync with the stable release version that you get with the docker images and .deb packages.

boydjohnson (Mon, 22 May 2017 14:49:47 GMT):
Ah, so just realized something. @adamludvik @rbuysse That dynamic-network.yaml test runs all the processes inside one container using subprocess. The container is based on the sawtooth-dev-python image. So that would run all the mounted code, right?

adamludvik (Mon, 22 May 2017 14:50:16 GMT):
yes

boydjohnson (Mon, 22 May 2017 14:51:40 GMT):
Looking on build.sawtooth.me, I can't seem to find a test run where the dynamic-network test produces only 1 block, but I get that regularly in local runs on master.

drozd (Mon, 22 May 2017 14:56:46 GMT):
@boydjohnson I've seen that error too. Currently that result passes because the test only verifies consensus, not nontrivial consensus (which is clearly an oversight)

boydjohnson (Mon, 22 May 2017 14:57:32 GMT):
Thanks for confirming, @drozd

jsmitchell (Mon, 22 May 2017 16:29:54 GMT):
@JonathanLevi Is your code available to take a look at? I'm really interested in seeing how you did the Sovrin integration!

pschwarz (Mon, 22 May 2017 16:56:00 GMT):
@JonathanLevi great to meet you this weekend at the hackathon, and awesome that you guys won those awards. It was a very cool solution, and definitely love to see how you put the chess transaction processor together, if it's available.

mwagner (Mon, 22 May 2017 19:48:04 GMT):
Has joined the channel.

cianx (Mon, 22 May 2017 20:14:58 GMT):
@FlyingTiger I have posted a PR to update the Journal Docs (https://github.com/hyperledger/sawtooth-core/pull/508)

FlyingTiger (Tue, 23 May 2017 11:02:36 GMT):
I got some warnings when I ran the "intkey load -f batches.intkey" command

FlyingTiger (Tue, 23 May 2017 11:02:54 GMT):
[18:54:58 WARNING load] (401): Unauthorized [18:54:58 WARNING load] (401): Unauthorized

FlyingTiger (Tue, 23 May 2017 11:03:19 GMT):
What's the problem?

FlyingTiger (Tue, 23 May 2017 11:19:19 GMT):
I also got an error when I ran the "./bin/sawtooth config proposal create..." command.

FlyingTiger (Tue, 23 May 2017 11:19:31 GMT):
Error: (401): Unauthorized

FlyingTiger (Tue, 23 May 2017 11:19:56 GMT):
What's wrong with it?

Styxt (Tue, 23 May 2017 11:27:19 GMT):
Has left the channel.

jsmitchell (Tue, 23 May 2017 12:51:57 GMT):
What url are you giving to those processes when you start them?

jsmitchell (Tue, 23 May 2017 12:52:47 GMT):
It needs to be the url of a running instance of rest_api which is connected to the validator

SahilKapoor (Tue, 23 May 2017 13:38:06 GMT):
Can something like https://github.com/hyperledger/composer/issues/1043 be implemented by sawtooth

SahilKapoor (Tue, 23 May 2017 13:38:06 GMT):
@jsmitchell Can something like https://github.com/hyperledger/composer/issues/1043 be implemented by sawtooth

SahilKapoor (Tue, 23 May 2017 13:38:06 GMT):
@jsmitchell Can something like https://github.com/hyperledger/composer/issues/1043 be implemented by sawtooth

SahilKapoor (Tue, 23 May 2017 13:38:06 GMT):
@jsmitchell Can something like https://github.com/hyperledger/composer/issues/1043 be implemented with sawtooth

pschwarz (Tue, 23 May 2017 14:23:01 GMT):
@FlyingTiger There are some setup things that you need to do to enable the proposal/voting mechanism. Namely, you need to be sure that you started did the following steps: ``` $ sawtooth config genesis Generated config-genesis.batch $ sawtooth admin genesis config-genesis.batch Processing config-genesis.batch... Generating /home/ubuntu/sawtooth/data/genesis.batch $ validator -vv --public-uri ``` and in a separate terminal: ``` $ tp_config -vv tcp://localhost:40000 ```

pschwarz (Tue, 23 May 2017 14:24:27 GMT):
You can provide more configuration settings to the `sawtooth config genesis` command, that will go into the genesis block. Minimally this puts one setting: your public key as an authorized configuration proposer/voter

toddojala (Tue, 23 May 2017 14:39:31 GMT):
@pschwarz Interesting. I think we may need to update the docs to capture this latest flow with config and genesis.

toddojala (Tue, 23 May 2017 14:39:42 GMT):
I'll get that in asap.

jsmitchell (Tue, 23 May 2017 14:40:53 GMT):
@pschwarz I suspect that error that @FlyingTiger got was because he ran proposal create in `interactive` mode, rather than with an output file

pschwarz (Tue, 23 May 2017 14:41:12 GMT):
Ah, that is also possibly true

jsmitchell (Tue, 23 May 2017 14:41:14 GMT):
and similar to his intkey error, he has an issue with rest api/validator

pschwarz (Tue, 23 May 2017 14:41:40 GMT):
Was it behind a proxy?

Dan (Tue, 23 May 2017 17:24:56 GMT):
@Tom Barnes continuing from email I just sent. @dhuseby mentioned that the CII dynamic analysis requirement is for c++ (memory unsafe) and the other related requirement for fuzzing/dyn analysis is to do before release. We just need to document that is part of the release plan. Please also look into AFL for the fuzzing tool and see if there's a python adapter we can use. Meanwhile though I think that gets us to 100%. If you can update that questionnaire today then that helps with timing of some announcements that HL would like to make.

jsmitchell (Tue, 23 May 2017 17:51:15 GMT):
@FlyingTiger are you still around?

jsmitchell (Tue, 23 May 2017 17:56:07 GMT):
@FlyingTiger https://github.com/hyperledger/sawtooth-core/pull/511 is approved. I don't know if anyone has gone over the process for PRs with you, but basically you set yourself up as the 'Assignee' and you add a handful of reviewers. Once you have at least two approved reviews (and zero 'request changes' reviews), you can go ahead and 'rebase and merge' the PR into master via the github interface.

jsmitchell (Tue, 23 May 2017 17:57:04 GMT):
If you don't have permission to do that yet, you can assign someone else (probably one of the reviewers) as an alternate Assignee and ask them to do it.

SahilKapoor (Tue, 23 May 2017 18:47:37 GMT):
@cianx Is there any documentation for implementing supply chain sample

cianx (Tue, 23 May 2017 20:17:24 GMT):
@SahilKapoor The transaction processor spec will be submitted to a Pull request in a day or two. Next week we will have a command line interface and some example usages of the cli documented. What are you trying to accomplish with the SupplyChain example.

cianx (Tue, 23 May 2017 20:17:24 GMT):
@SahilKapoor The transaction processor spec will be submitted to a Pull request in a day or two. Next week we will have a command line interface and some example usages of the cli documented. What are you trying to accomplish with the SupplyChain example?

FlyingTiger (Wed, 24 May 2017 02:40:19 GMT):
Hi, guys, I encountered a problem again, when I ran the "validator -vv --public-uri tcp://localhost:8800", and stopped it by pressing CTRL -c

FlyingTiger (Wed, 24 May 2017 02:41:40 GMT):
Then I reran the "validator -vv --public-uri tcp://localhost:8800" command, I got the following error:

FlyingTiger (Wed, 24 May 2017 02:41:46 GMT):
[10:31:38.362 DEBUG selector_events] Using selector: ZMQSelector Exception in thread InterconnectThread-5: Traceback (most recent call last): File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "/usr/lib/python3.5/threading.py", line 862, in run self._target(*self._args, **self._kwargs) File "/root/projects/sawtooth-core/validator/sawtooth_validator/networking/interconnect.py", line 348, in setup self._socket.bind(self._address) File "zmq/backend/cython/socket.pyx", line 495, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5653) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:10014) zmq.error.ZMQError: Address already in us

FlyingTiger (Wed, 24 May 2017 02:42:00 GMT):
Please help me, thanks

jsmitchell (Wed, 24 May 2017 02:44:29 GMT):
@FlyingTiger make sure all the processes are stopped and wait a minute or two

jsmitchell (Wed, 24 May 2017 02:44:34 GMT):
http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html

jsmitchell (Wed, 24 May 2017 02:44:48 GMT):
its TCP TIME_WAIT

jsmitchell (Wed, 24 May 2017 02:45:17 GMT):
It's a pain, but not sure how to improve it

FlyingTiger (Wed, 24 May 2017 02:46:19 GMT):
@jsmitchell I have waited for almost one hour.

jsmitchell (Wed, 24 May 2017 02:46:35 GMT):
You must have processes still running

FlyingTiger (Wed, 24 May 2017 02:47:53 GMT):
Oh, yes, "tp_config" process is running

FlyingTiger (Wed, 24 May 2017 02:47:58 GMT):
I stopped it

jsmitchell (Wed, 24 May 2017 02:48:47 GMT):
Yep, wait a couple of minutes now, and it should be ok

FlyingTiger (Wed, 24 May 2017 02:50:24 GMT):
So we should stop all the processes, then restart validator? But I didn't found this information on the documents.

FlyingTiger (Wed, 24 May 2017 02:51:06 GMT):
@jsmitchell thanks very much! :)

jsmitchell (Wed, 24 May 2017 02:51:38 GMT):
Yeah, it's not the ideal situation. We may be able to fix it with changes to how connections are closed.

FlyingTiger (Wed, 24 May 2017 06:08:16 GMT):
@pschwarz I followed your instructions, and the "intkey load -f batches.intkey" command is passed.

FlyingTiger (Wed, 24 May 2017 06:09:12 GMT):
The following messages appear in the logging output of the validator: [11:16:39.471 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1002974 bytes [11:16:39.876 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'726526ed37914010' [11:16:39.901 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 965335 bytes [11:16:39.925 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'726526ed37914010'

FlyingTiger (Wed, 24 May 2017 07:33:41 GMT):
Another problem, when I ran the "./bin/sawtooth batch list" command, the output is Error: (503): Service Unavailable

FlyingTiger (Wed, 24 May 2017 07:34:58 GMT):
The validator outputs the following information

FlyingTiger (Wed, 24 May 2017 07:35:20 GMT):
[15:20:56.940 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_LIST_REQUEST message: 73 bytes [15:20:56.941 DEBUG client_handlers] Unable to get chain head from block store [15:20:56.942 DEBUG interconnect] ServerThread sending CLIENT_BATCH_LIST_RESPONSE to b'e757ceafa29948e0'

FlyingTiger (Wed, 24 May 2017 07:41:31 GMT):
Why unable to get chain head from block store? What do I need to do?

FlyingTiger (Wed, 24 May 2017 08:34:02 GMT):
The problem is that the validator has no genesis block. I recreated the genesis block, and restarted the validator. It's ok.

FlyingTiger (Wed, 24 May 2017 08:44:43 GMT):
@pschwarz I followed your instructions, and the "intkey load -f batches.intkey" command is passed. But has another problem that the validator has no genesis block. I don't know why? the validator outputs the following information:

FlyingTiger (Wed, 24 May 2017 08:57:49 GMT):
[16:37:42.171 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml [16:37:42.171 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.priv [16:37:42.172 INFO cli] config [path]: config_dir = "/etc/sawtooth" [16:37:42.173 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" [16:37:42.173 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" [16:37:42.173 INFO cli] config [path]: log_dir = "/var/log/sawtooth" [16:37:42.173 DEBUG core] database file is /var/lib/sawtooth/merkle-00.lmdb [16:37:42.174 DEBUG core] state delta store file is /var/lib/sawtooth/state-deltas-00.lmdb [16:37:42.175 DEBUG core] block store file is /var/lib/sawtooth/block-00.lmdb [16:37:42.178 DEBUG selector_events] Using selector: ZMQSelector [16:37:42.182 DEBUG dispatch] Added send_message function for connection ServerThread [16:37:42.182 DEBUG genesis] genesis_batch_file: /var/lib/sawtooth/genesis.batch [16:37:42.183 DEBUG genesis] block_chain_id: not yet specified [16:37:42.183 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 110 bytes [16:37:42.183 INFO genesis] Producing genesis block from /var/lib/sawtooth/genesis.batch [16:37:42.184 INFO processor_handlers] registered transaction processor: connection_id=2e62a02f37f5c8d383f867745ebef906137f355e3e53d7e664c4e00c5e1dc198b05d530a2d8d03e6b3f3115b1ba5d0312be7ce725d0719d92fcc9ec6827ee8af, family=intkey, version=1.0, encoding=application/cbor, namespaces= [16:37:42.184 DEBUG genesis] Adding 1 batches [16:37:42.185 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'8d62d2ebffbf4990' [16:37:42.186 DEBUG executor] no transaction processors registered for processor type sawtooth_config: 1.0: application/protobuf [16:37:42.187 INFO executor] Waiting for transaction processor (sawtooth_config, 1.0, application/protobuf)

FlyingTiger (Wed, 24 May 2017 09:02:29 GMT):
@pschwarz I solved the problem, should start the config family transaction processor, run the "$ tp_config tcp://localhost:40000"

pschwarz (Wed, 24 May 2017 14:15:05 GMT):
@FlyingTiger Great, glad you figured it out. There are a number of moving parts needed there :)

pd93 (Wed, 24 May 2017 15:10:47 GMT):
Has joined the channel.

haridhakshini (Wed, 24 May 2017 16:23:01 GMT):
Hi all! :) I am Haridhakshini and I am a Hyperledger intern for Sawtooth Lake project. I am really excited to be a part of this community and looking forward to contribute the best I can! :)

jsmitchell (Wed, 24 May 2017 16:23:20 GMT):
excellent! Welcome @haridhakshini !!

mfford (Wed, 24 May 2017 16:25:34 GMT):
#channel The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, May 25th from 10-11am CDT. This will be the first in a series of technical forums featuring presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Call-in: 401-283-2000 4807579435# Conference Link: https://www.uberconference.com/hyperledger-community International Access Numbers: https://www.uberconference.com/international Agenda: 1. Introductions-Mark Ford 2. Writing Transaction Family Specifications – Todd Ojala 3. One specification, many implementations (SDK/Intkey)-Adam Ludvik 4. Open Forum

mfford (Wed, 24 May 2017 16:25:34 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, May 25th from 10-11am CDT. This will be the first in a series of technical forums featuring presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Call-in: 401-283-2000 4807579435# Conference Link: https://www.uberconference.com/hyperledger-community International Access Numbers: https://www.uberconference.com/international Agenda: 1. Introductions-Mark Ford 2. Writing Transaction Family Specifications – Todd Ojala 3. One specification, many implementations (SDK/Intkey)-Adam Ludvik 4. Open Forum

PriteshPatel (Wed, 24 May 2017 19:39:11 GMT):
Has joined the channel.

kenmazsyma (Wed, 24 May 2017 23:21:23 GMT):
Has joined the channel.

kenmazsyma (Wed, 24 May 2017 23:39:27 GMT):
Has left the channel.

mpk (Thu, 25 May 2017 00:14:48 GMT):
Has joined the channel.

mpk (Thu, 25 May 2017 00:17:56 GMT):
Hello. I was able to setup Sawtooth Lake, create a transaction processor and send transaction from a node.js web client. I am also able to read the state back rom node.js. But the data returned is all encrypted. How to do I decrypt it back from my client node.js program. I am getting the data as a json in response to rest api call : GET /state/{address}

FlyingTiger (Thu, 25 May 2017 07:36:03 GMT):
When I ran ‘./bin/run_lint’, The command produced many outputs, ************* Module sawtooth_cli.admin_command.config R: 25, 4: Unnecessary "else" after "return" (no-else-return) R: 62, 4: Unnecessary "else" after "return" (no-else-return) ...... We need to remove them, do we?

FlyingTiger (Thu, 25 May 2017 11:22:55 GMT):
When I ran './bin/run_lint', I got an error:

FlyingTiger (Thu, 25 May 2017 11:23:23 GMT):
File "/usr/local/lib/python3.5/dist-packages/astroid/decorators.py", line 85, in wrapped res = next(generator) File "/usr/local/lib/python3.5/dist-packages/astroid/inference.py", line 409, in _filter_operation_errors for result in infer_callable(self, context): File "/usr/local/lib/python3.5/dist-packages/astroid/inference.py", line 709, in _infer_augassign for lhs in self.target.infer_lhs(context=context): File "/usr/local/lib/python3.5/dist-packages/astroid/inference.py", line 137, in infer_name frame, stmts = self.lookup(self.name) File "/usr/local/lib/python3.5/dist-packages/astroid/node_classes.py", line 716, in lookup return self.scope().scope_lookup(self, name) File "/usr/local/lib/python3.5/dist-packages/astroid/scoped_nodes.py", line 698, in scope_lookup return frame._scope_lookup(node, name, offset) File "/usr/local/lib/python3.5/dist-packages/astroid/scoped_nodes.py", line 146, in _scope_lookup stmts = node._filter_stmts(self.locals[name], self, offset) File "/usr/local/lib/python3.5/dist-packages/astroid/node_classes.py", line 740, in _filter_stmts if offset == -1: RecursionError: maximum recursion depth exceeded in comparison

FlyingTiger (Thu, 25 May 2017 11:23:59 GMT):
What's wrong with this?

jsmitchell (Thu, 25 May 2017 11:49:47 GMT):
pylint released 1.7.x. In docker it is pinned to 1.6.5 so that builds work. in vagrant you can do "sudo pip3 install pylint==1.6.5" to downgrade pylint and then run_lint will pass.

jsmitchell (Thu, 25 May 2017 11:50:54 GMT):
@mpk 2 how are you serializing your data for storage in the transaction processor you wrote (when you call set())?

jsmitchell (Thu, 25 May 2017 11:51:53 GMT):
You bytes you set will be the bytes you get from the rest API. You will need to deserialize your data in your js code.

jsmitchell (Thu, 25 May 2017 11:51:53 GMT):
You bytes you set will be the bytes you get from the rest API. You will need to deserialize your data in your js code.

jsmitchell (Thu, 25 May 2017 11:51:53 GMT):
The bytes you set will be the bytes you get from the rest API. You will need to deserialize your data in your js code.

jsmitchell (Thu, 25 May 2017 13:47:05 GMT):
@FlyingTigerL: did that help?

jsmitchell (Thu, 25 May 2017 13:47:05 GMT):
@FlyingTiger: did that help?

pschwarz (Thu, 25 May 2017 14:16:02 GMT):
@mpk 2 The data returned by `/state` is the encoded bytes your transaction processor stored at that address, base64 encoded again.

dennismckinnon (Thu, 25 May 2017 14:56:54 GMT):
Has joined the channel.

tkuhrt (Thu, 25 May 2017 15:54:08 GMT):
Recording from today's Technical Forum for anyone who would like to have a listen. Meeting starts at 15:44 into the recording: https://www.uberconference.com/getmp3/AMIfv97kKoPTEWU7Rd0iKWD5EkajQ25dntyaR9M0zL34CaU318mMXGGqDymoy1QUpBBORRxOLwqOS8f4l0bF0CrItnESJ4YYPMrQaDRQviy3zZkwwDZXOm4uA9LyNzKTfM-N7raCXPdsJDA_XO5WUnTng7-TOGGdqQ.mp3

mpk (Thu, 25 May 2017 20:59:39 GMT):
@pschwarz . If its simply encoded and not encrypted, then anybody will be able to read the data through REST API. What about security? Anyway, I will try that out

mpk (Thu, 25 May 2017 21:02:40 GMT):
@jsmitchell , I am serializing exactly as in the documentation. All that is working correctly. If I miss a step, the TP will reject. I am reading back using a simple restcall , which anyone could do . My expectation is that the data is secure and need to decrypted using public key. I just do not know how to do it

jsmitchell (Thu, 25 May 2017 21:05:40 GMT):
if you want to store encrypted payload, you will need to encrypt it on the client side as part of your transaction format

jsmitchell (Thu, 25 May 2017 21:05:40 GMT):
if you want to store encrypted content, you will need to encrypt it on the client side as part of your transaction format

jsmitchell (Thu, 25 May 2017 21:06:51 GMT):
the transaction processor would just have to store that portion of the payload as is. Obviously, if the transaction processor has the private keys, then anyone running a validator would have the private keys and be able to decrypt the data.

jsmitchell (Thu, 25 May 2017 21:06:58 GMT):
What is your use case?

jsmitchell (Thu, 25 May 2017 21:08:25 GMT):
as @pschwarz said, the data coming back from your rest call is the same data as your transaction processor set()

mpk (Thu, 25 May 2017 21:18:15 GMT):
I do not want to encrypt. I just want to get the data back. Let follow your advice and see a simple decoding would do. Thank you.

jsmitchell (Thu, 25 May 2017 21:18:42 GMT):
how are you setting the data in your transaction processor?

jsmitchell (Thu, 25 May 2017 21:18:58 GMT):
how are you picking the address to use and how are you serializing the data to be stored there?

mpk (Thu, 25 May 2017 21:19:01 GMT):
let me check

mpk (Thu, 25 May 2017 21:23:57 GMT):
https://join.me/482-113-310

mpk (Thu, 25 May 2017 21:24:33 GMT):
I am sorry, wrong window

mpk (Thu, 25 May 2017 21:56:52 GMT):
I am setting the value like this: stateValue[name] = value

mpk (Thu, 25 May 2017 21:57:26 GMT):
this is in the transaction processor. This works and I can see the value using CLI.

mpk (Thu, 25 May 2017 21:57:34 GMT):
as plain text

FlyingTiger (Fri, 26 May 2017 01:36:58 GMT):
@jsmitchell Yes, it did. Thanks very much!

jsmitchell (Fri, 26 May 2017 14:01:52 GMT):
@mpk are you willing to share your code? I could take a quick peek and maybe provide some pointers.

zac (Fri, 26 May 2017 15:59:02 GMT):
@mpk The CLI decodes the base64 data before printing. That is just a format for transmitting data over HTTP. Your client should do the same (use `from base64 import b64decode` in Python).

zac (Fri, 26 May 2017 15:59:02 GMT):
@mpk The CLI decodes the base64 data before printing. That is just a format used to transmitting data over HTTP/JSON. Your client should do the same (use `from base64 import b64decode` in Python).

zac (Fri, 26 May 2017 15:59:02 GMT):
@mpk The CLI decodes the base64 data before printing. It's just a format used to transmitting data over HTTP/JSON. Your client can do the same (use `from base64 import b64decode` in Python).

zac (Fri, 26 May 2017 15:59:02 GMT):
@mpk The CLI decodes the base64 data before printing. It's just a format used to transmit data over HTTP/JSON. Your client can do the same (use `from base64 import b64decode` in Python).

pd93 (Fri, 26 May 2017 16:12:36 GMT):
Hi guys, I've been using Fabric for a while now. But I'm becoming increasingly interested in some of the other Hyperledger projects (particularly those gaining traction like Sawtooth Lake and Iroha). I was wondering if you could - in as few words as possible - tell me what the main differences/benefits of using Sawtooth Lake over Fabric might be. Thanks :)

pd93 (Fri, 26 May 2017 16:12:36 GMT):
Hi guys, I've been using Fabric for a while now. But I'm becoming increasingly interested in some of the other Hyperledger projects (particularly those gaining traction like Sawtooth Lake and Iroha). I was wondering if you could - in as few words as possible - tell me (or point me to some documentation explaining) what the main differences/benefits of using Sawtooth Lake over Fabric might be. Thanks :)

mpk (Fri, 26 May 2017 16:47:44 GMT):
@jsmitchell . Thank you! Let me get back to you next week.

mpk (Fri, 26 May 2017 16:51:37 GMT):
@pd93 - from my analysis, Fabric is much more versatile, but the code is not ready for prime time. Sawtooth is much simpler but works now. I have not tried Iroha, but its more for light weight clients like mobile apps. Remember that all these are in incubation mode . I dropped my efforts on Fabric for now and focussing on Sawtooth - the code is more disciplined and stable there. That said, Fabric have better architecture and I will eventually migrate to that.

jsmitchell (Fri, 26 May 2017 16:53:00 GMT):
Well, I'm going to have to go ahead and disagree with you :)

jsmitchell (Fri, 26 May 2017 16:53:14 GMT):
All three projects are out of incubation

jsmitchell (Fri, 26 May 2017 16:53:31 GMT):
We can have a lengthy discussion about architectures

mpk (Fri, 26 May 2017 16:56:15 GMT):
I am talking about Version 1.x . Fabric is totally different between 0.6 and 1.x right? Anyway, may be I am still learning. I need to see things working first hand with my own code before I can say anything strongly. For now, just sharing my experience with you guys. But this technology will rock!

pd93 (Fri, 26 May 2017 17:11:19 GMT):
@mpk Indeed Fabric v1 is very different from v0.6 but I'm mainly interested in the differences in architecture. For example what use cases might suit Sawtooth better than Fabric and how it's architecture effects its confidentiality, distribution & scalability. I find there is often a trade off between these three depending on the framework.

pd93 (Fri, 26 May 2017 17:11:19 GMT):
@jsmitchell @mpk Indeed Fabric v1 is very different from v0.6 but I'm mainly interested in the differences in architecture. For example what use cases might suit Sawtooth better than Fabric and how it's architecture effects its confidentiality, distribution & scalability. I find there is often a trade off between these three depending on the framework.

mpk (Fri, 26 May 2017 17:16:27 GMT):
@jsmitchell Yes, I agree.

zac (Fri, 26 May 2017 17:31:08 GMT):
@pd93 I don't know if I have used Fabric enough to comment on differences between the architectures, but there are two aspects of Sawtooth that jump out at me:

zac (Fri, 26 May 2017 17:31:08 GMT):
@pd93 I don't know if I have used Fabric enough to comment on differences between the architectures, but there are a few aspects of Sawtooth that jump out at me:

zac (Fri, 26 May 2017 17:31:08 GMT):
@pd93 I don't know if I have used Fabric enough to comment on differences between the architectures, but there are a few Sawtooth's strengths that jump out at me:

zac (Fri, 26 May 2017 17:33:14 GMT):
1) Sawtooth makes very few assumptions about what it is you want to do with the blockchain. Payloads submitted are completely opaque to the validators, which just handle things like signing. You can then plug in your own Transaction Processor to validate the payload, allowing you to do just about anything pretty easily.

zac (Fri, 26 May 2017 17:34:26 GMT):
2) The consensus mechanisms is also pluggable. It is easy to switch between different methods of achieving consensus, including on an already running blockchain.

zac (Fri, 26 May 2017 17:35:47 GMT):
3) Among the consensus mechanisms available, there is the hardware-supported PoET (Proof of Elapsed Time), which offers a lot of advantages in terms of scalability, resources used, and time used.

zac (Fri, 26 May 2017 17:35:47 GMT):
3) Among the consensus mechanisms available, there is the hardware-supported PoET (Proof of Elapsed Time), which offers a lot of advantages in terms of scalability, resources consumed, and time passed.

pd93 (Fri, 26 May 2017 17:45:15 GMT):
@zac That's actually quite interesting. Fabric is also quite a general purpose framework, but from what I can tell, the orderers are able to see all channels/txs. Does Sawtooth have a similar concept to channels? It seems that the main difference between the two currently is in the consensus mechanism (ie. PoET vs Kafka). Though I believe there are plans for interoperability between the Hyperledger frameworks and their pluggable components in the future?

pd93 (Fri, 26 May 2017 17:45:15 GMT):
@zac That's actually quite interesting. Fabric is also quite a general purpose framework, but from what I can tell, the orderers (validators) are able to see all channels/txs. Does Sawtooth have a similar concept to channels? It seems that the main difference between the two currently is in the consensus mechanism (ie. PoET vs Kafka). Though I believe there are plans for interoperability between the Hyperledger frameworks and their pluggable components in the future?

pd93 (Fri, 26 May 2017 17:45:15 GMT):
@zac That's actually quite interesting. Fabric is also quite a general purpose framework, but from what I can tell, the orderers (validators) are able to see all channels/txs. Does Sawtooth have a concept similar to Fabric's channels? It seems that the main difference between the two currently is in the consensus mechanism (ie. PoET vs Kafka). Though I believe there are plans for interoperability between the Hyperledger frameworks and their pluggable components in the future?

zac (Fri, 26 May 2017 17:55:48 GMT):
It's definitely been discussed, but I'm not sure how much there is in the way of hard plans

zac (Fri, 26 May 2017 17:56:04 GMT):
What do Fabric's channels do? I'm not familiar.

jsmitchell (Fri, 26 May 2017 17:56:18 GMT):
they are side chains

jsmitchell (Fri, 26 May 2017 17:56:35 GMT):
the main block chain is just an ordering service

zac (Fri, 26 May 2017 17:57:01 GMT):
So this is how they would handle transactions with different purposes?

zac (Fri, 26 May 2017 17:57:12 GMT):
A different side chain for each?

jsmitchell (Fri, 26 May 2017 17:57:22 GMT):
no, it's for different security domains

jsmitchell (Fri, 26 May 2017 17:57:50 GMT):
in most use cases though, it seems like you end up with one channel per counterparty relationship plus regulators

jsmitchell (Fri, 26 May 2017 17:57:57 GMT):
so it's an N^2 problem

zac (Fri, 26 May 2017 17:58:13 GMT):
Ah, so they are private chains, that store hashes on the main chain to confirm order publicly without exposing the data?

jsmitchell (Fri, 26 May 2017 17:58:19 GMT):
yep

zac (Fri, 26 May 2017 17:58:41 GMT):
Well, nothing is stopping you from doing that on Sawtooth

pd93 (Fri, 26 May 2017 17:58:46 GMT):
@jsmitchell Summed it up better and faster than I could :P

jsmitchell (Fri, 26 May 2017 17:58:57 GMT):
right, we don't find that security model very compelling

zac (Fri, 26 May 2017 17:59:51 GMT):
Yeah, nothing built in to do it

zac (Fri, 26 May 2017 18:00:31 GMT):
But there is no reason you could set up two blockchains to do that manually either

zac (Fri, 26 May 2017 18:00:31 GMT):
But there is no reason you couldn't set up two blockchains to do that manually either

zac (Fri, 26 May 2017 18:00:31 GMT):
But there is no reason you couldn't manually set up two blockchains to do that either

pd93 (Fri, 26 May 2017 18:07:32 GMT):
@jsmitchell So would you say that Sawtooth is more secure because txs are opaque to the validator?

pschwarz (Fri, 26 May 2017 18:22:36 GMT):
The security aspect is more gained from having tight control on how the transactions are actually executed. Fabric, ethereum, etc allow for execution using Turing-complete languages.

pschwarz (Fri, 26 May 2017 18:23:19 GMT):
The opacity is more about Sawtooth making very few assumptions or demands on your business logic

zac (Fri, 26 May 2017 18:23:44 GMT):
Yeah, if the payload is opaque, then the payload can be anything

pschwarz (Fri, 26 May 2017 18:24:18 GMT):
Like all blockchains, you need to produce deterministic results, but Sawtooth doesn't care what format the data is in, how you store it, or how you transmit it to the blockchain via a transactions

pschwarz (Fri, 26 May 2017 18:24:18 GMT):
Like all blockchains, you need to produce deterministic results, but Sawtooth doesn't care what format the data is in, how you store it, or how you transmit it to the blockchain within a transactions

pd93 (Fri, 26 May 2017 18:44:37 GMT):
Ok cool. That's all really helpful information. Thanks :) I'll be sure to give this a go soon

amundson (Fri, 26 May 2017 18:46:04 GMT):
payloads are opaque, but not secret. you could encrypt them or do other interesting patterns, but the opaque-ness if about flexibility

amundson (Fri, 26 May 2017 18:46:04 GMT):
payloads are opaque, but not secret. you could encrypt them or do other interesting patterns, but the opaque-ness is about flexibility

chsados (Sat, 27 May 2017 04:02:31 GMT):
Has joined the channel.

chsados (Sat, 27 May 2017 04:04:00 GMT):
is there anything I can do as a home user with a raspberry pi and an old i7 desktop with 16GB ddr3?

chsados (Sat, 27 May 2017 04:04:11 GMT):
or where can I find some fun projects with real world uses?

mpk (Sat, 27 May 2017 21:47:36 GMT):
@jsmitchell , I was able to decode the data without any problems. Apparently, its is not encrypted with the key. That means anyone who has access to the api urls can read the block chain data. Am I right? If so, is this secure?

jsmitchell (Sat, 27 May 2017 22:09:19 GMT):
That's how distributed ledgers work. They are distributed. If you want the data encrypted, encrypt it.

ccandiaw (Mon, 29 May 2017 21:47:01 GMT):
Has joined the channel.

FlyingTiger (Tue, 30 May 2017 06:42:53 GMT):
I looked into the validator registry transaction family specification, had one question, how could other validators verify whether a validator is allowed to join the validator network? :)

Ainsight (Tue, 30 May 2017 11:03:51 GMT):
Has joined the channel.

jsmitchell (Tue, 30 May 2017 12:58:41 GMT):
@FlyingTiger the checks are done in the consensus code. https://github.com/hyperledger/sawtooth-core/blob/master/consensus/poet/core/sawtooth_poet/poet_consensus/poet_block_verifier.py

Dan (Tue, 30 May 2017 14:13:48 GMT):
@FlyingTiger I don't think anyone has yet recreated the white list validator registry you made last year.

toddojala (Tue, 30 May 2017 14:55:24 GMT):
@chsados I think you can start with our Introductory documentation materials and learn about how the code works with your i7, and maybe even the raspberry pi. Please check out: http://intelledger.github.io/0.8/app_developers_guide.html

toddojala (Tue, 30 May 2017 14:56:00 GMT):
@chsados Start by reading the Introduction, Architecture and Application Developer's Guide sections of the docs, and try out the code.

pd93 (Tue, 30 May 2017 15:19:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=8woH9ZCnHdm3v4TqY) @pschwarz Just to pick up on Friday's conversation.. Do you think you could give me an example of these "tight controls"? I'm trying to write up a very brief overview of the difference

pd93 (Tue, 30 May 2017 15:19:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=8woH9ZCnHdm3v4TqY) @pschwarz Just to pick up on Friday's conversation.. Do you think you could give me an example of these "tight controls"? I'm trying to write up a very brief overview of the differences between frameworks

pschwarz (Tue, 30 May 2017 15:22:01 GMT):
If you look at one of the examples, Intkey, the transactions are only allowed to change a state value in very specific ways: take a named integer and do one of three operations on it: set, increment or decrement. The nodes in the network cannot perform any other computations, nor will they be asked to do so

pschwarz (Tue, 30 May 2017 15:22:42 GMT):
(That being in the case where only the Intkey transaction processor is running on a node)

pschwarz (Tue, 30 May 2017 15:23:48 GMT):
A app developer can, of course, expand what gets executed on each node (Intkey is a trivial example), but still has control over how much and what operations can happen

pd93 (Tue, 30 May 2017 15:26:05 GMT):
Ok cool :) That's really useful information. So to clarify.. there is no turing complete 'smart contracts'/'chaincode' or anything like that

pschwarz (Tue, 30 May 2017 15:27:02 GMT):
That is up to the app developer :) . We do have some on-going work for an EVM transaction processor implementation, though it's still pretty new yet

pschwarz (Tue, 30 May 2017 15:27:27 GMT):
You can find it at https://github.com/hyperledger/sawtooth-core/tree/burrow-evm

pschwarz (Tue, 30 May 2017 15:27:27 GMT):
You can find on this branch https://github.com/hyperledger/sawtooth-core/tree/burrow-evm

pd93 (Tue, 30 May 2017 15:28:58 GMT):
Ok thanks again :) I'll give it a go

Dan (Tue, 30 May 2017 15:40:43 GMT):
@pd93 the broader idea is that if you were to have a consortium of companies using this blockchain, they would define what kind of transactions were desired. That could be a decision to support EVM style contracts or it could be a decision to just use constrained semantics like intkey. Sawtooth doesn't presume a default transaction style.

JonathanLevi (Tue, 30 May 2017 15:44:18 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=tqn6s99HoXBmHy8Ky) I am actually thinking (trying to figure out) what's the best way to go about this. Of course this is subject to the application needs, but,

JonathanLevi (Tue, 30 May 2017 15:44:49 GMT):
More generally, it can be powerful to have some validations done at the transaction processor level... while others at the "consensus" level.

Fanarito (Tue, 30 May 2017 16:08:14 GMT):
Has joined the channel.

mpk (Tue, 30 May 2017 16:30:27 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=37MwBHptyYK3ApZZ3) @jsmitchell , So, Sawtooth Lake has no concept of private channels like the Fabric?

amundson (Tue, 30 May 2017 17:10:35 GMT):
@mpk You can do out-of-band transaction processing with Sawtooth, which is probably equivalent but has better architectural separation. The primary Sawtooth network would perform a GSL-like role tracking state merkle hashes of the "sub-networks". If using Sawtooth to manage consensus of those "sub-networks", then you run it like any other Sawtooth network with the exception that merkle hashes are propogated up to the primary network. If not using Sawtooth to manage consensus (because you are doing 2-party communication where BFT and other consensus mechanisms don't apply), then you would need to implement the side-band communication.

amundson (Tue, 30 May 2017 17:13:28 GMT):
Fabric provides more management infrastructure for doing this, but it is not clear that it does so while being compatible with a wide range of consensus mechanisms.

amundson (Tue, 30 May 2017 17:39:12 GMT):
we need to standardize/finalize our CLI names. here is a first cut.

amundson (Tue, 30 May 2017 17:39:25 GMT):
```Clients: sawtooth poet intkey intkey-jvm-sc xo noop Validator: st-validator (was: validator) st-rest-api (was: rest_api) Transaction Processors: Method 1 -------- st-tp-config st-tp-intkey-go st-tp-intkey-java st-tp-intkey-javascript st-tp-intkey-python st-tp-intkey-jvm-sc st-tp-xo-go st-tp-xo-javascript st-tp-xo-python st-tp-noop-go st-tp-supplychain-python st-tp-poet-validator-registry Method 2 -------- st-tp-config intkey-tp-go intkey-tp-java intkey-tp-javascript intkey-tp-python intkey-jvm-sc-tp xo-tp-go xo-tp-javascript xo-tp-python noop-tp-go supplychain-tp-python poet-tp-validator-registry ```

amundson (Tue, 30 May 2017 17:39:56 GMT):
thoughts?

adamludvik (Tue, 30 May 2017 17:47:09 GMT):
I like method 2 better, because going from `intkey` to `intkey-tp-go` seems like it would be easier to remember.

amundson (Tue, 30 May 2017 17:48:08 GMT):
#2 scales better too, in that it makes more sense for non-core stuff to have it's own non-st prefix

adamludvik (Tue, 30 May 2017 17:50:05 GMT):
Also tab completion would be useful with that method.

jsmitchell (Tue, 30 May 2017 17:51:21 GMT):
method 2 looks good to me. I don't love st- as a prefix for the server processes

amundson (Tue, 30 May 2017 17:51:43 GMT):
I could see keeping "validator" but not "rest-api"

adamludvik (Tue, 30 May 2017 17:52:03 GMT):
Why not just `sawtooth-validator` and `sawtooth-rest-api`?

jsmitchell (Tue, 30 May 2017 17:52:25 GMT):
yep

adamludvik (Tue, 30 May 2017 17:52:28 GMT):
`s2th`?

adamludvik (Tue, 30 May 2017 17:53:12 GMT):
^ That was on the whiteboard at my interview

jsmitchell (Tue, 30 May 2017 17:53:26 GMT):
i always wonder if ordering on rocketchat is deterministic

jsmitchell (Tue, 30 May 2017 17:53:33 GMT):
and i'm saying yep to something horrible

jsmitchell (Tue, 30 May 2017 17:54:00 GMT):
2-saw 2-tooth

amundson (Tue, 30 May 2017 17:54:41 GMT):
the interaction between 'sawtooth' and 'sawtooth-*' seems awkward to me

amundson (Tue, 30 May 2017 17:55:44 GMT):
```Clients: sawtooth poet intkey intkey-jvm-sc xo noop Validator: sawtooth-validator sawtooth-rest-api Transaction Processors: sawtooth-tp-config intkey-tp-go intkey-tp-java intkey-tp-javascript intkey-tp-python intkey-jvm-sc-tp xo-tp-go xo-tp-javascript xo-tp-python noop-tp-go supplychain-tp-python poet-tp-validator-registry ```

jsmitchell (Tue, 30 May 2017 17:56:22 GMT):
that last one is odd

amundson (Tue, 30 May 2017 17:56:48 GMT):
-tp-<...>

jsmitchell (Tue, 30 May 2017 17:57:41 GMT):
sawtooth-config-tp and poet-validator-registry-tp make more sense to me

amundson (Tue, 30 May 2017 17:58:31 GMT):
but not xo-go-tp?

jsmitchell (Tue, 30 May 2017 17:58:51 GMT):
no, because the 'go' thing is to differentiate the language it's in

jsmitchell (Tue, 30 May 2017 17:59:04 GMT):
it's an xo-tp

jsmitchell (Tue, 30 May 2017 17:59:09 GMT):
that is implemented in go

jsmitchell (Tue, 30 May 2017 17:59:34 GMT):
we only have the lang in the name because there are multiple implementations for example purposes

amundson (Tue, 30 May 2017 18:00:21 GMT):
-tp- or -stp-?

amundson (Tue, 30 May 2017 18:02:28 GMT):
ok, under that logic supplychain shouldn't have the language qualifier

jsmitchell (Tue, 30 May 2017 18:02:41 GMT):
yep

amundson (Tue, 30 May 2017 18:02:41 GMT):
```Clients: sawtooth poet intkey intkey-jvm-sc xo noop Validator: sawtooth-validator sawtooth-rest-api Transaction Processors: sawtooth-config-tp intkey-tp-go intkey-tp-java intkey-tp-javascript intkey-tp-python intkey-jvm-sc-tp xo-tp-go xo-tp-javascript xo-tp-python noop-tp-go supplychain-tp poet-validator-registry-tp ```

jsmitchell (Tue, 30 May 2017 18:02:53 GMT):
nor should noop

amundson (Tue, 30 May 2017 18:03:24 GMT):
presumably noop will be implemented in other languages for perf testing?

amundson (Tue, 30 May 2017 18:03:34 GMT):
(of SDKs)

amundson (Tue, 30 May 2017 18:04:21 GMT):
@agunde is jvm-sc-tp really intkey-specific?

pschwarz (Tue, 30 May 2017 18:04:37 GMT):
This looks very good now

agunde (Tue, 30 May 2017 18:08:31 GMT):
@amundson No, it could be changed to jvm-sc-tp (also need to change the name of the directory it is in, currently sdk/examples/intkey_jvm_sc, should be changed to just jvm_sc.)

amundson (Tue, 30 May 2017 18:08:36 GMT):
@pschwarz - what's the new name for the config txn family?

amundson (Tue, 30 May 2017 18:09:32 GMT):
@agunde how about 'jvmsc' and 'jvmsc-tp'?

agunde (Tue, 30 May 2017 18:11:06 GMT):
That would be fine.

pschwarz (Tue, 30 May 2017 18:15:24 GMT):
Outside of that brainstorming we did, I hadn't made a decision yet

pschwarz (Tue, 30 May 2017 18:16:03 GMT):
top contender was "setworks"

pschwarz (Tue, 30 May 2017 18:16:03 GMT):
top contender was "sawtooth-setworks"

jsmitchell (Tue, 30 May 2017 18:16:42 GMT):
what no

pschwarz (Tue, 30 May 2017 18:16:47 GMT):
I also liked "sawtooth-crosstie"

pschwarz (Tue, 30 May 2017 18:16:55 GMT):
(sawmill terminology)

jsmitchell (Tue, 30 May 2017 18:16:58 GMT):
sawtooth-settings

agunde (Tue, 30 May 2017 18:17:04 GMT):
@amundson the cli in sdk/examples/intkey_jvm_sc/sawtooth_intkey is however intkey specific

pschwarz (Tue, 30 May 2017 18:17:20 GMT):
Boring :)

pschwarz (Tue, 30 May 2017 18:17:32 GMT):
But, also pro

amundson (Tue, 30 May 2017 18:39:54 GMT):
setworks is pretty good

amundson (Tue, 30 May 2017 18:40:23 GMT):
'setworks' and 'setworks-tp' (separation of setworks from sawtooth command may make sense?)

jsmitchell (Tue, 30 May 2017 18:40:49 GMT):
it

jsmitchell (Tue, 30 May 2017 18:40:49 GMT):
it's one letter away from networks

jsmitchell (Tue, 30 May 2017 18:41:06 GMT):
but has nothing to do with networks

amundson (Tue, 30 May 2017 18:41:40 GMT):
```Clients: sawtooth setworks poet intkey jvmsc xo noop Validator: sawtooth-validator sawtooth-rest-api Transaction Processors: setworks-tp intkey-tp-go intkey-tp-java intkey-tp-javascript intkey-tp-python jvmsc-tp xo-tp-go xo-tp-javascript xo-tp-python noop-tp-go supplychain-tp poet-validator-registry-tp ```

amundson (Tue, 30 May 2017 18:46:55 GMT):
also need to consider config file names

amundson (Tue, 30 May 2017 18:47:33 GMT):
``` /etc/sawtooth/ path.toml validator.toml rest-api.toml setworks.toml intkey.toml xo.toml noop.toml supplychain.toml poet.toml ```

mpk (Tue, 30 May 2017 18:48:16 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=8mhvnDSHm5iTNdMdm) @amundson Thank you. It makes sense.

agunde (Tue, 30 May 2017 18:49:49 GMT):
@amundson There are also log confing files, log_config.toml, rest_api_log_config.toml, and the tp log config files.

agunde (Tue, 30 May 2017 18:49:49 GMT):
@amundson There are also log config files, log_config.toml, rest_api_log_config.toml, and the tp log config files.

amundson (Tue, 30 May 2017 18:51:40 GMT):
log config is interesting, in that for the multiple language implementations they wouldn't take the same logging configuration

amundson (Tue, 30 May 2017 18:52:10 GMT):
so xo_log_config.toml - would be python-only

agunde (Tue, 30 May 2017 18:52:21 GMT):
Correct

mpk (Tue, 30 May 2017 18:54:17 GMT):
Thanks everyone for your suggestions. I have a functional demo, Node.JS website, sending transactions (using our own, built using node.js transaction processor) inserting, reading and updating text document on block chain block chain.

amundson (Tue, 30 May 2017 18:55:12 GMT):
@agunde - one options for logging would be to embed it into a [logging] table

amundson (Tue, 30 May 2017 18:55:29 GMT):
which would look something like this inside validator.toml (for example)

amundson (Tue, 30 May 2017 18:57:08 GMT):
``` [logging] version = 1 disable_existing_loggers = false [logging.formatters.simple] format = "[%(asctime)s.%(msecs)03d [%(threadName)s] %(module)s %(levelname)s] %(message)s" datefmt = "%H:%M:%S" [logging.handlers.debug] level = "DEBUG" formatter = "simple" class = "logging.FileHandler" filename = "example-debug.log" [logging.handlers.interconnect] level = "DEBUG" formatter = "simple" class = "logging.handlers.RotatingFileHandler" filename = "example-interconnect.log" maxBytes = 5000000 backupCount=20 [logging.handlers.error] level = "ERROR" formatter = "simple" class = "logging.FileHandler" filename = "example-error.log" [logging.loggers."sawtooth_validator.networking.interconnect"] level = "DEBUG" propagate = true handlers = [ "interconnect"] [logging.root] level = "DEBUG" handlers = [ "error", "debug"] ```

amundson (Tue, 30 May 2017 18:57:12 GMT):
thoughts on that?

agunde (Tue, 30 May 2017 18:58:02 GMT):
I think that would be a good way to reduce the number of config files we have.

amundson (Tue, 30 May 2017 18:59:41 GMT):
the only thing that wouldn't really let you do is share a single logging configuration file across components

amundson (Tue, 30 May 2017 19:00:54 GMT):
which might not be a big deal since you can't point them to the same files anyway

amundson (Tue, 30 May 2017 19:02:49 GMT):
if you wanted to configure them all to point to syslog, you would have to edit 2 files plus 1 per TP, which would be a minimum of 4

amundson (Tue, 30 May 2017 19:27:48 GMT):
also attempting to standardize/simplify our CLI and config options. here is what we came up with so far.

amundson (Tue, 30 May 2017 19:28:01 GMT):
```sawtooth-validator Usage ------------------------ All equivalent: NEW: sawtooth-validator --bind=network:tcp://127.0.0.1:8800/ --bind=component:tcp://127.0.0.1:40000/ --endpoint=tcp://1.2.3.4:8800/ --peering=dynamic --seed=tcp://2.3.4.5:8800/ --peer=tcp://2.3.4.5:8800/ NEW: sawtooth-validator -B network:tcp://127.0.0.1:8800/ -B component:tcp://127.0.0.1:40000/ -E tcp://1.2.3.4:8800/ -P=dynamic -s tcp://2.3.4.5:8800/ -p tcp://2.3.4.5:8800/ NEW: sawtooth-validator -B network:127.0.0.1:8800 -B component:127.0.0.1:40000 -E 1.2.3.4:8800 -P dynamic -s 2.3.4.5:8800 -p 2.3.4.5:8800 OLD: validator --network-endpoint=tcp://127.0.0.1:8800/ --component-endpoint=tcp://127.0.0.1:8800/ --public-uri=tcp://1.2.3.4:8800/ --peering=dynamic --join=tcp://2.3.4.5:8800/ --peers=tcp://2.3.4.5:8800/ FUTURE: sawtooth-validator -B network,client:127.0.0.1:8800 -B tp,client:127.0.0.1:40000 -E 1.2.3.4:8800 validator.toml -------------- bind = [ "network:tcp://127.0.0.1:8800/", "component:tcp://127.0.0.1:8800/" ] endpoint = "tcp://1.2.3.4:8800/" peering = "dynamic" peers = [ "tcp://2.3.4.5:8800/" ] seeds = [ "tcp://2.3.4.5:8800/" ] sawtooht-rest-api Usage ----------------------- All equivalent: NEW: sawtooth-rest-api --bind=localhost:8080 --connect=tcp://127.0.0.1:40000/ --timeout=300 NEW: sawtooth-rest-api -B localhost:8080 -C tcp://127.0.0.1:40000/ -t 300 NEW: sawtooth-rest-api -B localhost:8080 -C 127.0.0.1:40000 -t 5m OLD: rest_api --host=localhost --port=8080 --timeout=300 rest-api.toml ----------------- connect = "tcp://127.0.0.1:40000" bind = [ "localhost:8800" ] timeout = 300 ```

amundson (Tue, 30 May 2017 19:28:01 GMT):
```sawtooth-validator Usage ------------------------ All equivalent: NEW: sawtooth-validator --bind=network:tcp://127.0.0.1:8800/ --bind=component:tcp://127.0.0.1:40000/ --endpoint=tcp://1.2.3.4:8800/ --peering=dynamic --seed=tcp://2.3.4.5:8800/ --peer=tcp://2.3.4.5:8800/ NEW: sawtooth-validator -B network:tcp://127.0.0.1:8800/ -B component:tcp://127.0.0.1:40000/ -E tcp://1.2.3.4:8800/ -P=dynamic -s tcp://2.3.4.5:8800/ -p tcp://2.3.4.5:8800/ NEW: sawtooth-validator -B network:127.0.0.1:8800 -B component:127.0.0.1:40000 -E 1.2.3.4:8800 -P dynamic -s 2.3.4.5:8800 -p 2.3.4.5:8800 OLD: validator --network-endpoint=tcp://127.0.0.1:8800/ --component-endpoint=tcp://127.0.0.1:8800/ --public-uri=tcp://1.2.3.4:8800/ --peering=dynamic --join=tcp://2.3.4.5:8800/ --peers=tcp://2.3.4.5:8800/ FUTURE: sawtooth-validator -B network,client:127.0.0.1:8800 -B tp,client:127.0.0.1:40000 -E 1.2.3.4:8800 validator.toml -------------- bind = [ "network:tcp://127.0.0.1:8800/", "component:tcp://127.0.0.1:40000/" ] endpoint = "tcp://1.2.3.4:8800/" peering = "dynamic" peers = [ "tcp://2.3.4.5:8800/" ] seeds = [ "tcp://2.3.4.5:8800/" ] sawtooht-rest-api Usage ----------------------- All equivalent: NEW: sawtooth-rest-api --bind=localhost:8080 --connect=tcp://127.0.0.1:40000/ --timeout=300 NEW: sawtooth-rest-api -B localhost:8080 -C tcp://127.0.0.1:40000/ -t 300 NEW: sawtooth-rest-api -B localhost:8080 -C 127.0.0.1:40000 -t 5m OLD: rest_api --host=localhost --port=8080 --timeout=300 rest-api.toml ----------------- connect = "tcp://127.0.0.1:40000" bind = [ "localhost:8800" ] timeout = 300 ```

gauravbhatt (Tue, 30 May 2017 19:54:45 GMT):
Has joined the channel.

Dan (Tue, 30 May 2017 22:04:42 GMT):
@amundson looks like you got some good discussion on these topics. I've kind of caught up, but would still be good to summarize where you are at on these to the mail list.

Dan (Tue, 30 May 2017 22:05:18 GMT):
I didn't track setworks - Was that the config txn family?

FlyingTiger (Wed, 31 May 2017 02:48:19 GMT):
@jsmitchell @Dan Thanks, I got it.

ajoshioptonlinenet (Wed, 31 May 2017 12:42:26 GMT):
Has joined the channel.

amundson (Wed, 31 May 2017 14:20:54 GMT):
@Dan good idea

amundson (Wed, 31 May 2017 14:21:30 GMT):
@Dan - yes, setworks is the proposed new name for the config family

jsmitchell (Wed, 31 May 2017 14:21:45 GMT):
:thumbdown_tone1:

Fanarito (Wed, 31 May 2017 14:30:51 GMT):
I am trying to setup and test sawtooth and have set it up on a virtualmachine. Then I run `sudo sawtooth cluster start --count 2 -m subprocess -P tp_intkey_python` to setup a test network. Then I run `intkey create_batch` and finally `intkey load -f batches.intkey`. The intkey load command completes succesfully on that terminal with the output `batches: 1001 batch/sec: 350.6686556134236` however on the cluster terminal it just outputs that the serverthread is sending and receiving some data repeatedly. This continues until the machine runs out of memory. But if I press Ctrl-C it tries to close all the threads running, but can't close the thread named "Thread" The virtual machine has 4gb memory. any ideas on what might be going wrong?

Fanarito (Wed, 31 May 2017 14:30:51 GMT):
I am trying to setup and test sawtooth and have set it up on a virtualmachine. I run `sudo sawtooth cluster start --count 2 -m subprocess -P tp_intkey_python` to setup a test network. Then I run `intkey create_batch` and finally `intkey load -f batches.intkey`. The intkey load command completes succesfully on that terminal with the output `batches: 1001 batch/sec: 350.6686556134236` however on the cluster terminal it just outputs that the serverthread is sending and receiving some data repeatedly. This continues until the machine runs out of memory. But if I press Ctrl-C it tries to close all the threads running, but can't close the thread named "Thread" The virtual machine has 4gb memory. any ideas on what might be going wrong?

Fanarito (Wed, 31 May 2017 14:36:47 GMT):
it's still trying to close the thread gracefully

Dan (Wed, 31 May 2017 14:43:41 GMT):
I second James's thumbs down on setworks. ;) It's not obvious what that means. Config seems pretty clear.

Fanarito (Wed, 31 May 2017 14:50:14 GMT):
huh, I doubled the ram on the virtual machine and the problem stopped.

Fanarito (Wed, 31 May 2017 14:51:16 GMT):
and it did not even get close to the amount of ram it was using before.

Fanarito (Wed, 31 May 2017 14:51:16 GMT):
and it did not even get close to the amount of ram it was using before, makes no sense

jsmitchell (Wed, 31 May 2017 14:52:17 GMT):
@Fanarito weird

jsmitchell (Wed, 31 May 2017 14:52:38 GMT):
I have seen oddness with memory in the vagrant environment. The lack of a swap configuration is unforgiving.

mwagner (Wed, 31 May 2017 17:21:02 GMT):
hi, we have an intern stating tomorrow on project #6 https://wiki.hyperledger.org/internship/project_ideas Would like Sawtooth to be his first assignment assuming there are no objections. . Who is the build maintainer ?

jsmitchell (Wed, 31 May 2017 18:36:38 GMT):
@mwagner excellent! they can connect with @rbuysse and @amundson

amundson (Wed, 31 May 2017 19:00:20 GMT):
@Dan - config is confusing because of file configuration, so the fallback recommendation would be 'settings'. we would then have 'settings' usually mean on-chain and 'configuration' file-based off-chain.

mwagner (Wed, 31 May 2017 19:03:43 GMT):
cool, thanks!

Dan (Wed, 31 May 2017 20:43:16 GMT):
@amundson I see the issue. Ledger Config/Settings would make sense to us but probably not obvious to a new user that doesn't equate Ledger to the full distributed system. Maybe chain_settings?

amundson (Wed, 31 May 2017 21:14:23 GMT):
@Dan not sure how we would shrink that down to a prefix and CLI. what I liked about "setworks" is that it isn't re-using existing terminology and so it would be possible to create more of an identity for that transaction family and capability than we can do with 'sawtooth settings'. something else unique would work too, it's hard to come up with good ideas. ('janus' is clever, but might not count as good)

Dan (Wed, 31 May 2017 21:27:03 GMT):
Yeah name the baby is a deceptively time consuming game. `setchain` ?

jsmitchell (Wed, 31 May 2017 21:27:58 GMT):
Janus?

jsmitchell (Wed, 31 May 2017 21:28:02 GMT):
the two faced god?

jsmitchell (Wed, 31 May 2017 21:28:24 GMT):
If you are going to name it after a god, pick the god of rules (settings).

jsmitchell (Wed, 31 May 2017 21:28:26 GMT):
Themis

jsmitchell (Wed, 31 May 2017 21:29:17 GMT):
https://en.wikipedia.org/wiki/Themis

amundson (Wed, 31 May 2017 21:36:14 GMT):
I'm fine with themis but think setworks is way better

jsmitchell (Wed, 31 May 2017 21:36:35 GMT):
themis is bad

amundson (Wed, 31 May 2017 21:36:44 GMT):
so is janus

amundson (Wed, 31 May 2017 21:36:50 GMT):
but I'm fine with that too

jsmitchell (Wed, 31 May 2017 21:36:53 GMT):
yeah, but at least one makes sense

amundson (Wed, 31 May 2017 21:37:26 GMT):
janus is the god of transition/change, makes perfect sense

jsmitchell (Wed, 31 May 2017 21:37:49 GMT):
unfortunately, they will all confuse people

amundson (Wed, 31 May 2017 21:38:33 GMT):
sounds like an anarchist reason not to name things

jsmitchell (Wed, 31 May 2017 21:38:44 GMT):
did you mean antichrist?

amundson (Wed, 31 May 2017 21:39:04 GMT):
no one will ever know

Dan (Wed, 31 May 2017 21:39:21 GMT):
let's just call it anarchrist

amundson (Wed, 31 May 2017 21:39:46 GMT):
sounds fine, a bit long, but ok

Dan (Wed, 31 May 2017 21:46:47 GMT):
`chainconf`

jsmitchell (Wed, 31 May 2017 21:47:16 GMT):
`covfefe`

amundson (Wed, 31 May 2017 22:16:51 GMT):
crankset

mwagner (Wed, 31 May 2017 23:54:51 GMT):
hey, I am working to get Red Hat "entitlements" for the CI systems. Who is a good person to talk to about the urrent and planned config ?

jsmitchell (Thu, 01 Jun 2017 00:39:46 GMT):
@rbuysse

jsmitchell (Thu, 01 Jun 2017 00:40:08 GMT):
He is the guy with his head in the clouds

jsmitchell (Thu, 01 Jun 2017 00:44:24 GMT):
He will connect up with you in the AM @mwagner

FlyingTiger (Thu, 01 Jun 2017 12:27:20 GMT):
Hi guys, I can't find any verification that the payload field of a transaction matches the payload_sha512 field of the header. So I opened a PR https://github.com/hyperledger/sawtooth-core/pull/548

FlyingTiger (Thu, 01 Jun 2017 12:37:00 GMT):
Please take a look

FlyingTiger (Thu, 01 Jun 2017 12:37:09 GMT):
Thanks :)

Dan (Thu, 01 Jun 2017 13:43:05 GMT):
Like @cianx said, good catch @FlyingTiger !

SahilKapoor (Thu, 01 Jun 2017 17:46:39 GMT):
How to create sidedb for private data?

Dan (Thu, 01 Jun 2017 18:11:20 GMT):
@SahilKapoor I believe @haridhakshini is working on that. I don't have the link to his jira item handy.

agunde (Thu, 01 Jun 2017 19:50:51 GMT):
The command line options for ./bin/validator have been updated to be the following

agunde (Thu, 01 Jun 2017 19:51:05 GMT):
usage: validator [-h] [--config-dir CONFIG_DIR] [--network-endpoint NETWORK_ENDPOINT] [--component-endpoint COMPONENT_ENDPOINT] [-P {static,dynamic}] [-E ENDPOINT] [-s SEEDS] [-p PEERS] [-v] optional arguments: -h, --help show this help message and exit --config-dir CONFIG_DIR Configuration directory --network-endpoint NETWORK_ENDPOINT Network endpoint URL --component-endpoint COMPONENT_ENDPOINT Validator component service endpoint -P {static,dynamic}, --peering {static,dynamic} The type of peering approach the validator should take. Choices are 'static' which only attempts to peer with candidates provided with the --peers option, and 'dynamic' which will do topology buildouts. If 'dynamic' is provided, any static peers will be processed first, prior to the topology buildout starting -E ENDPOINT, --endpoint ENDPOINT Advertised network endpoint URL -s SEEDS, --seeds SEEDS uri(s) to connect to in order to initially connect to the validator network, in the format tcp://hostname:port. Multiple --seeds arguments can be provided, and a single --seeds argument will accept a comma separated list of tcp://hostname:port,tcp://hostname:port parameters -p PEERS, --peers PEERS A list of peers to attempt to connect to in the format tcp://hostname:port. Multiple --peers arguments can be provided, and a single --peers argument will accept a comma separated list of tcp://hostname:port,tcp://hostname:port parameters -v, --verbose Increase output sent to stderr

agunde (Thu, 01 Jun 2017 19:51:05 GMT):
usage: validator [-h] [--config-dir CONFIG_DIR] [-B BIND] [-P {static,dynamic}] [-E ENDPOINT] [-s SEEDS] [-p PEERS] [-v] optional arguments: -h, --help show this help message and exit --config-dir CONFIG_DIR Configuration directory -B BIND, --bind BIND Set the endpoint url for the network and the validator component service endpoints. Multiple --bind arguments should be provided in the format network:endpoint and component:endpoint. -P {static,dynamic}, --peering {static,dynamic} The type of peering approach the validator should take. Choices are 'static' which only attempts to peer with candidates provided with the --peers option, and 'dynamic' which will do topology buildouts. If 'dynamic' is provided, any static peers will be processed first, prior to the topology buildout starting -E ENDPOINT, --endpoint ENDPOINT Advertised network endpoint URL -s SEEDS, --seeds SEEDS uri(s) to connect to in order to initially connect to the validator network, in the format tcp://hostname:port. Multiple --seeds arguments can be provided, and a single --seeds argument will accept a comma separated list of tcp://hostname:port,tcp://hostname:port parameters -p PEERS, --peers PEERS A list of peers to attempt to connect to in the format tcp://hostname:port. Multiple --peers arguments can be provided, and a single --peers argument will accept a comma separated list of tcp://hostname:port,tcp://hostname:port parameters -v, --verbose Increase output sent to stderr

agunde (Thu, 01 Jun 2017 19:52:19 GMT):
There is also now an option to use a config file when starting up a validator and an example config file can be found here https://github.com/hyperledger/sawtooth-core/blob/master/validator/packaging/validator.toml.example

jsmitchell (Thu, 01 Jun 2017 20:00:11 GMT):
@agunde is that right? still refers to network-endpoint and component-endpoint

agunde (Thu, 01 Jun 2017 20:02:21 GMT):
There we go, now it is correct.

jsmitchell (Thu, 01 Jun 2017 20:02:54 GMT):
it was a test to see if people were paying attention

agunde (Thu, 01 Jun 2017 20:03:19 GMT):
exactly ;)

IrgendwerAUT (Thu, 01 Jun 2017 21:42:07 GMT):
Has joined the channel.

Dan (Thu, 01 Jun 2017 22:36:01 GMT):
cool. could you send that to the mail list? things tend to fly by on chat and I don't want people to miss if they aren't on chat today

Dan (Fri, 02 Jun 2017 14:47:18 GMT):
I don't see a note to the stl mail list for either this validator CLI change or for the discussion @amundson led on clients etc. probably you guys are just busy which is fine. but thought I'd mention in case I'm not getting that mail list right.

amundson (Fri, 02 Jun 2017 14:48:17 GMT):
Yep, should go out today

PriteshPatel (Fri, 02 Jun 2017 14:55:12 GMT):
Hi All. Learning Sawtooth. Been through the Docs and browsing around the code. Trying to learn how to create a new Transaction Families and Processors. Any guidance on where I should start looking?

toddojala (Fri, 02 Jun 2017 15:29:14 GMT):
@PriteshPatel Check out:

toddojala (Fri, 02 Jun 2017 15:29:41 GMT):
@PriteshPatel http://intelledger.github.io/0.8/app_developers_guide.html

toddojala (Fri, 02 Jun 2017 15:30:15 GMT):
We have tutorials right now for both Python and JavaScript, with more languages soon to come.

jsmitchell (Fri, 02 Jun 2017 15:57:12 GMT):
master is currently not passing tests due to a parallel merge incompatibility

bob346 (Fri, 02 Jun 2017 16:00:21 GMT):
Has joined the channel.

kelly_ (Fri, 02 Jun 2017 16:19:00 GMT):
hey everyone, I want to introduce you to @mahesh_rao

kelly_ (Fri, 02 Jun 2017 16:19:15 GMT):
Mahesh is based in Germany and is interested in contributing to sawtooth

jsmitchell (Fri, 02 Jun 2017 16:19:27 GMT):
hi @mahesh_rao!

mahesh_rao (Fri, 02 Jun 2017 16:19:39 GMT):
Hello everyone, hi @jsmitchell

kelly_ (Fri, 02 Jun 2017 16:19:40 GMT):
@mfford could you send an invite to @mahesh_rao for any open upcoming tech sessions or sprint planning sessions?

mahesh_rao (Fri, 02 Jun 2017 16:19:55 GMT):
thanks @kelly_ for the support

kelly_ (Fri, 02 Jun 2017 16:20:42 GMT):

Message Attachments

kelly_ (Fri, 02 Jun 2017 16:20:46 GMT):
@mahesh_rao ^ there is a high level architecture overview. there is more information in the docs here: http://intelledger.github.io/

kelly_ (Fri, 02 Jun 2017 16:21:24 GMT):
@jsmitchell if you have any ideas of easy ways to start contributing, feel free to send an idea or two to @mahesh_rao

jsmitchell (Fri, 02 Jun 2017 16:22:22 GMT):
@mahesh_rao is there a particular area of the system that you are interested in exploring?

mahesh_rao (Fri, 02 Jun 2017 16:24:49 GMT):
I have a team of 2, who did explore the Sawtooth blockchain few days ago.. Hopefully My team can work on all technical aspects :) to start with

mahesh_rao (Fri, 02 Jun 2017 16:25:07 GMT):
any*

PriteshPatel (Fri, 02 Jun 2017 16:39:34 GMT):
@toddojala Thank you!

toddojala (Fri, 02 Jun 2017 16:39:55 GMT):
@PriteshPatel very welcome

jsmitchell (Fri, 02 Jun 2017 17:44:22 GMT):
master is passing tests again

jriachi (Fri, 02 Jun 2017 18:40:52 GMT):
Has joined the channel.

Dan (Fri, 02 Jun 2017 18:44:32 GMT):
hi @mahesh_rao you and your team can take a look at Jira. Any story that someone isn't actively working on is fair game. You can also come up with things. For example, if the docs were inaccurate when you were experimenting then you might submit corrections as PRs to docs/ or if there's a core feature that you would like to see you can add a jira story and take ownership of it. Another good area is if there's a particular business domain you are coming from, creating an example transaction family for that area is great. Jira: https://jira.hyperledger.org/secure/RapidBoard.jspa?rapidView=3&projectKey=STL&view=planning.nodetail&epics=visible

tkuhrt (Fri, 02 Jun 2017 19:01:46 GMT):
FYI: I created a shared calendar for all Hyperledger community meetings. The Sawtooth Tech Forum and Sprint Planning are on the calendar. You can find it here: http://bit.ly/HyperledgerCal. Use the &ctz=_TZ_ option to specify your time zone. See the TZ column for list of options: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List

tkuhrt (Fri, 02 Jun 2017 19:05:42 GMT):
If you have any other meetings that are open to the public, I am happy to add them

mahesh_rao (Fri, 02 Jun 2017 19:21:09 GMT):
Will have a look into it @Dan thanks !

mahesh_rao (Fri, 02 Jun 2017 19:22:11 GMT):
Thx @tkuhrt

h4xr (Sat, 03 Jun 2017 05:22:24 GMT):
Has joined the channel.

FlyingTiger (Sat, 03 Jun 2017 06:22:22 GMT):
I also didn't find any verification that the transaction_ids field contains a list of transaction header_signatures and has the same order. So I opened a PR https://github.com/hyperledger/sawtooth-core/pull/571

FlyingTiger (Sat, 03 Jun 2017 06:22:47 GMT):
Guys, please take a look. :)

h4xr (Sat, 03 Jun 2017 06:52:51 GMT):
Hello everyone, I am Saurabh currently based in India. I am an open source enthusiast and intrigued by the Blockchain technology and was going through the projects under Hyperledger. My day to day work involves coding in python, javascript and shell scripting. Currently I am trying to setup Sawtooth by following the core developers guide and looking forward to contributing to Sawtooth-core :)

jsmitchell (Sat, 03 Jun 2017 15:26:36 GMT):
Welcome Saurabh!

pschwarz (Sat, 03 Jun 2017 18:16:54 GMT):
@FlyingTiger looks like there's a unit test failure in that PR: ``` validator_1 | ERROR: test_invalid_transaction_ids_batch (test_message_validation.tests.TestMessageValidation) validator_1 | ---------------------------------------------------------------------- validator_1 | Traceback (most recent call last): validator_1 | File "/project/sawtooth-core/validator/tests/unit3/test_message_validation/tests.py", line 212, in test_invalid_transaction_ids_batch validator_1 | batch_list = self._create_batches(1, 1, valid_transaction_ids=false) validator_1 | NameError: name 'false' is not defined ```

h4xr (Sun, 04 Jun 2017 02:27:50 GMT):
Hello, I recently finished building and setting up Sawtooth. I was looking for some issues, which I can work on and which can provide me a bit more insight into the project. I found this issue on JIRA: https://jira.hyperledger.org/projects/STL/issues/STL-261 and I am planning to work on it. I was looking through the code of Sawtooth CLI config proposal and the how the REST endpoints are being built, I want to ask, pertaining to this particular issue, will this REST endpoint for adding public key to the validator, will get a Batch as its payload where the Payload consist of a key => value pair (e.g. PUB_KEY => some_pub_key) or just a value for the PubKey which should be voted for addition to config blockchain? Will be glad if someone can provide a bit of elaboration on the above question :)

FlyingTiger (Sun, 04 Jun 2017 02:51:41 GMT):
@pschwarz I fixed it. Thanks for reminding me.

FlyingTiger (Mon, 05 Jun 2017 03:21:10 GMT):
HI, everyone, I have a question: When I submit a batch that includes an invalid Transaction. The processor has the logging out "Invalid Transaction Invalid Action: Space already taken.", and the validator has the logging out "Batch c51fd936940687b24741d96383913192ef6a4a5f9c664324bf9b8ed121999bea342e490243e4871dd054c80ed22c1eea6cc17617a0a36ab0850bf45a9affb97d invalid, not added to block", but when I got the status of the batch, the response is "c51fd936940687b24741d96383913192ef6a4a5f9c664324bf9b8ed121999bea342e490243e4871dd054c80ed22c1eea6cc17617a0a36ab0850bf45a9affb97d PENDING". Why the reponse is PENDING, not INVALID? Could we get the INVALID status?

h4xr (Mon, 05 Jun 2017 03:24:06 GMT):
@FlyingTiger Seems like it is already reported here https://jira.hyperledger.org/projects/STL/issues/STL-321

FlyingTiger (Mon, 05 Jun 2017 08:31:37 GMT):
@h4xr Thanks, that's what I want to ask.

h4xr (Mon, 05 Jun 2017 12:55:54 GMT):
Hi, why does JIRA show an error stating, user is not whitelisted

h4xr (Mon, 05 Jun 2017 12:56:28 GMT):
Are there any additional steps that needs to be taken before sending a PR to sawtooth-core github?

h4xr (Mon, 05 Jun 2017 12:57:46 GMT):
Talking with respect to this PR: https://github.com/hyperledger/sawtooth-core/pull/575

jsmitchell (Mon, 05 Jun 2017 13:16:45 GMT):
Hi @h4xr we have a list of committers because PRs automatically get run on our Jenkins system. This is to avoid arbitrary code from being run on that system.

jsmitchell (Mon, 05 Jun 2017 13:18:17 GMT):
One of the maintainers can kick off a build once they peek at the changes.

h4xr (Mon, 05 Jun 2017 13:18:33 GMT):
@jsmitchell Thanks for the info :D

jsmitchell (Mon, 05 Jun 2017 13:20:05 GMT):
I can do it once I'm at my desk

h4xr (Mon, 05 Jun 2017 13:23:59 GMT):
@jsmitchell thanks :)

Dan (Mon, 05 Jun 2017 15:03:09 GMT):
for those on the planning call you need to hit the audio options to hear / talk

zac (Mon, 05 Jun 2017 15:34:31 GMT):
2

zac (Mon, 05 Jun 2017 15:36:32 GMT):
@h4xr Hey there Saurabh! I'm the primary REST API guy, so I'm happy to see you are taking on STL-261, and can hopefully answer some of your questions.

zac (Mon, 05 Jun 2017 15:37:50 GMT):
In regards to your question, the answer is somewhat dependent on the completion of the design work in https://jira.hyperledger.org/browse/STL-260. Really that whole epic is.

zac (Mon, 05 Jun 2017 15:43:12 GMT):
That said, my instinct is that you would _not_ have to submit a Batch for this endpoint. Since this endpoint creates a proposal to be voted on, we don't need to worry about signing the interaction, and the REST API should be able to handle the details of building the Batch.

zac (Mon, 05 Jun 2017 15:43:29 GMT):
Thoughts @pschwarz?

h4xr (Mon, 05 Jun 2017 15:46:06 GMT):
@zac That sounds nice :) We can figure out something regarding the structure of the Keys and the required endpoints and what model we can use for the REST based authentication. I will need some help understanding how multiple keys can be added to the config blockchain for voting though :)

pschwarz (Mon, 05 Jun 2017 15:48:34 GMT):
Not quite correct, @zac - the transaction submitted for the proposal needs to be signed. So there's an open question as to what key would be used for the proposal, since there _that_ key needs to be authorized to make config proposals.

zac (Mon, 05 Jun 2017 15:49:29 GMT):
Yeah, I meant the person who submitted it didn't necessarily need to sign it.

pschwarz (Mon, 05 Jun 2017 15:49:39 GMT):
True

zac (Mon, 05 Jun 2017 15:49:46 GMT):
Though, that would mean giving the REST API a key

zac (Mon, 05 Jun 2017 15:49:53 GMT):
Which is a whole new thing

pschwarz (Mon, 05 Jun 2017 15:50:03 GMT):
Right

pschwarz (Mon, 05 Jun 2017 15:50:43 GMT):
And it has to be authorized to create config proposals

zac (Mon, 05 Jun 2017 15:52:32 GMT):
Though if you are submitting a batch in order to add an id, you could just `POST /batches`

zac (Mon, 05 Jun 2017 15:52:43 GMT):
The REST API wouldn't actually need a new endpoint

pschwarz (Mon, 05 Jun 2017 15:56:28 GMT):
Yeah, I'm not sure about that story, and I think there needs to be some architectural discussion on it

pschwarz (Mon, 05 Jun 2017 15:56:52 GMT):
There are also so possible issues with the config family that might make that tough

pschwarz (Mon, 05 Jun 2017 15:57:07 GMT):
(by exposing this that way, I mean)

h4xr (Mon, 05 Jun 2017 15:57:23 GMT):
I am not sure how much this is feasible (still understanding the architecture) Initially we provide an authorized signing key(A key valid for one time use, if possible) to the user through which they can make a Public key proposal for the addition to config blockchain. The user then makes a proposal. Once the key is voted authorized, we provide the user with a endpoint to which they pass their key and get a API token. This API token(valid for a limited time) can be used to make REST API requests. Once the token expires, the user needs to ask for a new token

jsmitchell (Mon, 05 Jun 2017 15:58:07 GMT):
hmm

jsmitchell (Mon, 05 Jun 2017 15:58:33 GMT):
the authorized keys for voting are a chain of trust

jsmitchell (Mon, 05 Jun 2017 15:59:04 GMT):
the design is that an existing authorized signer is the one introducing the proposal

jsmitchell (Mon, 05 Jun 2017 15:59:40 GMT):
this also allows that individual to perform verification of identity/proof of private key for the new party

pschwarz (Mon, 05 Jun 2017 16:05:14 GMT):
There are two layers of authorized keys here: one for config transactions, the other for API tokens for general REST API usage (queries to submission, etc)

jsmitchell (Mon, 05 Jun 2017 16:05:59 GMT):
ah

h4xr (Mon, 05 Jun 2017 16:11:10 GMT):
So, here is what I understood An authorized signer makes a request for a public key to be added to the config blockchain Next, when this key is approved, the user can make API requests using this key

zac (Mon, 05 Jun 2017 16:23:17 GMT):
I am going to start finalizing the design today

zac (Mon, 05 Jun 2017 16:23:30 GMT):
Should be done tomorrow or the next day

zac (Mon, 05 Jun 2017 16:23:51 GMT):
So your way should be a little more clear soon @h4xr

zac (Mon, 05 Jun 2017 16:30:17 GMT):
To clear up confusion the basic idea is this: • It should be possible to limit interactions with the REST API to certain public keys • It would be time consuming to do a signature verification on every interaction • Instead the (likely) solution is to use verify a signature once, and then provide a long-term API-key for further interactions • Additionally, authorized public keys should be stored on the blockchain with the Config transaction family • That means it should be possible to submit new public keys to be authorized and have the whole chain be updated (this is STL-261)

agunde (Mon, 05 Jun 2017 16:30:49 GMT):
The command line options for ./bin/rest_api have been updated to be the following:

agunde (Mon, 05 Jun 2017 16:31:03 GMT):
usage: rest_api [-h] [-B BIND] [-C CONNECT] [-t TIMEOUT] [-v] optional arguments: -h, --help show this help message and exit -B BIND, --bind BIND The host and port for the api to run on. -C CONNECT, --connect CONNECT The url to connect to a running Validator -t TIMEOUT, --timeout TIMEOUT Seconds to wait for a validator response -v, --verbose Increase level of output sent to stderr

agunde (Mon, 05 Jun 2017 16:31:59 GMT):
There is also now an option to use a config file when starting up a rest_api and an example config file can be found here:

agunde (Mon, 05 Jun 2017 16:32:05 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/rest_api/packaging/rest_api.toml.example

h4xr (Mon, 05 Jun 2017 16:33:27 GMT):
@zac Thanks :D

jsmitchell (Mon, 05 Jun 2017 16:39:35 GMT):
@FlyingTiger https://github.com/hyperledger/sawtooth-core/pull/573 needs a rebase

tkuhrt (Mon, 05 Jun 2017 17:33:53 GMT):
Recording from today's Sawtooth Sprint planning meeting: https://www.uberconference.com/getmp3/AMIfv956n1mDjmNgq7H2ZTOIgTq-hvhwlsA2CTqMTe9dxn9FTJdMxR1ddOdQL3cpYOe391FpwkKJ-4w1M8pX5rbTEBe7wxAyhI6XoRzqBcrV5GqM86ZA6dHY5CDzdi2BgUjErSKCR7pohwQra8HMZOYUbxBwfVVRYg.mp3

amundson (Mon, 05 Jun 2017 17:37:12 GMT):
@tkuhrt thanks! also, thanks for the google calendar you posted earlier, that's great!

tkuhrt (Mon, 05 Jun 2017 21:57:34 GMT):
I am attempting to run through https://intelledger.github.io/app_developers_guide/intro_to_sawtooth.html. I have installed the Sawtooth package on my Ubuntu machine, and I am attempting to run: `sudo validator -vv --public-uri tcp://localhost:8800`. I am getting an error because I do not have a config TOML file in /etc/sawtooth, so the validator is attempting to use default values. Is there a link to how to specify the contents of a config.toml file so that I can pass the `--config-dir` parameter to my validator?

jsmitchell (Mon, 05 Jun 2017 22:08:25 GMT):
@h4xr you are in COMMITTERS now, so your PRs should automatically build

amundson (Mon, 05 Jun 2017 22:11:26 GMT):
@tkuhrt that log message may be more informational than an error message, if it's the one I'm thinking of; you shouldn't really need to specify a config file while going through the app dev guide.

tkuhrt (Mon, 05 Jun 2017 22:12:19 GMT):
Thanks, @amundson. Here is the entire output from my run: ```tkuhrt@sawtooth:~$ sudo validator -vv --public-uri tcp://localhost:8800 [15:00:05.489 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml [15:00:05.490 ERROR cli] No such signing key file: /etc/sawtooth/keys/validator.priv [15:00:05.491 INFO cli] config [path]: config_dir = "/etc/sawtooth" [15:00:05.491 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" [15:00:05.492 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" [15:00:05.492 INFO cli] config [path]: log_dir = "/var/log/sawtooth" [15:00:05.493 ERROR cli] Initialization errors occurred (see previous log ERROR messages), shutting down. ```

amundson (Mon, 05 Jun 2017 22:12:26 GMT):
@tkuhrt tomorrow morning we will do a release which updates the app dev guide. it was going to be this afternoon but there was some github wierdness

tkuhrt (Mon, 05 Jun 2017 22:12:43 GMT):
Yea...I saw github.com went down for a while today.

amundson (Mon, 05 Jun 2017 22:13:00 GMT):
the error there is the "No such signing key file". Do "sudo sawtooth admin keygen"

tkuhrt (Mon, 05 Jun 2017 22:13:05 GMT):
Regarding my error...I created the keys in /home/tkuhrt/sawtooth/keys.

tkuhrt (Mon, 05 Jun 2017 22:13:13 GMT):
How do I specify where it can find my keys?

tkuhrt (Mon, 05 Jun 2017 22:13:45 GMT):
```sawtooth keygen --key-dir /home/tkuhrt/sawtooth/keys validator```

tkuhrt (Mon, 05 Jun 2017 22:14:09 GMT):
Changed it to tkuhrt because the guide I was following was trying to use /home/ubuntu

tkuhrt (Mon, 05 Jun 2017 22:14:21 GMT):
Maybe I should not specify the --key-dir parameter

amundson (Mon, 05 Jun 2017 22:20:42 GMT):
hmm, yeah, that documentation seems incorrect. probably that works in our vagrant environment where we set SAWTOOTH_HOME. The correct command is 'sawtooth admin keygen' which will generate the keys in the validator's directory.

amundson (Mon, 05 Jun 2017 22:20:50 GMT):
@toddojala ^

tkuhrt (Mon, 05 Jun 2017 22:22:04 GMT):
Okay...I had also tried setting SAWTOOTH_HOME, as I saw that documented elsewhere, but that didn't change anything when I ran the validator.

amundson (Mon, 05 Jun 2017 22:22:37 GMT):
well, SAWTOOTH_HOME would get unset when you run sudo

amundson (Mon, 05 Jun 2017 22:23:23 GMT):
if you set SAWTOOTH_HOME, no need to run as root though, so you can just omit sudo

tkuhrt (Mon, 05 Jun 2017 22:23:53 GMT):
It did not seem to pick it up running as non-sudo

tkuhrt (Mon, 05 Jun 2017 22:24:35 GMT):
I did change my `sawtooth keygen` command and re-ran the validator as sudo as suggested, and that works.

tkuhrt (Mon, 05 Jun 2017 22:24:52 GMT):
I have a few issues going through the document so far. Is the right place to report these as a Jira ticket?

amundson (Mon, 05 Jun 2017 22:25:41 GMT):
yes

tkuhrt (Mon, 05 Jun 2017 22:25:54 GMT):
Will do. Thanks for your help...on to the next step.

Dan (Mon, 05 Jun 2017 22:49:51 GMT):
Thanks @tkuhrt. Great to get some feedback on that doc.

tkuhrt (Mon, 05 Jun 2017 23:30:03 GMT):
Created STL-384, STL-385, STL-386, and STL-387. These are related to https://intelledger.github.io/app_developers_guide/environment_setup.html and https://intelledger.github.io/app_developers_guide/intro_to_sawtooth.html all using Ubuntu 16.04.02 with apt package for Sawtooth. Stuck submitting transactions. I will try more later ``` tkuhrt@sawtooth:~$ sudo apt show sawtooth Package: sawtooth Version: 0.8.4 Priority: optional Section: misc Maintainer: Hyperledger Sawtooth Installed-Size: 10.2 kB Depends: python3-sawtooth-cli, python3-sawtooth-config, python3-sawtooth-intkey, python3-sawtooth-manage, python3-sawtooth-poet-common, python3-sawtooth-poet-core, python3-sawtooth-poet-families, python3-sawtooth-poet-simulator, python3-sawtooth-rest-api, python3-sawtooth-sdk, python3-sawtooth-signing, python3-sawtooth-validator, python3-sawtooth-xo Homepage: https://01.org/sawtooth Download-Size: 2,220 B APT-Manual-Installed: yes APT-Sources: http://repo.sawtooth.me/ubuntu/0.8/stable xenial/universe amd64 Packages Description: Hyperledger Sawtooth Distributed Ledger ```

Dan (Tue, 06 Jun 2017 00:28:16 GMT):
thanks @tkuhrt!

macbookno (Tue, 06 Jun 2017 01:50:06 GMT):
Has joined the channel.

sklymenko (Tue, 06 Jun 2017 05:21:05 GMT):
ebgv

toddojala (Tue, 06 Jun 2017 14:47:58 GMT):
@tkuhrt We are testing our latest doc update right now. We'll let you know when it's ready and available!

zac (Tue, 06 Jun 2017 15:41:59 GMT):
@sklymenko ebgv convefe?

sklymenko (Tue, 06 Jun 2017 16:58:52 GMT):
sorry, my cat taped it accidentally :cat:

benoit.razet (Tue, 06 Jun 2017 17:47:48 GMT):
Has joined the channel.

tkuhrt (Tue, 06 Jun 2017 18:02:19 GMT):
Thanks, @toddojala. Looking forward to the latest. Once you give me the go ahead, I will have another go.

Dan (Tue, 06 Jun 2017 18:27:02 GMT):
I've always relied on :monkey:'s hitting my keyboard when I have to develop. I wonder if :cat2:s would improve my code.

avonpaul (Tue, 06 Jun 2017 21:29:34 GMT):
Has joined the channel.

avonpaul (Tue, 06 Jun 2017 23:13:48 GMT):
Where I can find Bond Family on 0.8? The web gui is open sourced? Thank you

jsmitchell (Tue, 06 Jun 2017 23:24:19 GMT):
Hi @avonpaul - bond hasn't been ported to 0.8

jsmitchell (Tue, 06 Jun 2017 23:24:31 GMT):
You can still find it in the 0.7 branch

avonpaul (Tue, 06 Jun 2017 23:24:37 GMT):
But still on 0.7 right?

jsmitchell (Tue, 06 Jun 2017 23:24:40 GMT):
Yep

avonpaul (Tue, 06 Jun 2017 23:24:46 GMT):
Including GUI?

jsmitchell (Tue, 06 Jun 2017 23:24:55 GMT):
Yep, it should all be there

avonpaul (Tue, 06 Jun 2017 23:25:41 GMT):
Amazing :) Im working on something very interesting for Defence and Intelligence industry, and that sample convince me to keeping exploring Sawtooth

jsmitchell (Tue, 06 Jun 2017 23:26:46 GMT):
Nice!

jsmitchell (Tue, 06 Jun 2017 23:27:01 GMT):
Let us know if you have any questions

avonpaul (Tue, 06 Jun 2017 23:27:26 GMT):
Im not that technical user, but I will contact you regarding additional development or maybe consulting

FlyingTiger (Wed, 07 Jun 2017 01:23:05 GMT):
Hi, everyone. As defined, transactions must be wrapped in a Batch, and must contain the public key of the batch signer in the batcher_pubkey field. So a transaction is only wrapped in a batch, a batch must contain the complete transactions that the transaction_id list in the batch header. I'll add a new handler that checks the transaction_id list in the batch header against the transaction list in the batch. Batches which don't contain the complete transactions that the transaction_id list in the batch header would be dropped. What's your point? Looking forward to your reply :)

FlyingTiger (Wed, 07 Jun 2017 01:40:11 GMT):
I posted a new issue, https://jira.hyperledger.org/projects/STL/issues/STL-392

FlyingTiger (Wed, 07 Jun 2017 01:52:40 GMT):
And as documented, there is a strict rule that the transaction_ids field in the batch header contains a list of transaction header_signatures and must be the same order as the transactions field in the batch.

FlyingTiger (Wed, 07 Jun 2017 08:53:26 GMT):
And I tested, transactions in the batch, but not listed by the transaction_ids are accepted and applied. I think this is a serious bug. At least we need to fix it.

mfford (Wed, 07 Jun 2017 13:02:45 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, June 8th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, June 8h Time: 10-11am CDT Call-in: 401-283-2000…4807579435# Conference Link: https://www.uberconference.com/hyperledger-community International Access Numbers: https://www.uberconference.com/international Agenda: 1. Introductions-Mark Ford 2. Intro to EVM-Adam Ludvik 3. Overview of Burrow-Benjamin Bollen 4. Burrow & Sawtooth-Adam Ludvik 5. Open Forum

jsmitchell (Wed, 07 Jun 2017 14:01:55 GMT):
@FlyingTiger good find. Absolutely agree we have to fix this. The question is where's the best place to put it? I can see two arguments (there may be others) 1) Expand the scope of Signature Verifier to be a more general gossip message verifier (signature verification, structure, etc.). This minimizes the number of handlers/dispatches that occur. 2) Leave Signature Verifier as is and add a separate handler for structure verification.

agunde (Wed, 07 Jun 2017 14:09:49 GMT):
@FlyingTiger It seems like this check would be very simple to add to your other Validate the transaction_ids field PR https://github.com/hyperledger/sawtooth-core/pull/571 . Both checks should at least be in the same place.

zac (Wed, 07 Jun 2017 14:27:42 GMT):
My instinct would be to make a new handler. Keep everything as modular as possible. There is no overhead with adding new handlers is there?

zac (Wed, 07 Jun 2017 14:28:28 GMT):
Though, I suppose that the argument could be made that the signature verifier _is_ a structure verifier

zac (Wed, 07 Jun 2017 14:29:02 GMT):
It has to know where in the structure the signatures are, so it's not actually particularly compartmentalized.

Dan (Wed, 07 Jun 2017 14:43:18 GMT):
I think some of the original thinking with the signature verifier was that it would contain the compute intensive crypto work and if necessary we could spread that across multiple native threads.

jsmitchell (Wed, 07 Jun 2017 14:46:47 GMT):
@dan yes, indeed

jsmitchell (Wed, 07 Jun 2017 14:46:58 GMT):
strong case for #2

catbus (Wed, 07 Jun 2017 18:45:04 GMT):
Has joined the channel.

zac (Wed, 07 Jun 2017 22:28:07 GMT):
@h4xr A design for On-Chain REST API Authorization has been completed and can be found here: https://docs.google.com/document/d/1NcHE1ecWAD3FvhftPoiR4w9c8TuUIrNN7MXtFdoYiy4/edit?usp=sharing

zac (Wed, 07 Jun 2017 22:28:44 GMT):
The related JIRA tasks have also been updated to be specific to this design

zac (Wed, 07 Jun 2017 22:29:22 GMT):
Unfortunately the task you were interested in, STL-261 has changed completely

zac (Wed, 07 Jun 2017 22:30:18 GMT):
After further design, it no longer makes sense to have an endpoint dedicated to updating particular Config family data

zac (Wed, 07 Jun 2017 22:31:07 GMT):
That would happen via a normal transaction submission, and the old STL-261 has been replaced with a Config family specific one to make that submission easier

FlyingTiger (Thu, 08 Jun 2017 02:05:16 GMT):
Thanks for your explanation :), I got it. A separate handle is better than expanding the scope of Signature Verifier for the structure verification. @agunde Yes, both checks should at least be in the same place.

shawnm 6 (Thu, 08 Jun 2017 02:37:41 GMT):
Has joined the channel.

h4xr (Thu, 08 Jun 2017 04:21:52 GMT):
@zac Thanks for providing the details. I will take a look today onwards :D

trbs (Thu, 08 Jun 2017 16:10:31 GMT):
Has joined the channel.

tkuhrt (Thu, 08 Jun 2017 16:49:06 GMT):
Recording from today's Tech Forum: https://www.uberconference.com/getmp3/AMIfv94R7VsJm9tYAXIEdJYX5VNuPdFog6ooMbQvYxHSWqW2H0cycfVbWWqtnx9PuQ1BUMtu0GEcAoqeyRxiRv-YIsNppBAa5edU24TxgW-8XDg59CCyrU82U-99v77GosWB__Bnf4Rt4XMVJwLrmb5ebFn5wJB3tQ.mp3

jjason (Thu, 08 Jun 2017 17:10:39 GMT):
I believe that `sawtooth batch-status` is incongruous with the existing `sawtooth batch` commands and is confusing. If we have `sawtooth batch-status`, then why is it not also `sawtooth batch-show`??? @zac has proposed that instead, because what we really want is the status of a batch submission and that is effected by `sawtooth submit`, that it should really be `sawtooth submit status`.

Dan (Thu, 08 Jun 2017 17:12:07 GMT):
what will `sawtooth batch show` return if the batch is not committed?

zac (Thu, 08 Jun 2017 17:12:07 GMT):
My feeling is that the fact that we are checking on batches is somewhat incidental. What we are really interested in is the status of submissions.

zac (Thu, 08 Jun 2017 17:12:31 GMT):
@dan Whatever the 404 response is

zac (Thu, 08 Jun 2017 17:12:31 GMT):
@Dan Whatever the 404 response is

zac (Thu, 08 Jun 2017 17:12:31 GMT):
@Dan an Whatever the 404 response is

zac (Thu, 08 Jun 2017 17:12:55 GMT):
I don't remember off hand what exactly that is

zac (Thu, 08 Jun 2017 17:13:14 GMT):
"The batch does not exist on the blockchain"

Dan (Thu, 08 Jun 2017 17:13:36 GMT):
thanks @zac. That seems consistent at least that all the batch commands work on committed batches.

jjason (Thu, 08 Jun 2017 17:13:49 GMT):
Agreed.

jjason (Thu, 08 Jun 2017 17:14:09 GMT):
If `sawtooth batch` is for committed batches, then it seems more consistent that it be `sawtooth submit status`

amundson (Thu, 08 Jun 2017 17:14:47 GMT):
it should be 'sawtooth batch status'

amundson (Thu, 08 Jun 2017 17:15:05 GMT):
one could argue pretty well that submit should be called 'sawtooth batch submit'

zac (Thu, 08 Jun 2017 17:16:16 GMT):
Unless we rename both, I would not rename either

zac (Thu, 08 Jun 2017 17:16:58 GMT):
(to that)

jjason (Thu, 08 Jun 2017 17:17:02 GMT):
I am perfectly happy with `sawtooth batch submit` and `sawtooth batch status`

Dan (Thu, 08 Jun 2017 17:17:43 GMT):
I feel like we could drag this out way longer.

zac (Thu, 08 Jun 2017 17:18:08 GMT):
I feel like they add an unnecessary implementation detail into the UI

Dan (Thu, 08 Jun 2017 17:18:14 GMT):
Shouldn't argument 1 be a verb?

zac (Thu, 08 Jun 2017 17:18:22 GMT):
And I prefer `sawtooth submit` and `sawtooth submit status`

zac (Thu, 08 Jun 2017 17:18:33 GMT):
But that is the end of my objections

zac (Thu, 08 Jun 2017 17:18:48 GMT):
I could live with `sawtooth batch submit` and `sawtooth batch status`

jjason (Thu, 08 Jun 2017 17:20:27 GMT):
I have a preference for `sawtooth batch ...`, but don't feel strongly enough to fight for that over `sawtooth submit ...`. However, I do feel that `sawtooth batch-status` is confusing and inconsistent.

zac (Thu, 08 Jun 2017 17:21:38 GMT):
Yes, I agree that is misnamed

zac (Thu, 08 Jun 2017 17:21:51 GMT):
At the time I didn't think it through enough to consider alternatives

zac (Thu, 08 Jun 2017 17:21:51 GMT):
When the PR was submitted, I didn't think it through enough to consider alternatives

amundson (Thu, 08 Jun 2017 19:12:03 GMT):
```The current docker compose files use generic names for container used to run nose2, which can be confusing in output pasted into chat since it lacks sufficient context to easily determine the specific container and associated test. Thus, it is desirable to rename the generic container names with more specific container names. Recommendation: - Given a python test module file, remove '.py' to determine the test's BASENAME. Tests in other languages should define a convention for determining BASENAME. Examples: test_battleship_tp.py -> test_battleship_tp test_xo_tp.py -> test_xo_tp - Docker Compose YAML filenames should be of the format BASENAME[_SUFFIX].yaml, where BASENAME is used ans supplemented by a SUFFIX to make it more specific if necessary (for example, due to different language implementations). Examples docker compose files: test_battleship_tp.yaml test_xo_tp_python.yaml test_xo_tp_go.yaml - The container running the test should be derived from the Docker Compose YAML filename by removing the file extension ".yaml" and prefixing it with the string "runner_". In this context, "runner" is short for "test runner" such as nose2-3. The reason for prefixing the container with this string is to differentate the container name from the test name. (Alternate method here would be to omit the prefix "runner_" and rely on Docker Compose's number extension to differentiate.) Example container names: runner_test_battleship_tp runner_test_xo_tp_python runner_test_xo_tp_go - The container running a transaction processor should match the name of the transaction processor. For example: tp_xo_python (in future: xo-tp-python) tp_xo_go (in future: xo-tp-go) ```

amundson (Thu, 08 Jun 2017 19:12:38 GMT):
the above is an attempt to distill a conversation @drozd and I just had about container names

fz (Thu, 08 Jun 2017 19:13:15 GMT):
Hello everyone. Is there a recording of todays recording of tech forum meeting?

agunde (Thu, 08 Jun 2017 19:13:40 GMT):
@fz Recording from today's Tech Forum: https://www.uberconference.com/getmp3/AMIfv94R7VsJm9tYAXIEdJYX5VNuPdFog6ooMbQvYxHSWqW2H0cycfVbWWqtnx9PuQ1BUMtu0GEcAoqeyRxiRv-YIsNppBAa5edU24TxgW-8XDg59CCyrU82U-99v77GosWB__Bnf4Rt4XMVJwLrmb5ebFn5wJB3tQ.mp3

agunde (Thu, 08 Jun 2017 19:13:53 GMT):
It was posted above

fz (Thu, 08 Jun 2017 19:13:53 GMT):
Thanks @agunde !

adamludvik (Thu, 08 Jun 2017 19:58:51 GMT):

Message Attachments

adamludvik (Thu, 08 Jun 2017 19:59:38 GMT):

Message Attachments

adamludvik (Thu, 08 Jun 2017 20:00:07 GMT):
@fz I uploaded the first and last slide decks from the tech forum for you to follow along with, since the recording is only audio.

fz (Thu, 08 Jun 2017 20:01:10 GMT):
@adamludvik! thank you! this helps a lot

zac (Thu, 08 Jun 2017 21:43:11 GMT):
Why doesn't `tp_xo_python` print stack traces or error types?

zac (Thu, 08 Jun 2017 21:43:54 GMT):
A protobuf error: ``` ubuntu@ubuntu-xenial:/project/sawtooth-core$ tp_xo_python -vv [20:51:26.498 INFO core] register attempt: OK [20:51:31.501 DEBUG core] received message of type: TP_PROCESS_REQUEST [20:51:31.502 WARNING core] Invalid Transaction Name cannot contain "|" Error: InvalidTransaction('Name cannot contain "|"',) has type , but expected one of: (, ) for field TpProcessResponse.message ```

zac (Thu, 08 Jun 2017 21:44:30 GMT):
An assert error: ``` ubuntu@ubuntu-xenial:/project/sawtooth-core$ tp_xo_python -vv [21:40:06.349 INFO core] register attempt: OK [21:40:16.784 DEBUG core] received message of type: TP_PROCESS_REQUEST Error: Error data must be byte encoded ```

zac (Thu, 08 Jun 2017 21:45:09 GMT):
Looks like it just prints "Error: " and then whatever the message is

zac (Thu, 08 Jun 2017 21:45:14 GMT):
Seems unhelpful

adamludvik (Thu, 08 Jun 2017 21:46:57 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/processor/main.py#L72

zac (Thu, 08 Jun 2017 21:47:23 GMT):
That'd do it

zac (Thu, 08 Jun 2017 21:48:08 GMT):
What is the reasoning behind that?

adamludvik (Thu, 08 Jun 2017 21:50:56 GMT):
Not sure, there should be an extra line that prints the stack trace probably

zac (Thu, 08 Jun 2017 21:51:18 GMT):
The type of error would be nice too

adamludvik (Thu, 08 Jun 2017 21:52:12 GMT):
This is better: https://github.com/hyperledger/sawtooth-core/blob/master/bin/run_docker_test#L398

zac (Thu, 08 Jun 2017 21:52:39 GMT):
Looks like a lot of the scripts have some version of that: https://github.com/hyperledger/sawtooth-core/blob/master/rest_api/sawtooth_rest_api/rest_api.py#L192

zac (Thu, 08 Jun 2017 21:53:19 GMT):
I am curious about both the purpose, and the best practice

jsmitchell (Thu, 08 Jun 2017 21:53:38 GMT):
stack traces are pretty cool for developers

jsmitchell (Thu, 08 Jun 2017 21:53:49 GMT):
but they are not a great user experience for others

zac (Thu, 08 Jun 2017 21:54:22 GMT):
Well, in theory any non-develop time errors should be getting caught earlier, yes?

zac (Thu, 08 Jun 2017 21:54:52 GMT):
Or you have not done your job properly as a developer.

jsmitchell (Thu, 08 Jun 2017 21:55:11 GMT):
i don't know what a develop time error is

zac (Thu, 08 Jun 2017 21:55:36 GMT):
Triggered by the developer screwing up

zac (Thu, 08 Jun 2017 21:55:42 GMT):
Should be caught in development

jsmitchell (Thu, 08 Jun 2017 21:55:55 GMT):
aka all errors?

amundson (Thu, 08 Jun 2017 21:56:11 GMT):
says a former sysadmin

zac (Thu, 08 Jun 2017 21:57:49 GMT):
In the specific case I am working on, the transaction processor developer needs to pass `bytes` into a parameter. If they pass in not-bytes, things will break.

zac (Thu, 08 Jun 2017 21:58:20 GMT):
They may not realize this during development, and pass in a string instead.

zac (Thu, 08 Jun 2017 21:58:33 GMT):
But then all they will get is `Error: Error data must be byte encoded`

zac (Thu, 08 Jun 2017 21:59:32 GMT):
At that point I have to do a search for that string in the codebase

zac (Thu, 08 Jun 2017 21:59:40 GMT):
And I am pretty annoyed as a developer

FlowersJeff (Fri, 09 Jun 2017 03:09:25 GMT):
Has joined the channel.

FlowersJeff (Fri, 09 Jun 2017 03:13:51 GMT):
Just checking in, and wondering if there's a better sub for sawtooth related installation questions. Thanks in advance.

jsmitchell (Fri, 09 Jun 2017 03:15:21 GMT):
This is the best place, but it's pretty late for most of the team.

FlyingTiger (Fri, 09 Jun 2017 03:38:48 GMT):
Yes, `sawtooth batch submit` and `sawtooth batch status` are really kind to users. I'll changed the batch-status command to the batch status command.

FlowersJeff (Fri, 09 Jun 2017 05:45:16 GMT):
@jsmitchell awesome and understand about the time - I'm heading in myself. I'm basically looking for recommendations around hardware. I've tried two computers, and a bit gun shy now that they both failed. Sawtooth requires SGX to properly compile/install (I'll start there - fairly sure I know that it does, but might be wrong)? If so, then what box works - or any >2013 intel CPU system would be fine. Would me running down to costco and picking up a generic box/Dell and throwing ubuntu be ok - or is there some cpu/mb combos that the group recommends. One personal note, I actually don't like NUCs as I've had issues with a few of them. Any input is greatly appreciated.

Calvin_Heo (Fri, 09 Jun 2017 09:01:04 GMT):
Has joined the channel.

rezamt (Fri, 09 Jun 2017 10:21:52 GMT):
Has joined the channel.

jsmitchell (Fri, 09 Jun 2017 13:30:37 GMT):
@FlowersJeff We ship with a simulator which does not require SGX, so you can run it on any platform. Once you get to the point where you want to test/deploy real SGX enclaves, you will need a machine with a Skylake or newer CPU and BIOS support for enabling SGX.

jsmitchell (Fri, 09 Jun 2017 13:32:09 GMT):
Our standard recommendation for this is a NUC

jsmitchell (Fri, 09 Jun 2017 13:32:54 GMT):
Specifically the NUC7i7BNH model

Dan (Fri, 09 Jun 2017 13:52:50 GMT):
thanks @jsmitchell. To be really clear for @FlowersJeff I'll reiterate that SGX is NOT required to use sawtooth. We have a consensus mechanism called PoET. That can run with simulated enclaves and offers crash fault tolerance. We will also be releasing an SGX version that will offer Byzantine fault tolerance. In the future we also plan to have other consensus mechanisms like BFT or raft variants.

jsmitchell (Fri, 09 Jun 2017 14:34:35 GMT):
@FlyingTiger are you around?

kelly_ (Fri, 09 Jun 2017 14:45:35 GMT):
@FlowersJeff here is a partial list of sgx hardware - https://github.com/ayeks/SGX-hardware

kelly_ (Fri, 09 Jun 2017 14:45:54 GMT):
we have used HP machines before. the one key thing is that sometimes SGX needs to be enable in the BIOS

kelly_ (Fri, 09 Jun 2017 14:46:21 GMT):
also SGX is only available on 2015+ processors (I think that was 6th generation core)

FlowersJeff (Fri, 09 Jun 2017 15:16:57 GMT):
@kelly I had saw that, and thought maybe it wasn't updated / a bit scared, as that list seemed to indicate only a handful of valid (validated ;-) ) systems that were supported. Do you know which HP machines you're using now and if they are fine. I really just don't want to be caught off guard again. Thanks.

FlowersJeff (Fri, 09 Jun 2017 15:19:41 GMT):
@jsmitchell @Dan I'm heading in a bit later today, I'll dig up the error and post. Perhaps I'm misreading it.

jsmitchell (Fri, 09 Jun 2017 15:44:23 GMT):
@FlowersJeff yep, let us know

TomBarnes (Fri, 09 Jun 2017 16:21:55 GMT):
@amundson regarding naming convention, is it our convention that each transaction processor is to be run in a separate container?

zac (Fri, 09 Jun 2017 16:25:24 GMT):
@FlyingTiger Please change `sawtooth submit` to `sawtooth batch submit` in the same PR, to keep things consistent

zac (Fri, 09 Jun 2017 16:25:24 GMT):
@FlyingTiger I would want to change `sawtooth submit` to `sawtooth batch submit` in the same PR, to keep things consistent

zac (Fri, 09 Jun 2017 16:29:43 GMT):
Looks like these references would also have to change: • https://github.com/hyperledger/sawtooth-core/blob/master/bin/generate_cli_output#L45 • https://github.com/hyperledger/sawtooth-core/blob/master/core/sawtooth/cli/submit.py#L57 • https://github.com/hyperledger/sawtooth-core/blob/master/docs/source/cli/sawtooth.rst#sawtooth-submit

amundson (Fri, 09 Jun 2017 16:42:01 GMT):
@Tom Barnes yes

amundson (Fri, 09 Jun 2017 17:12:11 GMT):
@FlyingTiger @zac separate PRs should be fine too

zac (Fri, 09 Jun 2017 21:57:54 GMT):
Question for the core developers

zac (Fri, 09 Jun 2017 21:58:18 GMT):
Is there already a cache of invalid batches hanging around somewhere in the validator code?

zac (Fri, 09 Jun 2017 21:58:47 GMT):
I recall talk of something like that to prevent resubmitting batches that had been rejected

jsmitchell (Fri, 09 Jun 2017 21:59:22 GMT):
publisher has a bad_batches

jsmitchell (Fri, 09 Jun 2017 22:00:25 GMT):
those aren't necessarily invalid though

zac (Fri, 09 Jun 2017 22:01:27 GMT):
How else might a batch get `bad`?

jsmitchell (Fri, 09 Jun 2017 22:02:36 GMT):
well, i think it throws any batch after the first failed batch in that list

zac (Fri, 09 Jun 2017 22:03:27 GMT):
``` # - build three lists of batches: # 1) a lists of all valid transactions that will be included in the # block, these are added to the BlockBuilder to include in the Block # 2) all batches that were not executed, these are to be returned # in the pending_batches list # 3) all batches that failed processing. These will be discarded. # This list is needed in some case when the block is abandoned to # make sure they do not remain in the pending_batches list. ```

zac (Fri, 09 Jun 2017 22:04:07 GMT):
Batches should always be processed if they aren't themselves invalid, right?

zac (Fri, 09 Jun 2017 22:04:35 GMT):
It's the transactions in a batch that are thrown out if one transaction is bad

jsmitchell (Fri, 09 Jun 2017 22:04:56 GMT):
if a transaction is bad then the batch is bad

zac (Fri, 09 Jun 2017 22:05:02 GMT):
yes

zac (Fri, 09 Jun 2017 22:05:31 GMT):
And other transactions in a batch will not get rerun elsewhere (unless resubmitted)

zac (Fri, 09 Jun 2017 22:05:55 GMT):
But you are saying if a batch is bad, other batches that were being considered for a block will be thrown out?

jsmitchell (Fri, 09 Jun 2017 22:06:21 GMT):
anyway, whether or not bad_batches is the right list, that data needs to be put somewhere else because it's currently only scoped to that finalize_block method

zac (Fri, 09 Jun 2017 22:06:32 GMT):
yes, this is true

jsmitchell (Fri, 09 Jun 2017 22:06:33 GMT):
it looks like it is the right list

zac (Fri, 09 Jun 2017 22:07:08 GMT):
if they are the same thing though, might be worthwhile to replace bad_batches with the cache I'm building or otherwise refactor things

zac (Fri, 09 Jun 2017 22:07:42 GMT):
Do people have an instinct as to where a temporary cache of invalid batches should live?

zac (Fri, 09 Jun 2017 22:07:42 GMT):
Do people have an instinct as to where a temporary cache of (the ids and error messages of) invalid batches should live?

zac (Fri, 09 Jun 2017 22:08:13 GMT):
The Completer has a pending batch cache

jsmitchell (Fri, 09 Jun 2017 22:09:24 GMT):
what is this object going to look like?

zac (Fri, 09 Jun 2017 22:09:59 GMT):
I will use a TimedCache, which is basically a purgable dict

zac (Fri, 09 Jun 2017 22:10:09 GMT):
Structure will be something along the lines of:

zac (Fri, 09 Jun 2017 22:11:11 GMT):
``` { {BATCH ID}: { message: "This is why I failed", external_data: b"some bytes maybe" } } ```

zac (Fri, 09 Jun 2017 22:11:11 GMT):
``` { {BATCH ID}: { message: "This is why I failed", extended_data: b"some bytes maybe" } } ```

zac (Fri, 09 Jun 2017 22:11:11 GMT):
``` { {BATCH ID}: { message: 'This is why I failed', extended_data: b'some bytes maybe' }, . . . } ```

jsmitchell (Fri, 09 Jun 2017 22:14:16 GMT):
how is it accessing the data from the block store now?

zac (Fri, 09 Jun 2017 22:14:37 GMT):
What is the "it" in that sentence?

jsmitchell (Fri, 09 Jun 2017 22:14:54 GMT):
the thingy that services the rest_api

jsmitchell (Fri, 09 Jun 2017 22:15:00 GMT):
is it some handler?

zac (Fri, 09 Jun 2017 22:15:22 GMT):
Ah, it access the block store directly, and also gets the batch cache from the completer

jsmitchell (Fri, 09 Jun 2017 22:15:43 GMT):
what is the "it" in that sentence?

zac (Fri, 09 Jun 2017 22:16:02 GMT):
a reference to the block store is passed into the appropriate handlers

zac (Fri, 09 Jun 2017 22:16:19 GMT):
it == any client handler that needs the block store

amundson (Fri, 09 Jun 2017 22:17:28 GMT):
"Block, Batch, Transaction Status Knower"

jsmitchell (Fri, 09 Jun 2017 22:17:48 GMT):
you could create something with an appropriate interface and pass it to both the Journal Publisher and the handlers

zac (Fri, 09 Jun 2017 22:17:52 GMT):
@pschwarz will love the long name

amundson (Fri, 09 Jun 2017 22:18:11 GMT):
that's what it is called in the arch diagram

jsmitchell (Fri, 09 Jun 2017 22:19:20 GMT):
This is more like a "Temporary Bad Batch Knower"

jsmitchell (Fri, 09 Jun 2017 22:19:23 GMT):
it is limited in scope

jsmitchell (Fri, 09 Jun 2017 22:19:36 GMT):
not as powerful as the "Block, Batch, Transaction Status Knower"

zac (Fri, 09 Jun 2017 22:19:52 GMT):
So `journal.temporay_block_batch_transaction_status_knower_tm`

amundson (Fri, 09 Jun 2017 22:19:56 GMT):
not necessarily. it could also be the component that talks to journal to see if it's committed.

amundson (Fri, 09 Jun 2017 22:20:09 GMT):
it shouldn't be in journal

zac (Fri, 09 Jun 2017 22:20:21 GMT):
that would be interesting

zac (Fri, 09 Jun 2017 22:20:28 GMT):
compartmentalize all that querying

zac (Fri, 09 Jun 2017 22:20:39 GMT):
Would simplify the client handlers

zac (Fri, 09 Jun 2017 22:20:56 GMT):
Though I don't think anything else would use that logic would it?

zac (Fri, 09 Jun 2017 22:21:37 GMT):
And to be fair, that logic is just: Is it on the chain? No. Is it invalid? No. Is it still cached? No. Then I have no idea.

jsmitchell (Fri, 09 Jun 2017 22:22:14 GMT):
knowers know they don't not know

jsmitchell (Fri, 09 Jun 2017 22:22:26 GMT):
let me punctuate that

jsmitchell (Fri, 09 Jun 2017 22:22:38 GMT):
knowers know. they don't not know.

zac (Fri, 09 Jun 2017 22:23:14 GMT):
That period helped a lot actually

zac (Fri, 09 Jun 2017 22:27:14 GMT):
So, if not the journal, who tracks what batches have recently been rejected?

zac (Fri, 09 Jun 2017 22:27:19 GMT):
The executor?

zac (Fri, 09 Jun 2017 22:27:46 GMT):
That's the thing that did the rejecting

zac (Fri, 09 Jun 2017 22:28:47 GMT):
Or handled the rejecting rather

amundson (Fri, 09 Jun 2017 22:29:21 GMT):
it's a separate component in the architecture

amundson (Fri, 09 Jun 2017 22:30:12 GMT):
it keeps information around for the sole purpose of responding to clients, and none of the other components care about that information anymore

amundson (Fri, 09 Jun 2017 22:31:01 GMT):
it probably needs to be some sort of notification coming out of the journal to that component to tell it the information so that the journal can then forget about it

zac (Fri, 09 Jun 2017 22:31:24 GMT):
The publisher could conceivably use it

zac (Fri, 09 Jun 2017 22:31:32 GMT):
It keeps track of bad batches internally at the moment

FlyingTiger (Sat, 10 Jun 2017 02:51:31 GMT):
@zac Did you work on changing `sawtooth submit` to `sawtooth batch submit`?

zac (Sat, 10 Jun 2017 13:31:45 GMT):
I did not

hoichong (Sat, 10 Jun 2017 19:00:03 GMT):
Has joined the channel.

hoichong (Sat, 10 Jun 2017 19:09:26 GMT):
Hi, I have manage to follow this doc : http://intelledger.github.io/0.8/app_developers_guide/ubuntu.html and got sawtooth-lake installed and validator started and tp_config family processor started and rest_api started also able to use sawtooth block list to query the blocks in the blockchain when I run the tp_intkey_python processor to test loading the intKeys in with these commands $ intkey create_batch $ intkey load -f batches.intkey on the validator console output, there are error thrown indexError: list index out of range Any ideas what is wrong with my setup ?

jsmitchell (Sat, 10 Jun 2017 19:10:38 GMT):
Hmm @hoichong can you paste the stack trace here?

jsmitchell (Sat, 10 Jun 2017 19:11:11 GMT):
Also, you can try 'intkey workload' which will submit transactions at a constant rate

hoichong (Sat, 10 Jun 2017 19:16:04 GMT):
Thanks for the help... here are some stacktraces [18:15:39.281 [Thread-6] executor DEBUG] failing transaction 727c6a3c4b547c8ef9fc895523f4d5dd8340a36aa28cdb0a99b38fb6946fd9f942708d29233bf1bbff2fdb802cc1$ [18:15:39.291 [Thread-6] executor DEBUG] failing transaction fe371a0f2331f00ad1300e282ba60dddf6ae273d36eb3ddc51bca33555602e1347d698f261dae686d1246f673c98$ [18:15:39.330 [Thread-6] executor DEBUG] failing transaction c7c410e10ffa4d182ca7ad7304ffcc6167977ee40961368f4b2ec2a8c859cd0163c99e87d2430fd07ce0125e8cd6$ [18:15:39.353 [Thread-17] publisher DEBUG] Batch a2dd7401a1f9514a3972ff3ade9945e827dd87806498f556b828478dce0c216501d6bbcf4b1cc2da4b9014be95329ac5e4822f3d$ [18:15:39.353 [Thread-17] publisher DEBUG] Batch 87a538f56a056b9a5d678477cdb9f196ff1380700922ed39e52a8b584c121a92219cb0ac2de9234aa829ce192ec75817a927049d$ [18:15:39.353 [Thread-17] publisher DEBUG] Batch 7cd473980b7127f993c8ad7f9cac31308d5601c694e888648312fee249cafd6302048259d35e1a99d619d73d19db908640b9e0b6$ [18:15:39.354 [Thread-17] publisher DEBUG] Batch e68e5cef8c5e438d096cf133a2928dd354007373272e7814749ac7354a19bbef3a2c08dd611ee6732429a52e45ec5e7fe6aa28d4$ [18:15:39.354 [Thread-17] publisher DEBUG] Batch fa424778c2f78e38b2692d3b17a6657af9cabf518045fc88b90149b91e7d05791f61a8cc35886481867209f127d37d38c81601c9$ [18:15:39.354 [Thread-17] publisher DEBUG] Batch ea43352558255f369a148d19a2508bf374ce7bb0f7aa20c31e9a1f6282831b993b06169bdac6a619590affccc863a6bd314d3d2d$ [18:15:39.355 [Thread-17] publisher DEBUG] Batch 2999faf7fcee512a900db3531a524b3513bbe366424449379e6923643947a4d606376922e2f1ccac69fd68952efc28fbe9883024$ [18:15:39.363 [Thread-17] publisher DEBUG] Batch d34b5d0ade43bb8cd090a686c4bf19b9d1ba462dc4e1731beb4fb6e29137b88f79be703eec6003607cb603af4eaea6becc02a9a0$ [18:15:39.363 [Thread-17] publisher DEBUG] Batch 705c0becc265b9ba6f7fce9ad99a9dd234165f28202b14a0c5fe9e381fcdd0157c7c04bbe3cc0146eaa6d96514e75ac273d3a5a8$ [18:15:39.364 [Thread-17] publisher DEBUG] Abandoning block (2, S:, P:d83ada39): no batches added [18:15:39.372 [InterconnectThread-5] interconnect DEBUG] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'6cd080799eae4c74' [18:15:39.492 [Thread-17] publisher DEBUG] Transaction rejected due missing dependency, transaction 3719d5d94f09f8264834b7d67f702395dcdbaa41ed21d7d482bee$ [18:15:39.493 [Thread-17] publisher DEBUG] Dropping batch due to missing dependencies: 7364a1a06f22cfa31ff5fc6fc5708c2e585cd7188a858a26a6de5a398a827e9c04$ [18:15:39.494 [Thread-17] publisher DEBUG] Transaction rejected due missing dependency, transaction d88d66b1f423a394dbe5f9dbe99d98618400c0767d84b4e4f411b$ [18:15:39.495 [Thread-17] publisher DEBUG] Dropping batch due to missing dependencies: 8430156ed491e3472c1403e8c56552ee0430f404e975d11955abe357861981d559$ [18:15:39.496 [Thread-17] publisher DEBUG] Transaction rejected due missing dependency, transaction 3e0fd31ac4b7efb786747dfea6a51d9ab46d1df9602d307c36208$ [18:15:39.497 [Thread-17] publisher DEBUG] Dropping batch due to missing dependencies: 4fa78c3fd324b0727e8f467bf6c35ea49de6618b7abcd67524d1a01b703625d812$

hoichong (Sat, 10 Jun 2017 19:17:02 GMT):
[18:15:41.478 [Thread-17] publisher DEBUG] Transaction rejected due missing dependency, transaction 3e402f093d3e233c8d9d2d08e5443a59d4c9b07d81799c3e61181$ [18:15:41.480 [Thread-17] publisher DEBUG] Dropping batch due to missing dependencies: 92320eeb6afa903ad933bb15476cd011a74a43ba17968eec209c4295c0c499b35a$ [18:15:41.482 [Thread-17] publisher CRITICAL] on_check_publish_block exception. [18:15:41.484 [Thread-17] publisher ERROR] list index out of range Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/publisher.py", line 502, in on_check_publish_block pending_batches) File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/publisher.py", line 202, in finalize_block self._scheduler.complete(block=True) File "/usr/lib/python3/dist-packages/sawtooth_validator/execution/scheduler_serial.py", line 217, in complete self._calculate_state_root_if_not_already_done() File "/usr/lib/python3/dist-packages/sawtooth_validator/execution/scheduler_serial.py", line 189, in _calculate_state_root_if_not_already_done last_txn_signature = self._last_in_batch[-1] IndexError: list index out of range [18:15:41.514 [Thread-17] publisher DEBUG] Transaction rejected due missing dependency, transaction b3f2633c8caba19e7106028b81b2bf4faedb82817c254914c7cba$

hoichong (Sat, 10 Jun 2017 19:17:26 GMT):
My environment is a Vagrant box - Virtualbox

jsmitchell (Sat, 10 Jun 2017 19:18:01 GMT):
Ok, thanks. There were some changes merged in to the scheduler recently.

jsmitchell (Sat, 10 Jun 2017 19:18:18 GMT):
@adamludvik ^

tuliomonteiro (Sat, 10 Jun 2017 21:27:27 GMT):
Has joined the channel.

FlyingTiger (Mon, 12 Jun 2017 07:47:17 GMT):
@zac OK ,I'll work on changing `sawtooth submit` to `sawtooth batch submit`.

jsmitchell (Mon, 12 Jun 2017 14:00:03 GMT):
@FlyingTiger are you still around?

jsmitchell (Mon, 12 Jun 2017 14:00:59 GMT):
@FlyingTiger did you see the test errors on your signature verifier refactor PR?

Dan (Mon, 12 Jun 2017 14:11:19 GMT):
What's our default sawtooth directory? Is it intended to be "~/sawtooth/" or "~/.sawtooth/" I see different behavior with `sawtooth admin` and `sawtooth config` but I'm also on a hand rolled ubuntu environment and not vagrant so could be my own doing.

Dan (Mon, 12 Jun 2017 14:11:19 GMT):
What's our default sawtooth directory? Is it intended to be ~/sawtooth/ or ~/.sawtooth/ I see different behavior with `sawtooth admin` and `sawtooth config` but I'm also on a hand rolled ubuntu environment and not vagrant so could be my own doing.

jsmitchell (Mon, 12 Jun 2017 14:19:31 GMT):
@FlyingTiger https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-605/7/console

adamludvik (Mon, 12 Jun 2017 14:46:37 GMT):
@jsmitchell @hoichong I was not able to reproduce the issue, but it appears the docs are referencing different versions so I will work on fixing those. @hoichong What vagrant image are you using? Are you using the sawtooth vagrant provisioning tools?

jsmitchell (Mon, 12 Jun 2017 14:55:43 GMT):
@adamludvik seems like we should at least check the length of that list

adamludvik (Mon, 12 Jun 2017 15:50:28 GMT):
will do

adamludvik (Mon, 12 Jun 2017 16:43:45 GMT):
Here is my proposed solution: https://github.com/hyperledger/sawtooth-core/pull/620

GhadiShayban (Mon, 12 Jun 2017 19:02:03 GMT):
Has joined the channel.

hoichong (Mon, 12 Jun 2017 19:02:22 GMT):
@adamludvik I am using Ubuntu Xenial image, not using sawtooth vagrant provisioning tools. I am using sawtooth stable. I re-did Sawtooth setup again from the beginning and this time I did not run this command "" sawtooth config proposal create --key /tmp/sawtooth.priv sawtooth.validator.transaction_families='[{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}, {"family":"sawtooth_config", "version":"1.0", "encoding":"application/protobuf"}]' "" I run the command "tp_config tcp://localhost:40000" first and quit (ctrl-c) and then run this command "tp_intkey_python -v tcp://127.0.0.1:40000" after that, I am able to get "intkey workload" to work fine.

GhadiShayban (Mon, 12 Jun 2017 19:05:27 GMT):
Can someone point me to the necessary setup that would allow me to secure the gossip layer from some random machine joining?

jsmitchell (Mon, 12 Jun 2017 19:08:16 GMT):
@agunde ^

jsmitchell (Mon, 12 Jun 2017 19:10:54 GMT):
@ghadishayban more coming on that topic soon. Currently you can establish a network wide keypair (`network_public_key` and `network_private_key` in config) that you would share sideband with all the nodes on your network.

jsmitchell (Mon, 12 Jun 2017 19:11:20 GMT):
per node permissioning work is in progress

GhadiShayban (Mon, 12 Jun 2017 19:15:15 GMT):
Thank you @jsmitchell . (Confirming an assumption: securing the REST gateway is done through the pedestrian ways you'd normally secure it, e.g. authenticating proxy)

jsmitchell (Mon, 12 Jun 2017 19:15:23 GMT):
yep

GhadiShayban (Mon, 12 Jun 2017 19:15:32 GMT):
:ok_hand_tone3:

jsmitchell (Mon, 12 Jun 2017 19:15:38 GMT):
@zac ^

jsmitchell (Mon, 12 Jun 2017 19:16:49 GMT):
@GhadiShayban http://intelledger.github.io/sysadmin_guide/rest_auth_proxy.html

GhadiShayban (Mon, 12 Jun 2017 19:18:39 GMT):
Anything else besides gossip layer and http that merits security considerations?

jsmitchell (Mon, 12 Jun 2017 19:18:58 GMT):
you can use zmq.auth.create_certificates() in the pyzmq package to create key material for curve ZMQ

jsmitchell (Mon, 12 Jun 2017 19:19:54 GMT):
@GhadiShayban there is the 'component' service, runs on port 4004 by default and allows the components to talk to one another. Assuming you are running that all on one machine, you can bind that port locally only.

Dan (Mon, 12 Jun 2017 20:01:06 GMT):
Fyi, @GhadiShayban That port setting (4004) is a recent change on master.

GhadiShayban (Mon, 12 Jun 2017 20:01:28 GMT):
yeah a coworker just ran into that

GhadiShayban (Mon, 12 Jun 2017 20:01:36 GMT):
40000 => 4004 right?

GhadiShayban (Mon, 12 Jun 2017 20:01:56 GMT):
Also, 'component' is synonymous with 'gossip/zmq' right?

Dan (Mon, 12 Jun 2017 20:04:25 GMT):
that's right we were defaulting to port 40000 but changed due to some odd bugs

GhadiShayban (Mon, 12 Jun 2017 20:04:48 GMT):
that sounds fun to debug

GhadiShayban (Mon, 12 Jun 2017 20:06:53 GMT):
https://github.com/hyperledger/sawtooth-core/commit/3db584200f5bafe8c193daefc69ea237a6563f7f <-- totally curious, but what kind of bugs manifested on one port but not another?

jsmitchell (Mon, 12 Jun 2017 20:18:31 GMT):
@GhadiShayban ugh. We were getting intermittent collisions with outgoing ephemeral TCP ports!

boydjohnson (Mon, 12 Jun 2017 22:14:08 GMT):
@GhadiShayban Something you said that didn't get addressed. "Also, 'component' is synonymous with 'gossip/zmq' right?": component in the cli for validator refers to the interface for transaction processors and the rest api, which also uses zmq. The external validator-to-validator interface is referred to as 'network' in the validator cli.

lm_nop (Mon, 12 Jun 2017 23:17:29 GMT):
Has joined the channel.

Dan (Tue, 13 Jun 2017 02:09:05 GMT):
Good catch @boydjohnson ! I skipped over that part by accident.

zgalvin111 (Tue, 13 Jun 2017 11:37:04 GMT):
Has joined the channel.

zgalvin111 (Tue, 13 Jun 2017 11:39:19 GMT):
Hey everyone, I am new to Sawtooth and I have a question about transaction families. Are transaction families a group of people that all agree on the same functionality of the blockchain? So they all agree on the same type of consensus and etc

zac (Tue, 13 Jun 2017 13:29:07 GMT):
@GhadiShayban @jsmitchell Can confirm, the authentication is pedestrian.

zac (Tue, 13 Jun 2017 13:29:23 GMT):
The only real

zac (Tue, 13 Jun 2017 13:29:23 GMT):
The only real gotcha should be making sure the forward headers are set properly so the REST API can build the correct response link.

zac (Tue, 13 Jun 2017 13:30:54 GMT):
The document @jsmitchell linked to should go over that. Let me know if you run into any issues though, we haven't done a ton of testing yet.

jsmitchell (Tue, 13 Jun 2017 13:39:10 GMT):
@zgalvin111 heh, no. Transaction Families refer to the implementation of a set of related transaction types. It's a handy umbrella term. For example, if you were going to implement some kind of supply chain system, you would probably have transactions for 'CreateAsset', 'CreateAgent', 'TransferOwnership', etc. We could describe this set of things as a supply chain transaction family.

zac (Tue, 13 Jun 2017 13:55:28 GMT):
@zgalvin111 I love that interpretation though

drozd (Tue, 13 Jun 2017 14:40:57 GMT):
``` def else_after_return(arg): if arg > 5: return arg else: return arg ** 2 ```

drozd (Tue, 13 Jun 2017 14:41:35 GMT):
pylint doesn't like that because the `else` is unnecessary after the `return` in the `if` clause

drozd (Tue, 13 Jun 2017 14:42:03 GMT):
`Unnecessary "else" after "return" (no-else-return)`

amundson (Tue, 13 Jun 2017 14:43:02 GMT):
no-else-return seems very picky, but also okay unless someone feels strongly against it

amundson (Tue, 13 Jun 2017 14:43:24 GMT):
do you know how many violations there are in the code currently?

drozd (Tue, 13 Jun 2017 14:43:28 GMT):
@FlyingTiger removed most of the instances (https://github.com/hyperledger/sawtooth-core/commit/12805f95851959373440517adeff56b16129d5fe) but there are a few remaining

jjason (Tue, 13 Jun 2017 14:43:33 GMT):
I personally prefer the no-else approach.

drozd (Tue, 13 Jun 2017 14:43:34 GMT):
half a dozen or so

jjason (Tue, 13 Jun 2017 14:44:20 GMT):
Something about the last statement of a function being a return is re-assuring to me ;) That way I don't have to look at the code and verify that all code paths return a value.

jjason (Tue, 13 Jun 2017 14:44:20 GMT):
Something about the last statement of a function being a return is reassuring to me ;) That way I don't have to look at the code and verify that all code paths return a value.

amundson (Tue, 13 Jun 2017 14:45:21 GMT):
I also prefer it, but many pylint things seem like better ideas when you are linting in an editor and not as great as reasons to break the build.

jjason (Tue, 13 Jun 2017 14:45:32 GMT):
Agreed.

jjason (Tue, 13 Jun 2017 14:46:07 GMT):
I also used to have a mild aversion to there being more than one return statement in a function, but my therapist is helping me work through that ;)

amundson (Tue, 13 Jun 2017 14:47:03 GMT):
@jjason yesterday we were talking about changing exceptions to always use the 'pass' syntax and giving up on the idea of enforcing msg on the very few exceptions that still take the non-pass approach

jjason (Tue, 13 Jun 2017 14:47:27 GMT):
I would have no problem with that

amundson (Tue, 13 Jun 2017 14:47:46 GMT):
@jjason I feel like the pylint folks rendered an opinion on a discussion we had for a year ago :)

zac (Tue, 13 Jun 2017 14:48:03 GMT):
@GhadiShayban Also worth mentioning that the CLI's are only setup to support Basic Auth at the moment. So they would have to be updated (or just not used) if you were using a different authorization scheme.

jjason (Tue, 13 Jun 2017 14:48:04 GMT):
Yeah. I do vaguely recall that.

amundson (Tue, 13 Jun 2017 14:48:49 GMT):
I came to the same conclusion, that it's probably ok to just always use pass and let pylint enforce it's anti-worthless-super rule

zgalvin111 (Tue, 13 Jun 2017 17:54:01 GMT):
@jsmitchell Ohhh ok that makes sense. That was a great example thank you. And @zac I do my best!

zgalvin111 (Tue, 13 Jun 2017 17:56:03 GMT):
What about Proof of Elapsed Time? Is it just an algorithm that randomly picks a different peer every time?

zac (Tue, 13 Jun 2017 17:59:17 GMT):
More or less, each validator picks a random wait time, and if their wait time happens to be the shortest, they'll end up winning the block

zac (Tue, 13 Jun 2017 17:59:58 GMT):
The SGX secure enclave provides hardware based assurances that the time waited was legitimate

zac (Tue, 13 Jun 2017 18:00:30 GMT):
That is about as deep as my understanding goes, but I'm sure others can give you more details if you're curious

GhadiShayban (Tue, 13 Jun 2017 18:40:18 GMT):
Is there something I don't see in the sawtooth java sdk for secp256k1 transaction signing? or should I just use BouncyCastle?

Jakey3 (Tue, 13 Jun 2017 18:59:56 GMT):
Has joined the channel.

Jakey3 (Tue, 13 Jun 2017 19:00:29 GMT):
im following the hyperledger tutorial http://intelledger.github.io/app_developers_guide/docker.html

Jakey3 (Tue, 13 Jun 2017 19:00:36 GMT):
but when i curl http://rest_api:8080/blocks

Jakey3 (Tue, 13 Jun 2017 19:00:44 GMT):
To confirm that a validator is up and running

Jakey3 (Tue, 13 Jun 2017 19:00:53 GMT):
curl: (7) Failed to connect to 172.18.0.7 port 8080: Connection refused

zgalvin111 (Tue, 13 Jun 2017 19:02:32 GMT):
Ok, thanks @zac What are the implications of that compared to Proof of Work? Because that could mean that the validator chosen has no investment in the network and so could play with the system in that block. Does the design of Proof of Elasped Time somehow cover that issue?

boydjohnson (Tue, 13 Jun 2017 19:18:08 GMT):
@zgalvin111 The poet consensus algorithm uses several tests about how long the validator that claimed a block has been with the network, how many times it claimed a block within a certain block depth, and other tests of good behavior. http://intelledger.github.io/transaction_family_specifications/validator_registry_transaction_family.html The validator registry transaction family, used by poet consensus, makes mention of these rules, called the K, C, and Z tests.

zgalvin111 (Tue, 13 Jun 2017 19:25:54 GMT):
Ohhhhhh @boydjohnson that is brilliant! What a way to get the same effect of Proof of Work without all the wasted electricity. Thank you for the explanation.

boydjohnson (Tue, 13 Jun 2017 19:26:29 GMT):
No problem, @zgalvin111

jsmitchell (Tue, 13 Jun 2017 20:47:20 GMT):
@zac or @adamludvik any clues for @Jakey3

adamludvik (Tue, 13 Jun 2017 20:51:15 GMT):
@Jakey3 Are you running curl from your host machine, or within the `sawtooth-client-default` docker container?

pschwarz (Tue, 13 Jun 2017 20:55:03 GMT):
@GhadiShayban Currently, you'll probably need to use Bouncy Castle, or the like

pschwarz (Tue, 13 Jun 2017 20:55:49 GMT):
We haven't yet implemented a friendlier transaction client API in the Java SDK, like there is in the JS or Go SDK's

pschwarz (Tue, 13 Jun 2017 20:57:32 GMT):
This App Developer's Guide section (https://intelledger.github.io/_autogen/txn_submit_tutorial_python.html) gives you some idea of what you need to do, from an operational standpoint, if not the exact code in the Java case

pschwarz (Tue, 13 Jun 2017 20:58:04 GMT):
It should be relatively similar to the example in python or the example in Javascript

kelly_ (Tue, 13 Jun 2017 20:58:57 GMT):
@GhadiShayban @dan may be able to give you some tips as well

kelly_ (Tue, 13 Jun 2017 20:59:06 GMT):
@Dan

kelly_ (Tue, 13 Jun 2017 20:59:21 GMT):
bitcoinJ may be a good method, which I believe has bouncy castle behind it

kelly_ (Tue, 13 Jun 2017 21:00:02 GMT):
@dan can confirm if we are 100% using the bitcoin style, in which case bitcoinj may be a good java option for signing

Dan (Tue, 13 Jun 2017 21:09:55 GMT):
The link pschwarz gave is good. We are using compact signatures. That's just the r,s fields of the signature if that means anything to you. It's not DER encoded for example as that will have some extra bytes.

zac (Tue, 13 Jun 2017 22:02:14 GMT):
@jsmitchell @Jakey3 @adamludvik We may need more experienced docker people. I tried following those instructions and got: ``` root@4c2f15ae26ae:/# curl http://rest_api:8080/blocks curl: (6) Could not resolve host: rest_api ```

zac (Tue, 13 Jun 2017 22:09:15 GMT):
:rocket: makes bizarre syntax highlighting choices

MaximeLandon (Wed, 14 Jun 2017 00:53:14 GMT):
Has joined the channel.

casualuser (Wed, 14 Jun 2017 07:37:35 GMT):
Has joined the channel.

casualuser (Wed, 14 Jun 2017 07:40:39 GMT):
greetings everyone! please give me a tip where to look for sources and docs for UI part of Sawtooth tools ?

alain2sf (Wed, 14 Jun 2017 07:47:40 GMT):
Has joined the channel.

MaximeLandon (Wed, 14 Jun 2017 09:33:42 GMT):
Hello everyone;

MaximeLandon (Wed, 14 Jun 2017 09:37:57 GMT):
Hello Everyone, I just started playing with Sawtooth framework a few days ago, and I face some issues, of which I can't find any topic on the Internet. I could not find anything related to them here as well. My problem is I can't set up the validator, processor, etc... I'm using the Ubuntu 16.04 procedure for setting my blockchain. After following the instructions on key generation and genesis block config (admin rights), I try to start the validator: - The first time, everything went well.

MaximeLandon (Wed, 14 Jun 2017 09:37:57 GMT):
Hello Everyone, I just started playing with Sawtooth framework a few days ago, and I face some issues, of which I can't find any topic on the Internet. I could not find anything related to them here as well. My problem is I can't set up the validator, processor, etc... I'm using the Ubuntu 16.04 procedure for setting my blockchain. After following the instructions on key generation and genesis block config (admin rights), I try to start the validator with validator -vv --endpoint tcp://localhost:8800: - The first time, everything went well. - The second time, the validator stops and says ERROR: no batch and chain found. After sudo apt-get purge sawtooth, reinstalling everything, redoing key generation (tried to set it in different directories): - I try again starting validator, and I get a new error: Address already in use.

MaximeLandon (Wed, 14 Jun 2017 09:37:57 GMT):
Hello Everyone, I just started playing with Sawtooth framework a few days ago, and I face some issues, of which I can't find any topic on the Internet. I could not find anything related to them here as well. My problem is I can't set up the validator, processor, etc... I'm using the Ubuntu 16.04 procedure for setting my blockchain. After following the instructions on key generation and genesis block config (admin rights), I try to start the validator with validator -vv --endpoint tcp://localhost:8800: - The first time, everything went well. - The second time, the validator stops and says ERROR: no batch and chain found. After sudo apt-get purge sawtooth, reinstalling everything, redoing key generation (tried to set it in different directories): - I try again starting validator, and I get a new error: Address already in use. I tried also to start the validator with systemctl start sawtooth-validator, but console outputs the validator exited with failure. I did everything again (purging, resinstalling, regenerating keys, etc) and it still doesn't work. The doc didn't help me much on this, as there is 3 different docs for Ubuntu 16.04, and they all give different instructions (sometimes need to do genesis config, sometimes not). I'm sorry for not having a simple, precise issue but that is why I got to post it here. Many thanks in advance for the help that may be given ! Max

MaximeLandon (Wed, 14 Jun 2017 10:04:51 GMT):
My broader problem, from my perspective at least, is how to start and stop validators without doing the whole process each time. I think about this because the first time I tried, I succeeded to start validator, processor and tp_config. It was when I got back the next day for redoing it, that my problems explained in the message above appeared. Thanks

lulw (Wed, 14 Jun 2017 13:00:55 GMT):
Has joined the channel.

lulw (Wed, 14 Jun 2017 13:05:11 GMT):
@zac I faced today with the same problem, you need just change -bind to --bind rest_api:8080 in your sawtooth-default.yaml file

jsmitchell (Wed, 14 Jun 2017 13:49:58 GMT):
@MaximeLandon there is an issue with tcp sockets and TIME_WAIT which causes the address in use error. Unfortunately, you will need to stop all processes including the transaction processors and rest api which may have connections open. You can check the status of open connections with `netstat -tp`

jsmitchell (Wed, 14 Jun 2017 13:50:40 GMT):
if you see any in TIME_WAIT, you will need to shutdown the associated process and then wait for a few minutes for the tcp stack to timeout the TIME_WAIT states

jsmitchell (Wed, 14 Jun 2017 13:51:31 GMT):
I then recommend you delete your sawtooth data directory and follow the steps to create a genesis block and start the validator

jsmitchell (Wed, 14 Jun 2017 13:52:15 GMT):
@MaxineLandon we also provide docker containers which should make this process easier depending on your use case

GhadiShayban (Wed, 14 Jun 2017 13:52:58 GMT):
Good morning -- what are the principles / limits around transaction family performance? Specifically what's the SLA on `apply(transaction, state)`

GhadiShayban (Wed, 14 Jun 2017 13:52:58 GMT):
Good morning -- what are the principles / limits around transaction family performance? Specifically what's the SLA on `apply(transaction, state)`?

jsmitchell (Wed, 14 Jun 2017 13:54:36 GMT):
@GhadiShayban we are spinning up some benchmarking efforts to begin quantifying and tuning the system

jsmitchell (Wed, 14 Jun 2017 13:55:01 GMT):
@GhadiShayban and a big feature of sawtooth is parallel execution of transactions, which is currently in progress

GhadiShayban (Wed, 14 Jun 2017 13:55:12 GMT):
...can I make a 1-second HTTP call?

jsmitchell (Wed, 14 Jun 2017 13:55:24 GMT):
from a transaction processor?

jsmitchell (Wed, 14 Jun 2017 13:55:43 GMT):
how will you ensure the result is deterministic?

GhadiShayban (Wed, 14 Jun 2017 13:56:05 GMT):
idempotent call?

jsmitchell (Wed, 14 Jun 2017 13:56:27 GMT):
what if the http service goes away in the near future?

jsmitchell (Wed, 14 Jun 2017 13:56:39 GMT):
how will validators catching up on the block chain validate transactions?

GhadiShayban (Wed, 14 Jun 2017 13:57:14 GMT):
ok so that's a no go. Poll on the state instead?

GhadiShayban (Wed, 14 Jun 2017 13:57:22 GMT):
(Thanks, this is helpful)

jsmitchell (Wed, 14 Jun 2017 13:57:44 GMT):
can you give me a sense of the problem you are trying to solve?

GhadiShayban (Wed, 14 Jun 2017 14:00:11 GMT):
reading URLs from transactions and caching them off-chain.

GhadiShayban (Wed, 14 Jun 2017 14:01:04 GMT):
I thought that maybe I could notify externally in the TP rather than polling from the outside in

jsmitchell (Wed, 14 Jun 2017 14:01:14 GMT):
Ok, so the transaction contains a url in a payload, and you are storing the url in global state?

GhadiShayban (Wed, 14 Jun 2017 14:01:18 GMT):
yes

jsmitchell (Wed, 14 Jun 2017 14:01:39 GMT):
ok, what's your namespace addressing scheme?

jsmitchell (Wed, 14 Jun 2017 14:02:31 GMT):
so, you want to take some action when new urls arrive in state to snarf that content and store it somewhere off-chain?

adamludvik (Wed, 14 Jun 2017 14:02:35 GMT):
@zac @Jakey3, @lulw is correct, that docker-compose file is bad and needs updating.

Dan (Wed, 14 Jun 2017 14:03:25 GMT):
@toddojala maybe you can DM with @MaximeLandon and make sure the 3 docs he mentions are consistent. Please also make sure we have clear directions for restarting a validator and using an existing data directory.

jsmitchell (Wed, 14 Jun 2017 14:03:52 GMT):
@pschwarz is the state delta processing stuff in a usable condition for @GhadiShayban's needs?

jsmitchell (Wed, 14 Jun 2017 14:04:24 GMT):
@GhadiShayban we have a mechanism that might be usable for this

jsmitchell (Wed, 14 Jun 2017 14:04:30 GMT):
instead of polling

pschwarz (Wed, 14 Jun 2017 14:05:05 GMT):
I would say yes

jsmitchell (Wed, 14 Jun 2017 14:05:11 GMT):
essentially you would write a little client that would subscribe to state changes under your namespace and then you could snarf content down

jsmitchell (Wed, 14 Jun 2017 14:05:17 GMT):
it would be slick

pschwarz (Wed, 14 Jun 2017 14:05:23 GMT):
Though, we don't have an example, yet, of how to use it.

pschwarz (Wed, 14 Jun 2017 14:06:04 GMT):
We should perhaps prioritize getting the architecture docs for that out there soon, with, at least, the client-side suggestions on what to do with the data

jsmitchell (Wed, 14 Jun 2017 14:06:38 GMT):
@GhadiShayban are you interested in helping prove this out?

GhadiShayban (Wed, 14 Jun 2017 14:11:27 GMT):
Absolutely

GhadiShayban (Wed, 14 Jun 2017 14:12:01 GMT):
so it's a scoped subscription?

jsmitchell (Wed, 14 Jun 2017 14:12:12 GMT):
yeah, basically

jsmitchell (Wed, 14 Jun 2017 14:12:29 GMT):
@pschwarz designed/implemented it, so he can explain :)

GhadiShayban (Wed, 14 Jun 2017 14:13:22 GMT):
That sounds like a useful / necessary piece to this

pschwarz (Wed, 14 Jun 2017 14:18:15 GMT):
The subscriptions are scoped by global state address prefixes

pschwarz (Wed, 14 Jun 2017 14:19:06 GMT):
This can be the namespace, or if you have some clever addressing scheme to differentiate between objects, you can use the large prefixes to subscribe to specific objects

pschwarz (Wed, 14 Jun 2017 14:20:14 GMT):
The one area that is a little difficult to work with on this is that we don't have easy sdk support for it yet

GhadiShayban (Wed, 14 Jun 2017 14:20:17 GMT):
can a subscribing client request a start transaction? (_a la_ kafka cursor)

pschwarz (Wed, 14 Jun 2017 14:20:30 GMT):
Not sure what you mean by that

GhadiShayban (Wed, 14 Jun 2017 14:20:58 GMT):
can a client say "start publishing me state deltas but starting at this point in time"

GhadiShayban (Wed, 14 Jun 2017 14:21:18 GMT):
and what happens when the client walks away and comes back

GhadiShayban (Wed, 14 Jun 2017 14:21:37 GMT):
can you guarantee that all deltas will be seen at least once?

pschwarz (Wed, 14 Jun 2017 14:21:46 GMT):
It can do that

GhadiShayban (Wed, 14 Jun 2017 14:21:59 GMT):
awesome

pschwarz (Wed, 14 Jun 2017 14:22:42 GMT):
You basically tell the validator what the last block's delta (by block signature) the client saw, and it will provide you with the deltas that have happened in the interim

pschwarz (Wed, 14 Jun 2017 14:23:11 GMT):
To trigger a start and stop of a specific subscription, you'd have to do something clever with subscriptions, though

pschwarz (Wed, 14 Jun 2017 14:23:31 GMT):
It's not aware of any changes other than block changes, and the associated deltas

pschwarz (Wed, 14 Jun 2017 14:24:12 GMT):
All of the subscriptions are currently handled over the ZMQ interconnect

pschwarz (Wed, 14 Jun 2017 14:24:31 GMT):
We have an open task to provide them over a websocket that is in the backlog

Dan (Wed, 14 Jun 2017 14:32:16 GMT):
So today you run a validator locally, and the sub service runs as a separate process on that same machine?

pschwarz (Wed, 14 Jun 2017 14:33:16 GMT):
Right

GhadiShayban (Wed, 14 Jun 2017 14:39:31 GMT):
http?

GhadiShayban (Wed, 14 Jun 2017 14:40:10 GMT):
or zmq @pschwarz

pschwarz (Wed, 14 Jun 2017 14:40:31 GMT):
ZMQ

pschwarz (Wed, 14 Jun 2017 14:40:58 GMT):
I have a sample application in clojure that I will open up on github

GhadiShayban (Wed, 14 Jun 2017 14:41:08 GMT):
oh snap!

pschwarz (Wed, 14 Jun 2017 14:41:28 GMT):
I need to tidy it up a bit, but I can get that opened up later today

toddojala (Wed, 14 Jun 2017 14:41:33 GMT):
@Dan Yes!

GhadiShayban (Wed, 14 Jun 2017 14:41:34 GMT):
i'm a longtime clojure contributor (helped develop core.async)

pschwarz (Wed, 14 Jun 2017 14:41:45 GMT):
Nice!

GhadiShayban (Wed, 14 Jun 2017 14:43:05 GMT):
so you must be responsible for that om.next app in 0.7

jsmitchell (Wed, 14 Jun 2017 14:43:28 GMT):
yes, he is the "responsible party"

toddojala (Wed, 14 Jun 2017 14:43:35 GMT):
@MaximeLandon I'm going to read your message a few times and get back to you with some helpful info. Our docs are being added to and improved all the time, but I think I can give you some help today to smooth out your issues.

jsmitchell (Wed, 14 Jun 2017 14:43:54 GMT):
he and @zac

GhadiShayban (Wed, 14 Jun 2017 14:46:29 GMT):
Btw, thanks for the pointer on bitcoin4j. I'm trying to sign and submit transactions from Clojure in my copious free time. The sig formats (bitcoin's, not sawtooth's) are soooo baroque

pschwarz (Wed, 14 Jun 2017 14:57:21 GMT):
Not om.next, just om - I haven't yet had a chance to wrap my brain around om.next

pschwarz (Wed, 14 Jun 2017 14:57:28 GMT):
But yes, that was me :)

jsmitchell (Wed, 14 Jun 2017 15:04:20 GMT):
@casualuser which tools are you referring to?

kelly_ (Wed, 14 Jun 2017 15:50:55 GMT):
@casualuser if you are looking for some of the UIs associated with content on 01.org/sawtooth (e.g. the bond demo), it is on the 0.7 branch of sawtooth

toddojala (Wed, 14 Jun 2017 15:54:05 GMT):
@MaximeLandon I am going to do some testing to try to reproduce your issues, but here's some quick things to try: (1) If you stop your validator, you should delete the data directory before trying to start another validator. The data directory should be located here, although in some types of environments it is elsewhere: /var/lib/sawtooth/

toddojala (Wed, 14 Jun 2017 15:54:05 GMT):
@MaximeLandon I am going to do some testing to try to reproduce your issues, but here's some quick things to try: (1) If you stop your validator, you should delete the files in the data directory before trying to start another validator. The data directory should be located here, although in some types of environments it is elsewhere: /var/lib/sawtooth/

toddojala (Wed, 14 Jun 2017 15:55:47 GMT):
@MaximeLandon Regarding the problem you ran into, where the "address was already in use," make sure that none of the components were still running. Try the command "ps -ef | grep python", and look for any Sawtooth components that might be running.

toddojala (Wed, 14 Jun 2017 15:58:56 GMT):
@MaximeLandon Regarding versions of the docs, there are three versions available: (1) Latest release (2) Master (3) Version 0.7 . You can choose the version you want from the drop-down that is available when you go to the docs. Version 0.7 is not really applicable to you. I would suggest trying Master, as it has the very latest changes to the docs (but it might not be compatible with the latest docker images, etc.)

MaximeLandon (Wed, 14 Jun 2017 16:23:03 GMT):
@toddojala A million of thanks for your answer !!! I will try that tonight and come back to tell if success or failure !! Thanks

toddojala (Wed, 14 Jun 2017 16:35:23 GMT):
@MaximeLandon Great. And I may have more info or tips soon.

JonathanLevi (Wed, 14 Jun 2017 16:58:34 GMT):
Dear Sawtooth people, do you mind giving the below a quick try (and let me know if there are issues). It was done very quickly, and not really intended to be the next chess.com ;-) This runs on top of Sawtooth 0.8, and we have exposed a REST API that is used to generate an image for each game id that is stored as Sawtooth's "global state": http://dutchess.hacera.com/

JonathanLevi (Wed, 14 Jun 2017 16:59:28 GMT):
Of course we need to beef it up with all the legal stuff, terms & conditions, privacy, etc... it was uploaded very quickly, just for a quick "sanity check" / moves validation.

JonathanLevi (Wed, 14 Jun 2017 17:00:23 GMT):
Thanks in advance!

boydjohnson (Wed, 14 Jun 2017 17:01:26 GMT):
Wow! @JonathanLevi This looks great.

JonathanLevi (Wed, 14 Jun 2017 17:01:32 GMT):
This is the original code we used to win to Coindesk hackathon at Consensus 2017. Thanks in advance

boydjohnson (Wed, 14 Jun 2017 17:02:11 GMT):
My understanding is that it isn't just sawtooth, but integrates other blockchains. Is that right?

JonathanLevi (Wed, 14 Jun 2017 17:02:27 GMT):
Easier to try it with two browsers/identities (as we generate the (signing) keys that we use to sign the ST transactions)

JonathanLevi (Wed, 14 Jun 2017 17:03:25 GMT):
Yes, the full demo includes/included the smart contract with the funds... this is just the Chess component that the plays are using to play the game

JonathanLevi (Wed, 14 Jun 2017 17:03:53 GMT):
And later on, the "Rating Agent" is querying, in order to issue a "winning certificate" for releasing the funds (in ETH)

JonathanLevi (Wed, 14 Jun 2017 17:03:53 GMT):
And later on, the "Rating/Ranking Agent" is querying, in order to issue a "winning certificate" for releasing the funds (in ETH)

zac (Wed, 14 Jun 2017 17:06:55 GMT):
Thanks for the tip @lulw! Looks like that was fixed by Kapil Sachdeva four days ago in this commit: https://github.com/hyperledger/sawtooth-core/commit/9c983ee725d03b4efe90334f45230fb850356ec That fix didn't make it into the official build a week ago, but we just pushed a patch so, anyone following the Docker tutorial from now on should get a docker compose file without the typo.

zac (Wed, 14 Jun 2017 17:07:51 GMT):
@Jakey3 Can you try the tutorial again with a new Docker, and let me know if you are still having issues?

zac (Wed, 14 Jun 2017 17:20:54 GMT):
@GhadiShayban My first day on Sawtooth: @pschwarz: _"What do you do?"_ Me: "Mostly Angular, Node, a bit of React, etc." @pschwarz: _"Great. Forget all that. You're using ClojureScript."_

zac (Wed, 14 Jun 2017 17:20:54 GMT):
@GhadiShayban My first day on Sawtooth: @pschwarz: _"What do you do?"_ *Me:* "Mostly Angular, Node, a bit of React, etc." @pschwarz: _"Great. Forget all that. You're using ClojureScript."_

zac (Wed, 14 Jun 2017 17:33:09 GMT):
@JonathanLevi Whoa! Very cool.

zac (Wed, 14 Jun 2017 17:33:22 GMT):
Does move validation happen in the Transaction Processor?

JonathanLevi (Wed, 14 Jun 2017 17:33:28 GMT):
Yes

JonathanLevi (Wed, 14 Jun 2017 17:33:33 GMT):
(thank you)

zac (Wed, 14 Jun 2017 17:33:36 GMT):
Nice

JonathanLevi (Wed, 14 Jun 2017 17:33:46 GMT):
So for example, I can look at a game... and try to make a move.

JonathanLevi (Wed, 14 Jun 2017 17:34:41 GMT):
But if I'm not one of the players.... the TP should not accept it, as it is signed with MY key.. and not with the key of one of the two players.

JonathanLevi (Wed, 14 Jun 2017 17:34:55 GMT):
Same goes for an illegal move by a "legal" player.

JonathanLevi (Wed, 14 Jun 2017 17:35:25 GMT):
We plugged in a Python library that simply checks every move "attempt" given the current "state" of the "board"

JonathanLevi (Wed, 14 Jun 2017 17:35:40 GMT):
Again, done pretty hastily... but really followed the xo example.

zac (Wed, 14 Jun 2017 17:36:08 GMT):
Yeah, it's very neat

zac (Wed, 14 Jun 2017 17:36:49 GMT):
A good demo of what you can whip up with Sawtooth pretty quickly

jsmitchell (Wed, 14 Jun 2017 17:38:05 GMT):
@JonathanLevi I'm having trouble making a move

zac (Wed, 14 Jun 2017 17:38:26 GMT):
Did you input a move?

zac (Wed, 14 Jun 2017 17:38:31 GMT):
I ran into this problem

jsmitchell (Wed, 14 Jun 2017 17:38:35 GMT):
yeah, i did "e2e4"

JonathanLevi (Wed, 14 Jun 2017 17:38:36 GMT):
Try *e2e4*

JonathanLevi (Wed, 14 Jun 2017 17:38:45 GMT):
In text. Sorry, the image is really static.

jsmitchell (Wed, 14 Jun 2017 17:39:04 GMT):
the Make move button lit up, but nothing seemed to happen when I clicked on it

zac (Wed, 14 Jun 2017 17:39:41 GMT):
There is no popup if a move is illegal and/or the transaction is bad

jsmitchell (Wed, 14 Jun 2017 17:39:48 GMT):
it's a valid move

zac (Wed, 14 Jun 2017 17:39:49 GMT):
Might be you are submitting with the wrong key

jsmitchell (Wed, 14 Jun 2017 17:40:08 GMT):
I am listed as the player I am trying to move for

zac (Wed, 14 Jun 2017 17:40:29 GMT):
I did it with one player in Chrome and one player in Safari and it worked

zac (Wed, 14 Jun 2017 17:40:39 GMT):
Not sure how the keys are being stored

jsmitchell (Wed, 14 Jun 2017 17:41:25 GMT):
I used the same username in safari, and it gave me a different token in the upper left. Is that bad @JonathanLevi ?

JonathanLevi (Wed, 14 Jun 2017 17:42:50 GMT):
Nope, that's fine. I have disabled the token at this point

JonathanLevi (Wed, 14 Jun 2017 17:43:03 GMT):
The token is an ID token (that was registered elsewhere)

JonathanLevi (Wed, 14 Jun 2017 17:43:15 GMT):
Some crazy identity "sci-fi" trick ;-)

JonathanLevi (Wed, 14 Jun 2017 17:43:45 GMT):
You may ignore it. We may end up hiding it.

JonathanLevi (Wed, 14 Jun 2017 17:43:53 GMT):
(Thanks for checking)

jsmitchell (Wed, 14 Jun 2017 17:44:01 GMT):
I still can't 'make move' in either browser

JonathanLevi (Wed, 14 Jun 2017 17:44:14 GMT):
Screenshot? (privately, if you prefer)

jsmitchell (Wed, 14 Jun 2017 17:44:59 GMT):

Message Attachments

jsmitchell (Wed, 14 Jun 2017 17:45:19 GMT):
so, "Make move" is highlighted, but clicking on it has no effect

JonathanLevi (Wed, 14 Jun 2017 17:46:08 GMT):

Message Attachments

jsmitchell (Wed, 14 Jun 2017 17:46:21 GMT):
yeah, that's what i did

JonathanLevi (Wed, 14 Jun 2017 17:46:31 GMT):
Are you sure that browser is the White?

jsmitchell (Wed, 14 Jun 2017 17:46:36 GMT):
yeah

jsmitchell (Wed, 14 Jun 2017 17:46:50 GMT):
i created the game best_game_ever

jsmitchell (Wed, 14 Jun 2017 17:46:55 GMT):
made myself the white player

jsmitchell (Wed, 14 Jun 2017 17:47:02 GMT):
and then tried to move e2e4

JonathanLevi (Wed, 14 Jun 2017 17:47:15 GMT):
OK, I joined. Try now?

JonathanLevi (Wed, 14 Jun 2017 17:47:21 GMT):
Before, there was only one player.

jsmitchell (Wed, 14 Jun 2017 17:47:25 GMT):
ahhhhh

jsmitchell (Wed, 14 Jun 2017 17:47:29 GMT):
that is non obvious

jsmitchell (Wed, 14 Jun 2017 17:47:37 GMT):
SUPER COOL

JonathanLevi (Wed, 14 Jun 2017 17:47:43 GMT):
Ha ha ;-)

JonathanLevi (Wed, 14 Jun 2017 17:47:59 GMT):
You can't place a transaction without 2 players joining.

jsmitchell (Wed, 14 Jun 2017 17:48:25 GMT):
You should add some kind of note to that effect

JonathanLevi (Wed, 14 Jun 2017 17:48:36 GMT):
Are you sure you wanted to move that Queen?

JonathanLevi (Wed, 14 Jun 2017 17:48:45 GMT):
You know this chain is immutable ;-))))

jsmitchell (Wed, 14 Jun 2017 17:48:47 GMT):
heh

jsmitchell (Wed, 14 Jun 2017 17:49:21 GMT):
the commits are nice and fast

jsmitchell (Wed, 14 Jun 2017 17:49:25 GMT):
what consensus are you using?

amundson (Wed, 14 Jun 2017 18:08:22 GMT):
I'm not sure I like that my bad moves are on-chain now

amundson (Wed, 14 Jun 2017 18:09:11 GMT):
@JonathanLevi super cool

JonathanLevi (Wed, 14 Jun 2017 18:09:26 GMT):
Ha ha ;-)

JonathanLevi (Wed, 14 Jun 2017 18:09:47 GMT):
Sorry, I was on a call (and do not have the hardware for multitasking)

JonathanLevi (Wed, 14 Jun 2017 18:10:10 GMT):
@jsmitchell It's running in dev mode, so we "trust" the TP

JonathanLevi (Wed, 14 Jun 2017 18:10:23 GMT):
I know, I know - but hey, it's a hack-athon ;-)

JonathanLevi (Wed, 14 Jun 2017 18:10:49 GMT):
Once fabric 1.0 is out, I will be happy to extend it and have a proper consensus there.

JonathanLevi (Wed, 14 Jun 2017 18:12:00 GMT):
Maybe a POeT like, (waiting) time penalty, or something that's more like a "Blitz" game with rate limit...

JonathanLevi (Wed, 14 Jun 2017 18:12:12 GMT):
Not sure, open to ideas.

JonathanLevi (Wed, 14 Jun 2017 18:12:56 GMT):
Should open source the entire thing, with all the legal disclaimers, etc.

JonathanLevi (Wed, 14 Jun 2017 18:13:10 GMT):
That night, it was mostly "hacking" the apply method.

JonathanLevi (Wed, 14 Jun 2017 18:14:14 GMT):
@amundson - Yes, I hear you. I can try to create a user on your behalf, and replay a Kasparov game... if need be.

Jakey3 (Wed, 14 Jun 2017 18:18:19 GMT):
I beleive I found a typo on the docker implementation of sawtooth

Jakey3 (Wed, 14 Jun 2017 18:18:19 GMT):
I believe I found a typo on the docker implementation of sawtooth

Jakey3 (Wed, 14 Jun 2017 18:18:28 GMT):
*believe

Jakey3 (Wed, 14 Jun 2017 18:19:22 GMT):
how do you get changes in the documentation?

Jakey3 (Wed, 14 Jun 2017 18:20:31 GMT):
docker compose file

Jakey3 (Wed, 14 Jun 2017 18:20:47 GMT):
https://intelledger.github.io/app_developers_guide/sawtooth-default.yaml

jsmitchell (Wed, 14 Jun 2017 18:21:01 GMT):
@zac ^

Jakey3 (Wed, 14 Jun 2017 18:21:53 GMT):
line 76: should read entrypoint: rest_api --connect tcp://validator:40000 --bind rest_api:8080

Jakey3 (Wed, 14 Jun 2017 18:22:09 GMT):
with --bind rather than -bind

Jakey3 (Wed, 14 Jun 2017 18:24:54 GMT):
looks like it has been solved

jsmitchell (Wed, 14 Jun 2017 18:27:27 GMT):
yep, just this morning i think

zac (Wed, 14 Jun 2017 18:32:16 GMT):
@Jakey3 Yes, fixed this morning. Hopefully that solves your issue, but let me know if not.

Jakey3 (Wed, 14 Jun 2017 18:55:34 GMT):
cool

pschwarz (Wed, 14 Jun 2017 18:57:59 GMT):
Big change going in, with PR 630 (https://github.com/hyperledger/sawtooth-core/pull/630): The sawtooth config transaction family is being renamed to "sawtooth settings". This effects some external facing components like: - `tp_config` is now `tp_settings` - on-chain settings keys for the family have changed from `sawtooth.config.*` to `sawtooth.settings.*` - systemd service is `sawtooth-tp_settings` Settings are still changed via the `config` cli subcommand (e.g. `sawtooth config proposal create`). This command may move in the future.

Jakey3 (Wed, 14 Jun 2017 19:24:16 GMT):
other than the sawtooth docs https://intelledger.github.io/contents.html is there an explanation of the sawtooth architecture?

zac (Wed, 14 Jun 2017 19:30:08 GMT):
A document covering a high-level overview of the architecture is planned, but not yet written. I would expect it fairly soon. Probably some number of weeks.

zac (Wed, 14 Jun 2017 19:30:54 GMT):
In terms of what is written now, the architecture section currently covers some specific components, and the introduction gets at all of the big ideas.

jsmitchell (Wed, 14 Jun 2017 19:58:13 GMT):
@Jakey3 do you have any questions we can help answer?

kelly_ (Wed, 14 Jun 2017 20:11:11 GMT):

Message Attachments

kelly_ (Wed, 14 Jun 2017 20:15:17 GMT):
@Jakey3 also some info here ^

Jakey3 (Wed, 14 Jun 2017 20:55:00 GMT):
@kelly_ thanks

MaximeLandon (Wed, 14 Jun 2017 23:23:29 GMT):
Hello again everyone, @pschwarz I just reinstalled sawtooth and when I type tp_settings the console outputs tp_settings: command not found. If you have any clue why I will be glad to hear it ! ;)

j3ffyang (Thu, 15 Jun 2017 03:27:57 GMT):
Has joined the channel.

boydjohnson (Thu, 15 Jun 2017 12:44:01 GMT):
@MaximeLandon I would guess that the latest release doesn't include the changes from tp_config -> tp_settings; only the master branch of the repo does.

LoubnaBaroudi (Thu, 15 Jun 2017 12:45:01 GMT):
Has joined the channel.

LoubnaBaroudi (Thu, 15 Jun 2017 12:47:41 GMT):
Hello everyone, I've tried to build and submit a transaction with the pyhton3 tutorial but I keep getting the same error message : Batch invalid, not added to block. If anyone have an idea, I'm really stuck!! Thank you

boydjohnson (Thu, 15 Jun 2017 12:48:45 GMT):
Hi @LoubnaBaroudi can you provide more of the logging?

boydjohnson (Thu, 15 Jun 2017 12:50:56 GMT):
@LoubnaBaroudi Was it with the XO client?

LoubnaBaroudi (Thu, 15 Jun 2017 12:51:12 GMT):
No it's just an inkey transaction

boydjohnson (Thu, 15 Jun 2017 12:51:25 GMT):
Ok, thanks.

boydjohnson (Thu, 15 Jun 2017 12:52:31 GMT):
Ah, it was where you build the transaction yourself.

LoubnaBaroudi (Thu, 15 Jun 2017 12:52:46 GMT):
Yes

boydjohnson (Thu, 15 Jun 2017 12:54:28 GMT):
What level of logging did you have on the validator?

LoubnaBaroudi (Thu, 15 Jun 2017 12:56:39 GMT):
[14:50:54.558 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1826 bytes [14:50:54.562 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'20c14f6de666464f' [14:50:54.678 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'd5e9ac40a3fb4749' [14:50:54.684 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 177 bytes [14:50:54.692 DEBUG tp_state_handlers] GET: [('1cf1262a6de389a4325cc3cb0cda7202d6620d8d770501c10ecaab2ffbfabdc1af55ef', None)] [14:50:54.693 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'd5e9ac40a3fb4749' [14:50:54.695 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 73 bytes [14:50:54.695 DEBUG publisher] Batch 3176b4b257790b19e63cd9210d60b26bce25277003f492265f97659c4392497548c5bd000fc813335dc2810a5b96404a7fe5290f88075ca9ef05e28e3ce737a6 invalid, not added to block. [14:50:54.695 DEBUG publisher] Abandoning block (8, S:, P:9725739c): no batches added [14:50:54.696 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.01717996597290039

LoubnaBaroudi (Thu, 15 Jun 2017 12:56:54 GMT):
here is what I get when I launch the program

boydjohnson (Thu, 15 Jun 2017 12:57:38 GMT):
Did you have an intkey transaction processor attached to the validator? Like tp_intkey_python?

LoubnaBaroudi (Thu, 15 Jun 2017 12:57:49 GMT):
yes

boydjohnson (Thu, 15 Jun 2017 12:57:57 GMT):
Did that log?

LoubnaBaroudi (Thu, 15 Jun 2017 13:00:54 GMT):
ok I repared the mistake it was just a simple mistake : I've written a dec transaction instead of a set

LoubnaBaroudi (Thu, 15 Jun 2017 13:01:11 GMT):
Thank you though!!!

boydjohnson (Thu, 15 Jun 2017 13:01:57 GMT):
Yay! No problem.

LoubnaBaroudi (Thu, 15 Jun 2017 13:19:28 GMT):
@boydjohnson When I launch my program, a block is created and validated but I just wanted to create a state. Do you know how can I do to submit my batch to the validator without having it put in a block?

boydjohnson (Thu, 15 Jun 2017 13:20:07 GMT):
Ah, My understanding is that they are one and the same. The only thing that is is state is what is in the block.

LoubnaBaroudi (Thu, 15 Jun 2017 13:20:50 GMT):
But how can I increment or decrement the value I've juste setted if it's not in the state list?

boydjohnson (Thu, 15 Jun 2017 13:21:12 GMT):
If it is in the block it should be in the state.

boydjohnson (Thu, 15 Jun 2017 13:21:29 GMT):
Does the inc or dec transaction fail?

LoubnaBaroudi (Thu, 15 Jun 2017 13:21:58 GMT):
yes

LoubnaBaroudi (Thu, 15 Jun 2017 13:23:51 GMT):
The Error is : Invalid Transaction Verb is "dec" but name "Transaction" not in state

boydjohnson (Thu, 15 Jun 2017 13:24:35 GMT):
What does 'sawtooth state list' get you?

LoubnaBaroudi (Thu, 15 Jun 2017 13:25:13 GMT):
the samples provided by sawtooth but not the state of my transaction

LoubnaBaroudi (Thu, 15 Jun 2017 13:25:23 GMT):
I've searched for it already

boydjohnson (Thu, 15 Jun 2017 13:26:45 GMT):
Hmmm. What happens if you submit the set transaction again?

LoubnaBaroudi (Thu, 15 Jun 2017 13:27:45 GMT):
it works again, creating a new block

LoubnaBaroudi (Thu, 15 Jun 2017 13:28:10 GMT):
no the same block as before sorry

jsmitchell (Thu, 15 Jun 2017 13:28:30 GMT):
Name "Transaction" not in state is a clue

jsmitchell (Thu, 15 Jun 2017 13:29:31 GMT):
An intkey transaction has three elements, the variable name, the action verb, and an integer value.

jsmitchell (Thu, 15 Jun 2017 13:29:54 GMT):
If you are doing the action verb "set", you can use a new variable name

jsmitchell (Thu, 15 Jun 2017 13:30:18 GMT):
If you are doing either inc or dec, you must use an existing name that is in state

jsmitchell (Thu, 15 Jun 2017 13:30:50 GMT):
@boydjohnson isn't there an intkey show command?

jsmitchell (Thu, 15 Jun 2017 13:31:07 GMT):
Or list

LoubnaBaroudi (Thu, 15 Jun 2017 13:31:08 GMT):
yes I know, I use the same name for inc

boydjohnson (Thu, 15 Jun 2017 13:31:30 GMT):
@jsmitchell There isn't an intkey show or list, but only the 'sawtooth state list'.

jsmitchell (Thu, 15 Jun 2017 13:31:31 GMT):
But the error is; name "Transaction" not in state.

boydjohnson (Thu, 15 Jun 2017 13:32:29 GMT):
https://jira.hyperledger.org/browse/STL-277 This is the jira for intkey show and list.

LoubnaBaroudi (Thu, 15 Jun 2017 13:32:50 GMT):
@jsmitchell yes this is what I don't understand

jsmitchell (Thu, 15 Jun 2017 13:32:51 GMT):
Did you call your variable Transaction in the set?

jsmitchell (Thu, 15 Jun 2017 13:33:05 GMT):
Copy and paste the commands that you are executing

LoubnaBaroudi (Thu, 15 Jun 2017 13:35:44 GMT):
key_handler = secp256k1.PrivateKey() private_key_bytes = key_handler.private_key public_key_bytes = key_handler.pubkey.serialize() public_key_hex = public_key_bytes.hex() payload = { 'Verb' : 'set', 'Name' : 'Transaction', 'Value' : 1} #encoding payload_bytes = cbor.dumps(payload) #Creating a SHA-512 Payload Hash payload_sha512 = sha512(payload_bytes).hexdigest() #TransactionHeader txn_header = TransactionHeader( batcher_pubkey=public_key_hex, #dependencies # dependencies=['34b90dc789d0ccb48b7a9f04bef191e9e7216d6cea6ccf21442dba1f3bb8d2147aeb24a46581e9091030cf7fae63536353578b65b723a4c836c8180a55daa463'], family_name='intkey', family_version='1.0', inputs="1cf126"+hashlib.sha512("GCertificate".encode('utf-8')).hexdigest(), #state addresses that this Transaction is alloawed to read from nonce=str(randint(0,1000000000)), outputs="1cf126"+hashlib.sha512("Gcertificate".encode('utf-8')).hexdigest(), ##state addresses that this Transaction is alloawed to write from payload_encoding='application/cbor', payload_sha512=payload_sha512, signer_pubkey=public_key_hex) txn_header_bytes=txn_header.SerializeToString() #sign the header in order to generate a signature the Sawtooth validator will accept : ECDSA signature key_handler=secp256k1.PrivateKey(private_key_bytes) txn_signature = key_handler.ecdsa_sign(txn_header_bytes) txn_signature_bytes=key_handler.ecdsa_serialize_compact(txn_signature) txn_signature_hex = txn_signature_bytes.hex() #print(txn_signature_hex) #Create the Transaction txn= Transaction( header=txn_header_bytes, header_signature=txn_signature_hex, payload=payload_bytes) #You can encode the transaction but it's optional txnList=TransactionList(transactions=[txn]) txnBytes=txnList.SerializeToString() #print(txnBytes) #The Batch #decode the transaction(if encode) txnList=TransactionList() txnList.ParseFromString(txnBytes) txn = txnList.transactions[0] #create the BatchHeader batch_header = BatchHeader( signer_pubkey=public_key_hex, transaction_ids=[txn.header_signature]) batch_header_bytes = batch_header.SerializeToString() #sign the Header batch_signature = key_handler.ecdsa_sign(batch_header_bytes) batch_signature_bytes = key_handler.ecdsa_serialize_compact(batch_signature) batch_signature_hex = batch_signature_bytes.hex() #create the batch batch=Batch( header=batch_header_bytes, header_signature=batch_signature_hex, transactions=[txn]) #encode the batch batch_list = BatchList(batches=[batch]) batch_bytes = batch_list.SerializeToString() #Submit to the validator try: request = urllib.request.Request( 'http://127.0.0.1:8080/batches', batch_bytes, method='POST', headers={'Content-Type':'application/octet-stream'}) response = urllib.request.urlopen(request) except HTTPError as e: response = e.file

boydjohnson (Thu, 15 Jun 2017 13:35:47 GMT):
@LoubnaBaroudi @jsmitchell I have to go, but I'll be back on later.

LoubnaBaroudi (Thu, 15 Jun 2017 13:36:05 GMT):
ok thank you @boydjohnson

LoubnaBaroudi (Thu, 15 Jun 2017 13:36:16 GMT):
I've not pasted all the import commands

jsmitchell (Thu, 15 Jun 2017 13:37:34 GMT):
Those aren't commands. That's python code.

LoubnaBaroudi (Thu, 15 Jun 2017 13:38:06 GMT):
That's what I execute

jsmitchell (Thu, 15 Jun 2017 13:38:13 GMT):
Are you following a tutorial and executing intkey commands on the command line?

LoubnaBaroudi (Thu, 15 Jun 2017 13:38:46 GMT):
Yes but the error I get with the inc etc are for this python program

LoubnaBaroudi (Thu, 15 Jun 2017 13:38:59 GMT):
I've already done the tutorial

jsmitchell (Thu, 15 Jun 2017 13:39:15 GMT):
Is this code that you wrote?

LoubnaBaroudi (Thu, 15 Jun 2017 13:40:16 GMT):
yes but it's quit the same as the one in the "Writing Clients with the REST API" part

LoubnaBaroudi (Thu, 15 Jun 2017 13:41:06 GMT):
https://intelledger.github.io/_autogen/txn_submit_tutorial_python.html

jsmitchell (Thu, 15 Jun 2017 13:42:43 GMT):
In inputs and outputs you are using a name of GCCertificate

jsmitchell (Thu, 15 Jun 2017 13:43:46 GMT):
Or GCertificate in one and Gcertificate in the other

LoubnaBaroudi (Thu, 15 Jun 2017 13:44:04 GMT):
with both just 'x' it doesn't work either

jsmitchell (Thu, 15 Jun 2017 13:44:12 GMT):
And in the transaction payload you are using the name "Transaction"

jsmitchell (Thu, 15 Jun 2017 13:44:19 GMT):
All three must match

jsmitchell (Thu, 15 Jun 2017 13:44:53 GMT):
I have to drop off for a bit. Be back soon.

LoubnaBaroudi (Thu, 15 Jun 2017 13:45:02 GMT):
ok

LoubnaBaroudi (Thu, 15 Jun 2017 13:45:15 GMT):
the error is still there :)

agunde (Thu, 15 Jun 2017 13:47:56 GMT):
How are you sending the inc transaction?

LoubnaBaroudi (Thu, 15 Jun 2017 13:48:38 GMT):
just when I run my program there is a rest api command to send the transaction to the validator

LoubnaBaroudi (Thu, 15 Jun 2017 13:48:54 GMT):
at the en of the python script

pschwarz (Thu, 15 Jun 2017 13:56:33 GMT):
@MaximeLandon `tp_settings` would be in the unstable builds - It's not in the stable release as of yet (next one).

jsmitchell (Thu, 15 Jun 2017 14:22:28 GMT):
@LoubnaBaroudi ok, I'm back

jsmitchell (Thu, 15 Jun 2017 14:23:10 GMT):
what is the error from the validator and the intkey transaction processor when you run that code with a 'set' payload with name matching the input and output encoded value?

LoubnaBaroudi (Thu, 15 Jun 2017 14:23:48 GMT):
there is no error, there is one only for 'inc' and 'dec'

jsmitchell (Thu, 15 Jun 2017 14:24:24 GMT):
once you submit the set transaction, do you see a block get produced?

LoubnaBaroudi (Thu, 15 Jun 2017 14:24:31 GMT):
yes

jsmitchell (Thu, 15 Jun 2017 14:24:51 GMT):
when you run `sawtooth state list` do you see the data at that address?

LoubnaBaroudi (Thu, 15 Jun 2017 14:25:17 GMT):
yes

jsmitchell (Thu, 15 Jun 2017 14:25:35 GMT):
ok, so what are you changing to submit the 'inc' transaction?

LoubnaBaroudi (Thu, 15 Jun 2017 14:26:08 GMT):
just the Verb

LoubnaBaroudi (Thu, 15 Jun 2017 14:26:35 GMT):
with the same address or a different one the problem stays the same

jsmitchell (Thu, 15 Jun 2017 14:26:55 GMT):
what is the error you get?

LoubnaBaroudi (Thu, 15 Jun 2017 14:27:35 GMT):
[15:44:53.196 WARNING core] Invalid Transaction Verb is "inc" but name "Transaction" not in state

jsmitchell (Thu, 15 Jun 2017 14:27:49 GMT):
can you cut and paste the _exact_ code you ran to get that error?

LoubnaBaroudi (Thu, 15 Jun 2017 14:28:06 GMT):
it's the python one

jsmitchell (Thu, 15 Jun 2017 14:28:15 GMT):
the python code is wrong, as I said

LoubnaBaroudi (Thu, 15 Jun 2017 14:28:49 GMT):
I've changed what you said

jsmitchell (Thu, 15 Jun 2017 14:29:04 GMT):
can you cut and paste that _exact_ code?

LoubnaBaroudi (Thu, 15 Jun 2017 14:29:31 GMT):
key_handler = secp256k1.PrivateKey() private_key_bytes = key_handler.private_key public_key_bytes = key_handler.pubkey.serialize() public_key_hex = public_key_bytes.hex() payload = { 'Verb' : 'inc', 'Name' : 'Transaction', 'Value' : 42} #encoding payload_bytes = cbor.dumps(payload) #Creating a SHA-512 Payload Hash payload_sha512 = sha512(payload_bytes).hexdigest() #TransactionHeader txn_header = TransactionHeader( batcher_pubkey=public_key_hex, #dependencies dependencies=['34b90dc789d0ccb48b7a9f04bef191e9e7216d6cea6ccf21442dba1f3bb8d2147aeb24a46581e9091030cf7fae63536353578b65b723a4c836c8180a55daa463'], family_name='intkey', family_version='1.0', inputs="1cf126"+hashlib.sha512("Transaction".encode('utf-8')).hexdigest(), #state addresses that this Transaction is alloawed to read from nonce=str(randint(0,1000000000)), outputs="1cf126"+hashlib.sha512("Transaction".encode('utf-8')).hexdigest(), ##state addresses that this Transaction is alloawed to write from payload_encoding='application/cbor', payload_sha512=payload_sha512, signer_pubkey=public_key_hex) txn_header_bytes=txn_header.SerializeToString() #sign the header in order to generate a signature the Sawtooth validator will accept : ECDSA signature key_handler=secp256k1.PrivateKey(private_key_bytes) txn_signature = key_handler.ecdsa_sign(txn_header_bytes) txn_signature_bytes=key_handler.ecdsa_serialize_compact(txn_signature) txn_signature_hex = txn_signature_bytes.hex() #Create the Transaction txn= Transaction( header=txn_header_bytes, header_signature=txn_signature_hex, payload=payload_bytes) #You can encode the transaction but it's optional txnList=TransactionList(transactions=[txn]) txnBytes=txnList.SerializeToString() #The Batch #decode the transaction(if encode) txnList=TransactionList() txnList.ParseFromString(txnBytes) txn = txnList.transactions[0] #create the BatchHeader batch_header = BatchHeader( signer_pubkey=public_key_hex, transaction_ids=[txn.header_signature]) batch_header_bytes = batch_header.SerializeToString() #sign the Header batch_signature = key_handler.ecdsa_sign(batch_header_bytes) batch_signature_bytes = key_handler.ecdsa_serialize_compact(batch_signature) batch_signature_hex = batch_signature_bytes.hex() #create the batch batch=Batch( header=batch_header_bytes, header_signature=batch_signature_hex, transactions=[txn]) #encode the batch batch_list = BatchList(batches=[batch]) batch_bytes = batch_list.SerializeToString() #Submit to the validator try: request = urllib.request.Request( 'http://127.0.0.1:8080/batches', batch_bytes, method='POST', headers={'Content-Type':'application/octet-stream'}) response = urllib.request.urlopen(request) except HTTPError as e: response = e.file

jsmitchell (Thu, 15 Jun 2017 14:32:09 GMT):
Those input/output address formats are wrong

jsmitchell (Thu, 15 Jun 2017 14:34:03 GMT):
they should be `hashlib.sha512('intkey'.encode('utf-8')).hexdigest()[0:6] + hashlib.sha512(name.encode('utf-8')).hexdigest()[-64:]`

jsmitchell (Thu, 15 Jun 2017 14:34:37 GMT):
set name = "Transaction" prior to that

jsmitchell (Thu, 15 Jun 2017 14:34:56 GMT):
I am not convinced that your set transaction ever succeeded

LoubnaBaroudi (Thu, 15 Jun 2017 14:36:15 GMT):
same thing

agunde (Thu, 15 Jun 2017 14:36:23 GMT):
@jsmitchell It looks like we have a bug. It was able to set using his code (i changed it slightly but was seeing the same behavior.)

LoubnaBaroudi (Thu, 15 Jun 2017 14:36:28 GMT):
The set is working but not the inc

jsmitchell (Thu, 15 Jun 2017 14:36:45 GMT):
hmm

agunde (Thu, 15 Jun 2017 14:36:46 GMT):
@LoubnaBaroudi they also need to be in a list

agunde (Thu, 15 Jun 2017 14:36:59 GMT):
[hashlib.sha512('intkey'.encode('utf-8')).hexdigest()[0:6] + hashlib.sha512(name.encode('utf-8')).hexdigest()[-64:]]

LoubnaBaroudi (Thu, 15 Jun 2017 14:38:08 GMT):
I noticed that but whenever I put [ ], even the 'set' transaction fail

jsmitchell (Thu, 15 Jun 2017 14:39:24 GMT):
a string is a list

jsmitchell (Thu, 15 Jun 2017 14:39:27 GMT):
of characters

jsmitchell (Thu, 15 Jun 2017 14:40:03 GMT):
probably being treated as wildcard addresses

agunde (Thu, 15 Jun 2017 14:40:07 GMT):
inputs=["1cf126"+hashlib.sha512("Transaction".encode('utf-8')).hexdigest()[-64:]], #state addresses that this Transaction is alloawed to read from outputs=["1cf126"+hashlib.sha512("Transaction".encode('utf-8')).hexdigest()[-64:]], ##state addresses that this Transaction is alloawed to write from

jsmitchell (Thu, 15 Jun 2017 14:40:21 GMT):
which is why the set worked

agunde (Thu, 15 Jun 2017 14:40:22 GMT):
@LoubnaBaroudi This fixed it in my version of your code

agunde (Thu, 15 Jun 2017 14:40:31 GMT):
@jsmitchell yep

jsmitchell (Thu, 15 Jun 2017 14:41:39 GMT):
coercing strings to lists is one of my pet peeves with python

LoubnaBaroudi (Thu, 15 Jun 2017 14:42:48 GMT):
it doesn't work for me..

jsmitchell (Thu, 15 Jun 2017 14:43:28 GMT):
Did you redo the set?

LoubnaBaroudi (Thu, 15 Jun 2017 14:45:04 GMT):
ok it works now

jsmitchell (Thu, 15 Jun 2017 14:45:09 GMT):
yay!

LoubnaBaroudi (Thu, 15 Jun 2017 14:45:13 GMT):
Thank you!!!!!

agunde (Thu, 15 Jun 2017 14:45:17 GMT):
:thumbsup:

LoubnaBaroudi (Thu, 15 Jun 2017 14:46:22 GMT):
I was correcting the list mistake but there was still the problem of the name which didn't match the address so I was going in circles

casualuser (Thu, 15 Jun 2017 15:37:55 GMT):
greetings everyone! looking for some help with setting up "Sawtooth Bond UI Client" there is good notice about pre-seeding data for server with ./bin/btp load but it reply like this: [15:36:55 DEBUG client] waiting for transaction abbf0ed715791f92 to commit (not_found:404) any help please?

tkuhrt (Thu, 15 Jun 2017 15:56:50 GMT):
Hi, Sawtooth Community. The Linux Foundation is working on putting together an introductory training course on Hyperledger. One of the chapters in the course will be on Sawtooth. Specifically, providing an overview of Sawtooth, setting up an environment, developing and running a first application. The team is looking for some members of the community who would be willing to lend a hand with putting together some of the material and providing some expertise on the subject of Hyperledger Sawtooth. Please let me know here or DM me if you are interested and I can connect you with the right folks.

GhadiShayban (Thu, 15 Jun 2017 17:22:49 GMT):
Does there need to be a corresponding Transaction Process for every validator?

GhadiShayban (Thu, 15 Jun 2017 17:22:49 GMT):
Does there need to be a corresponding Transaction Processor for every validator?

GhadiShayban (Thu, 15 Jun 2017 17:23:45 GMT):
As in, does a three node validation network have to have 3 transaction processors for a given transaction family? (In order for all the validators to have the same global state)

amundson (Thu, 15 Jun 2017 17:34:17 GMT):
@GhadiShayban yes, that's correct. you can think of transaction processors as a component of a validator node.

tkuhrt (Thu, 15 Jun 2017 17:36:10 GMT):
I am working my way through the Application Developer's Guide again (https://intelledger.github.io/app_developers_guide/ubuntu.html). I have made it to the Start Validator section and I have two questions before proceeding. In the previous section, I needed to run the commands as root. Do I need to do the same thing for the "Start Validator" section?

tkuhrt (Thu, 15 Jun 2017 17:38:50 GMT):
Okay...my second question was going to be about the keygen step for the validator. I was wondering about the path for the keys generated, but it appears that these are different keys than the ones created for the genesis block. Thus the different directory.

GhadiShayban (Thu, 15 Jun 2017 17:39:04 GMT):
thanks @amundson

toddojala (Thu, 15 Jun 2017 17:39:10 GMT):
@tkuhrt It should not be necessary to run the validator as root, as long as the files & keys produced are readable by the user you are running the validator as.

toddojala (Thu, 15 Jun 2017 17:39:22 GMT):
We'll clarify that detail, though!

tkuhrt (Thu, 15 Jun 2017 17:40:41 GMT):
Okay. It looks like the /etc/sawtooth/keys/ directory is owned by the `sawtooth` user. And my user only has access to read from that directory.

tkuhrt (Thu, 15 Jun 2017 17:40:58 GMT):
So I either have to switch to `sawtooth` user or run as root.

toddojala (Thu, 15 Jun 2017 17:41:33 GMT):
@tkuhrt that sounds right. Again, we'll make this section more clear. So it's working for you?

tkuhrt (Thu, 15 Jun 2017 17:41:55 GMT):
So far...I will definitely post here any other problems I run across.

tkuhrt (Thu, 15 Jun 2017 17:43:20 GMT):
Okay...next error: ``` tkuhrt@sawtooth:~$ sudo validator -vv --endpoint tcp://localhost:8800 usage: validator [-h] [--config-dir CONFIG_DIR] [--network-endpoint NETWORK_ENDPOINT] [--component-endpoint COMPONENT_ENDPOINT] [--peering {static,dynamic}] --public-uri PUBLIC_URI [--join JOIN] [--peers PEERS] [-v] validator: error: the following arguments are required: --public-uri ```

tkuhrt (Thu, 15 Jun 2017 17:43:42 GMT):
maybe I need to update my package...let me try that first

toddojala (Thu, 15 Jun 2017 17:44:50 GMT):
@tkuhrt When was the last time you fetched or got the latest code? --public-uri is no longer a parameter used by validator.

toddojala (Thu, 15 Jun 2017 17:45:20 GMT):
usage: validator [-h] [--config-dir CONFIG_DIR] [-B BIND] [-P {static,dynamic}] [-E ENDPOINT] [-s SEEDS] [-p PEERS] [-v]

tkuhrt (Thu, 15 Jun 2017 17:45:57 GMT):
That is what I figured...early last week. Having trouble getting latest package because of public key issues with http://repo.sawtooth.me/ubuntu/0.8/stable. Going to dig into that.

toddojala (Thu, 15 Jun 2017 17:46:48 GMT):
@tkuhrt Are you getting the code with apt-get, or git?

tkuhrt (Thu, 15 Jun 2017 17:46:59 GMT):
apt-get

tkuhrt (Thu, 15 Jun 2017 17:51:33 GMT):
had to do the apt-key command again for some reason. Doing the apt-get update now

tkuhrt (Thu, 15 Jun 2017 17:54:49 GMT):
Is there any way to find out what version of tools I have installed (e.g., what version of validator)?

tkuhrt (Thu, 15 Jun 2017 17:56:32 GMT):
Never mind...I did a dpkg -s sawtooth and I had an older version. Got the new one now

GhadiShayban (Thu, 15 Jun 2017 17:56:52 GMT):
Just to labor the my original question the 1:1 validation:transaction processor applies all the time, right? As in, is it possible to have 10 validator nodes but only three of them contain TPs for a _particular_ family?

GhadiShayban (Thu, 15 Jun 2017 17:56:52 GMT):
Just to labor the my original question: the 1:1 validation:transaction processor applies all the time, right? As in, is it possible to have 10 validator nodes but only three of them contain TPs for a _particular_ family?

amundson (Thu, 15 Jun 2017 18:01:15 GMT):
all validators need to have the same TPs. it is 1-to-many, in that you are likely to have multiple transaction families running. really, all validators must have the transaction processor's for transaction families configured in the on-chain settings. using the settings family to control it allows for rolling upgrades across the network.

tkuhrt (Thu, 15 Jun 2017 18:01:36 GMT):
@toddojala : Looks like rest_api command in the getting started needs to be modified for the latest release ``` tkuhrt@sawtooth:~$ sudo rest_api --stream-url tcp://127.0.0.1:40000 [sudo] password for tkuhrt: usage: rest_api [-h] [-B BIND] [-C CONNECT] [-t TIMEOUT] [-v] rest_api: error: unrecognized arguments: --stream-url tcp://127.0.0.1:40000 tkuhrt@sawtooth:~$ sudo rest_api -v [10:58:41.942 INFO rest_api] Creating handlers for validator at tcp://localhost:40000 [10:58:41.943 INFO rest_api] Starting REST API on 127.0.0.1:8080 ======== Running on http://127.0.0.1:8080 ======== (Press CTRL+C to quit) ```

amundson (Thu, 15 Jun 2017 18:02:17 GMT):
@tkuhrt we recently revised our key management practices, thus the new key

tkuhrt (Thu, 15 Jun 2017 18:02:43 GMT):
Cool..thanks, @amundson

amundson (Thu, 15 Jun 2017 18:02:59 GMT):
we now have separate release key and nightly key

GhadiShayban (Thu, 15 Jun 2017 18:09:23 GMT):
( @amundson the TP for the settings family is _intrinsic_ in the validator process, right?)

jsmitchell (Thu, 15 Jun 2017 18:09:32 GMT):
no

jsmitchell (Thu, 15 Jun 2017 18:09:41 GMT):
you need to start up tp_settings

GhadiShayban (Thu, 15 Jun 2017 18:10:02 GMT):
oh right -- tp_config == tp_settings now

amundson (Thu, 15 Jun 2017 18:12:09 GMT):
validator internals know about the on-chain settings state, but not the implementation for changing/updating it. one could replace the mechanism of change (reference implementation tp_settings) by another transaction processor if that transaction processor adheres to how state is stored

tkuhrt (Thu, 15 Jun 2017 18:12:34 GMT):
Working on https://intelledger.github.io/app_developers_guide/ubuntu.html#config-transaction-family-usage section. Still have validator, tp_intkey, and rest_api running from previous steps. I am getting a warning from tp_config and an error in the validator. ``` tkuhrt@sawtooth:~$ sudo tp_config tcp://localhost:40000 [sudo] password for tkuhrt: [11:08:25 WARNING core] Invalid Transaction ('Tried to get unauthorized address: %s', ['000000a87cb5eafdcca6a8b79606fb3afea5bdab274474a6aa82c12840f169a04216b7']) ``` and in the validator: ``` [11:08:25.191 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 123 bytes [11:08:25.192 INFO processor_handlers] registered transaction processor: connection_id=2186fcf2f4e541037fc64b96dddc0353922574f27080e8345879584682d9a923bf8ba85560edf45738176ba2ee7912210d3b1201b1a393d6c262ade1005cd36c, family=sawtooth_config, version=1.0, encoding=application/protobuf, namespaces=['000000'] [11:08:25.193 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'e118b9b444b545c4' [11:08:25.194 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'e118b9b444b545c4' [11:08:25.196 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 177 bytes [11:08:25.198 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'e118b9b444b545c4' [11:08:25.200 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 73 bytes [11:08:25.201 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.007776498794555664 [11:08:25.201 ERROR cli] Unable to create genesis block, due to batch fc3d6741eaa95b6052e2c83c92297b77bd8f9796faaddd49848cb27bc6f52bce2fa8cc87b75c09ff439f465772c4dd31253ea287c391266b4db45d1b727fb37b [11:08:25.202 DEBUG dispatch] Attempted to remove send_message function for connection ServerThread, but no send_message function was registered [11:08:25.203 DEBUG dispatch] Removed send_message function for connection ServerThread [11:08:25.613 INFO core] remaining threads: Thread-1 (_ContextReader), Thread-2 (_ContextWriter) [11:08:26.616 INFO core] All threads have been stopped and joined ``` And the validator is no longer running.

jsmitchell (Thu, 15 Jun 2017 18:13:33 GMT):
@rbuysse @pschwarz ^^

jsmitchell (Thu, 15 Jun 2017 18:13:49 GMT):
I think that's something that Ryan and Peter were talking about yesterday

rbuysse (Thu, 15 Jun 2017 18:14:06 GMT):
yup.

jsmitchell (Thu, 15 Jun 2017 18:14:16 GMT):
any details?

rbuysse (Thu, 15 Jun 2017 18:15:10 GMT):
hm maybe it's different, let me take a look.

jsmitchell (Thu, 15 Jun 2017 18:23:46 GMT):
@boydjohnson @agunde per an earlier discussion here, if someone passes in a string address into inputs or outputs in the python sdk it will be interpreted as a list of single character address wildcards. This seems bad.

rbuysse (Thu, 15 Jun 2017 18:35:12 GMT):
ok it looks like a different thing, I'll have to check with @pschwarz

jsmitchell (Thu, 15 Jun 2017 18:36:22 GMT):
to me it looks like a transaction was built without an appropriate input specified

jsmitchell (Thu, 15 Jun 2017 18:37:32 GMT):
@pschwarz and it looks like that transaction probably came from the config/settings client

pschwarz (Thu, 15 Jun 2017 18:57:23 GMT):
Hmm

pschwarz (Thu, 15 Jun 2017 18:58:59 GMT):
@tkuhrt what steps do you do to create your `genesis.batch` file?

toddojala (Thu, 15 Jun 2017 19:00:58 GMT):
@tkuhrt Could you show us the Validator's output from the time you started it?

tkuhrt (Thu, 15 Jun 2017 19:19:16 GMT):
@pschwarz : I am following the steps here. https://intelledger.github.io/app_developers_guide/ubuntu.html.

tkuhrt (Thu, 15 Jun 2017 19:19:47 GMT):
Now that you ask that, I think that the genesis.batch may have been created with 0.8.4 and the validator ran with 0.8.5

tkuhrt (Thu, 15 Jun 2017 19:19:55 GMT):
That may be what's causing this.

pschwarz (Thu, 15 Jun 2017 19:20:36 GMT):
Ah, the address format for settings changed between those two, I think

pschwarz (Thu, 15 Jun 2017 19:20:42 GMT):
That would explain it

toddojala (Thu, 15 Jun 2017 19:20:58 GMT):
@tkuhrt Just delete the data files and try starting over...

tkuhrt (Thu, 15 Jun 2017 19:21:25 GMT):
Okay...assuming you don't need my validator output anymore, right?

toddojala (Thu, 15 Jun 2017 19:21:40 GMT):
@tkuhrt right!

tkuhrt (Thu, 15 Jun 2017 19:22:22 GMT):
Alright...let me start over again and see if the problem goes away. Just need to remove `/var/lib/sawtooth`, right?

jsmitchell (Thu, 15 Jun 2017 19:23:33 GMT):
probably just /var/lib/sawtooth/data/*

toddojala (Thu, 15 Jun 2017 19:23:57 GMT):
@tkuhrt ^^

tkuhrt (Thu, 15 Jun 2017 19:28:40 GMT):
No data directory ``` tkuhrt@sawtooth:~$ ls /var/lib/sawtooth/ block-00.lmdb block-00.lmdb-lock genesis.batch merkle-00.lmdb merkle-00.lmdb-lock state-deltas-00.lmdb state-deltas-00.lmdb-lock ```

jsmitchell (Thu, 15 Jun 2017 19:29:26 GMT):
yeah /var/lib/sawtooth/*

tkuhrt (Thu, 15 Jun 2017 19:29:34 GMT):
Okay...thnaks

tkuhrt (Thu, 15 Jun 2017 19:29:34 GMT):
Okay...thanks

jsmitchell (Thu, 15 Jun 2017 19:30:04 GMT):
stuff is in different places for the production install

toddojala (Thu, 15 Jun 2017 19:30:15 GMT):
@tkuhrt Aha. We do have that as a note in the Ubuntu guide: If you need to delete previously existing block-chain data before running a validator, simply run the following command: rm /var/lib/sawtooth/*

tkuhrt (Thu, 15 Jun 2017 19:30:47 GMT):
Cool.

boydjohnson (Thu, 15 Jun 2017 19:32:04 GMT):
@jsmitchell After PR #634 if someone puts in a string for the inputs or outputs, the txn is failed, before it on master there is odd behavior.

jsmitchell (Thu, 15 Jun 2017 19:32:56 GMT):
@boydjohnson I was thinking we could also check for it in the client sdk

jsmitchell (Thu, 15 Jun 2017 19:33:03 GMT):
specifically if the list is a string

boydjohnson (Thu, 15 Jun 2017 19:34:04 GMT):
Yeah, it would be nice as we are forming the txns to make sure that it is an actual list.

pschwarz (Thu, 15 Jun 2017 19:44:06 GMT):
:point_up: Make a story/stories for this

boydjohnson (Thu, 15 Jun 2017 19:49:02 GMT):
I will. It would apply to the Python client sdk, at least.

tkuhrt (Thu, 15 Jun 2017 19:54:31 GMT):
@toddojala: Made it through https://intelledger.github.io/app_developers_guide/ubuntu.html. Only issue is the one place in https://intelledger.github.io/app_developers_guide/ubuntu.html#starting-the-rest-api that has `--stream_url` instead of `--connect` as the argument.

boydjohnson (Thu, 15 Jun 2017 19:56:06 GMT):
So apparently there isn't a generic Python transaction formation client like there is in the javascript. This error came out of the someone going through the Building and Submitting Transactions (Python 3) http://intelledger.github.io/_autogen/txn_submit_tutorial_python.html?highlight=python#building-and-submitting-transactions-python-3 tutorial. @zac With this tutorial, are we moving towards writing clients that form arbitrary transactions and then having tutorials for those, instead of tutorials about how to form your own transactions?

boydjohnson (Thu, 15 Jun 2017 19:57:06 GMT):
@pschwarz Not entirely sure now what Jira story to make for this issue.

zac (Thu, 15 Jun 2017 19:57:34 GMT):
The idea behind that tutorial is to provide a backstop for when the SDK functionality doesn't exist, or someone is working in a language without an SDK.

zac (Thu, 15 Jun 2017 19:57:40 GMT):
So it is full manual.

jsmitchell (Thu, 15 Jun 2017 19:57:52 GMT):
wouldn't it be in the TransactionHeader._init_?

zac (Thu, 15 Jun 2017 19:57:54 GMT):
There is a story to reorganize it a bit and make that more clear.

jsmitchell (Thu, 15 Jun 2017 19:57:57 GMT):
oh, that's protobuf generated...

boydjohnson (Thu, 15 Jun 2017 19:58:05 GMT):
yep.

zac (Thu, 15 Jun 2017 19:58:06 GMT):
There is also a story to add that functionality to the Python SDK

jsmitchell (Thu, 15 Jun 2017 19:58:27 GMT):
that's a shame

zac (Thu, 15 Jun 2017 20:04:36 GMT):
At the very least, shouldn't a Protobuf error already be getting thrown if you try to `TransactionHeader(inputs='abcde')`, which you should `TransactionHeader(inputs=['abcde'])`?

zac (Thu, 15 Jun 2017 20:04:36 GMT):
At the very least, shouldn't a Protobuf error already be getting thrown if you try to `TransactionHeader(inputs='abcde')`, when you should `TransactionHeader(inputs=['abcde'])`?

jsmitchell (Thu, 15 Jun 2017 20:29:27 GMT):
@zac: 'abcde' is a list in python

boydjohnson (Thu, 15 Jun 2017 20:29:30 GMT):
No apparently whatever coersion that the protobuf does works on a list the same as a string.

jsmitchell (Thu, 15 Jun 2017 20:29:43 GMT):
that's python

zac (Thu, 15 Jun 2017 20:31:21 GMT):
Oh, so it accepts any iterable, not just lists

zac (Thu, 15 Jun 2017 20:31:27 GMT):
I suppose that makes sense

zac (Thu, 15 Jun 2017 20:32:52 GMT):
Well, I'll probably be adding that functionality to the Python SDK next sprint, I can add a check

jsmitchell (Thu, 15 Jun 2017 20:33:17 GMT):
how? we are using the generated protobuf TransactionHeader object directly

zac (Thu, 15 Jun 2017 20:33:39 GMT):
It gets used within another method

zac (Thu, 15 Jun 2017 20:34:08 GMT):
You could just say "if inputs is a string, don't TransactionHeader"

zac (Thu, 15 Jun 2017 20:34:23 GMT):
Or alternatively "if inputs is not a list"

jsmitchell (Thu, 15 Jun 2017 20:34:38 GMT):
I am curious to see where you plan to put that code

zac (Thu, 15 Jun 2017 20:39:24 GMT):
In the JavaScript SDK it would go here: ``` class TransactionEncoder { . . . create (payload, settings = {}) { inputs = settings.inputs || this.inputs if (typeof inputs === 'string') throw Exception('Inputs must be an array of strings') const header = TransactionHeader.encode({ inputs, . . . }).finish() . . . } } ```

jsmitchell (Thu, 15 Jun 2017 20:39:43 GMT):
well, yeah, if you _wrap_ TransactionHeader, it's easy

jsmitchell (Thu, 15 Jun 2017 20:39:55 GMT):
the python sdk doesn't do that

zac (Thu, 15 Jun 2017 20:40:01 GMT):
well, that's what the client functionality in the SDKs does

jsmitchell (Thu, 15 Jun 2017 20:40:55 GMT):
that's what the client functionality in the Javascript SDK does

jsmitchell (Thu, 15 Jun 2017 20:41:01 GMT):
not the python one, currently

zac (Thu, 15 Jun 2017 20:41:16 GMT):
It doesn't exist in the python one currently

jsmitchell (Thu, 15 Jun 2017 20:41:19 GMT):
but, i think it's a good topic for discussion

zac (Thu, 15 Jun 2017 20:41:20 GMT):
You have to do it manually

zac (Thu, 15 Jun 2017 20:41:36 GMT):
There is a JIRA task to add it though

jsmitchell (Thu, 15 Jun 2017 20:41:50 GMT):
which story?

zac (Thu, 15 Jun 2017 20:42:02 GMT):
https://jira.hyperledger.org/browse/STL-460

zac (Thu, 15 Jun 2017 20:43:21 GMT):
The Go and JavaScript SDKs currently have this functionality

zac (Thu, 15 Jun 2017 20:43:29 GMT):
There is a story for adding it to each of the others

zac (Thu, 15 Jun 2017 20:46:15 GMT):
We should probably do some research into languages might need extra data validation and build that in

zac (Thu, 15 Jun 2017 20:46:15 GMT):
We should probably do some research into which languages need extra data validation where and build that in

toddojala (Thu, 15 Jun 2017 21:30:19 GMT):
@tkuhrt Thanks! I'm taking a look... aha. It's fixed in the version of the docs based on Master: http://intelledger.github.io/0.8/app_developers_guide/ubuntu.html#starting-the-rest-api

toddojala (Thu, 15 Jun 2017 21:30:44 GMT):
@tkuhrt I'll try to get the version of the docs in the Latest release fixed, though,before the next release.

mohitsharma18893 (Fri, 16 Jun 2017 05:55:14 GMT):
Has joined the channel.

mohitsharma18893 (Fri, 16 Jun 2017 05:55:24 GMT):
Hi

mohitsharma18893 (Fri, 16 Jun 2017 05:55:39 GMT):
can somebody help me to install sawtooth in my ubuntu system??

casualuser (Fri, 16 Jun 2017 06:50:06 GMT):
@mohitsharma18893 checked this guide it may be helpfull - http://intelledger.github.io/0.7/sysadmin_guide/installation_ubuntu.html

casualuser (Fri, 16 Jun 2017 06:50:43 GMT):
and here is how to create packages - http://intelledger.github.io/0.7/sysadmin_guide/packaging_ubuntu.html

casualuser (Fri, 16 Jun 2017 06:51:42 GMT):
and if you do not need any customs then just use this - http://intelledger.github.io/app_developers_guide/ubuntu.html?highlight=installation%20ubuntu

casualuser (Fri, 16 Jun 2017 09:11:46 GMT):
greetings one! can someone help me make clear question with Creator in terms of btp? it looks like it's not the user with .wif key but some kind of another record

SahilKapoor (Fri, 16 Jun 2017 10:39:12 GMT):
How do we build db and manage transactions accordingly for privacy?

SahilKapoor (Fri, 16 Jun 2017 10:39:12 GMT):
How do we build side db and manage transactions accordingly for privacy?

SahilKapoor (Fri, 16 Jun 2017 10:39:37 GMT):
Like we do in Quourum

LoubnaBaroudi (Fri, 16 Jun 2017 12:54:07 GMT):
Does the marketplace transaction family still exists in the lastest sawtooth version?

LoubnaBaroudi (Fri, 16 Jun 2017 13:10:16 GMT):
or the bond family

casualuser (Fri, 16 Jun 2017 13:12:35 GMT):
bond family exists only in 0.7

agunde (Fri, 16 Jun 2017 13:12:58 GMT):
@LoubnaBaroudi bond and market place have not been ported to 0.8 yet.

LoubnaBaroudi (Fri, 16 Jun 2017 13:14:14 GMT):
is it in progress or not even started?

LoubnaBaroudi (Fri, 16 Jun 2017 13:18:01 GMT):
And can we still use sawtooth 0.7 with a CLI or not anymore?

jaredcorduan (Fri, 16 Jun 2017 13:51:56 GMT):
is there a way to see the peer list for a given validator?

jsmitchell (Fri, 16 Jun 2017 13:52:36 GMT):
@jaredcorduan no, that info is not exposed at the moment

jaredcorduan (Fri, 16 Jun 2017 13:52:42 GMT):
ok, thanks

jsmitchell (Fri, 16 Jun 2017 13:52:49 GMT):
@jaredcorduan you could parse the logs

jaredcorduan (Fri, 16 Jun 2017 13:52:58 GMT):
gotcha

jsmitchell (Fri, 16 Jun 2017 13:53:17 GMT):
sounds like a good jira story :)

GhadiShayban (Fri, 16 Jun 2017 13:53:28 GMT):
Could we issue some protobuf request to introspects?

GhadiShayban (Fri, 16 Jun 2017 13:53:57 GMT):
What we're actually trying to do is expose metrics to prometheus

GhadiShayban (Fri, 16 Jun 2017 13:54:34 GMT):
Prometheus metrics would be a good jira story =)

jsmitchell (Fri, 16 Jun 2017 13:54:36 GMT):
@GhadiShayban ludvik and ryan are working on getting some stuff out to grafana

jsmitchell (Fri, 16 Jun 2017 13:54:50 GMT):
@adamludvik @rbuysse ^

GhadiShayban (Fri, 16 Jun 2017 13:55:04 GMT):
Through what backend mechanism? grafana is a front-end

jsmitchell (Fri, 16 Jun 2017 13:55:13 GMT):
adam has some thoughts on an integration

jsmitchell (Fri, 16 Jun 2017 13:55:17 GMT):
i think via statsd

rbuysse (Fri, 16 Jun 2017 13:55:20 GMT):
telegraf an an influx db

rbuysse (Fri, 16 Jun 2017 13:55:20 GMT):
telegraf and an influx db

zac (Fri, 16 Jun 2017 13:56:18 GMT):
@LoubnaBaroudi There are some plans to do marketplace or something similar to marketplace in 0.8, but they aren't finalized no work has been started. No plans for bond.

jaredcorduan (Fri, 16 Jun 2017 13:56:28 GMT):
there aren't any timestamps on the rest api `/blocks/` endpoint. is there a best way to get those? I guess logs would work. :)

jaredcorduan (Fri, 16 Jun 2017 13:56:28 GMT):
there aren't any timestamps on the rest api `/blocks` endpoint. is there a best way to get those? I guess logs would work. :)

zac (Fri, 16 Jun 2017 13:56:50 GMT):
There was a contributor who talked about doing a straight port of marketplace, but I'm not sure what the status of his work is.

GhadiShayban (Fri, 16 Jun 2017 13:57:16 GMT):
(I would recommend against statsd or any UDP based metrics

GhadiShayban (Fri, 16 Jun 2017 13:57:16 GMT):
(I would recommend against statsd or any UDP based metrics)

jsmitchell (Fri, 16 Jun 2017 13:57:21 GMT):
@jaredcorduan what timestamp are you looking for? the publishing validator's local clock at the time the block was published? when the block was received and added to the blockstore?

jaredcorduan (Fri, 16 Jun 2017 13:57:53 GMT):
any of those would be nice

jsmitchell (Fri, 16 Jun 2017 13:58:00 GMT):
there are none of those

jsmitchell (Fri, 16 Jun 2017 13:58:01 GMT):
:)

GhadiShayban (Fri, 16 Jun 2017 13:58:07 GMT):
haha

jaredcorduan (Fri, 16 Jun 2017 13:58:16 GMT):
:)

LoubnaBaroudi (Fri, 16 Jun 2017 13:58:23 GMT):
thank you @zac

jsmitchell (Fri, 16 Jun 2017 13:58:45 GMT):
@jaredcorduan we are wary of timestamps

jsmitchell (Fri, 16 Jun 2017 13:58:49 GMT):
what's the use case?

jaredcorduan (Fri, 16 Jun 2017 13:58:59 GMT):
just for a basic dashboard

jsmitchell (Fri, 16 Jun 2017 13:59:17 GMT):
oh, for stats

GhadiShayban (Fri, 16 Jun 2017 13:59:20 GMT):
along the line of more metrics for block progress

jaredcorduan (Fri, 16 Jun 2017 13:59:21 GMT):
yep

jsmitchell (Fri, 16 Jun 2017 13:59:39 GMT):
yeah, that makes things easier

jsmitchell (Fri, 16 Jun 2017 14:00:06 GMT):
i assume that whatever @adamludvik and @rbuysse decide to do is going to support timeseries events

jaredcorduan (Fri, 16 Jun 2017 14:00:13 GMT):
it definitely does not have to be precise

jaredcorduan (Fri, 16 Jun 2017 14:00:43 GMT):
we've got a linear history, life is pretty good :)

zac (Fri, 16 Jun 2017 14:02:11 GMT):
@SahilKapoor I don't think there are any examples of private side db's with Sawtooth for you to reference. There certainly aren't any guides at this point. That said, the short version is: - Write a Transaction Processor that stores hashes of data on the blockchain - Store the private data in whatever way makes sense - Hash that data and store the hash on the blockchain anytime it is modified - Use the hashes on the blockchain to confirm data validity as needed

jaredcorduan (Fri, 16 Jun 2017 14:03:43 GMT):
thanks for the swift answers @jsmitchell !

GhadiShayban (Fri, 16 Jun 2017 14:04:07 GMT):
and thanks for not including timestamps on the transaction protos!

jsmitchell (Fri, 16 Jun 2017 14:04:13 GMT):
yeah, sorry they are not more immediately satisfying

GhadiShayban (Fri, 16 Jun 2017 14:04:15 GMT):
saving thousands of future bugs

jsmitchell (Fri, 16 Jun 2017 14:04:25 GMT):
heh, yeah

jsmitchell (Fri, 16 Jun 2017 14:05:07 GMT):
@rbuysse @pschwarz looks like darian has some stats stories in the next sprint?

GhadiShayban (Fri, 16 Jun 2017 14:05:13 GMT):
@jaredcorduan we should collect a list of desirable operational metrics

jsmitchell (Fri, 16 Jun 2017 14:05:22 GMT):
that would be super useful

rbuysse (Fri, 16 Jun 2017 14:05:52 GMT):
yeah @jsmitchell at least to start defining what we want to be collecting

LoubnaBaroudi (Fri, 16 Jun 2017 14:57:26 GMT):
To create a new transaction family, we have to write all the processor and client_cli programs?

toddojala (Fri, 16 Jun 2017 14:59:34 GMT):
@LoubnaBaroudi You would have to create a handler for your new transaction processor, and can use one of our SDKs: http://intelledger.github.io/0.8/_autogen/sdk_TP_tutorial_python.html

toddojala (Fri, 16 Jun 2017 15:02:30 GMT):
@LoubnaBaroudi You'd have to create your own client to do anything that is user-facing (although you can submit a transaction/batch using this included command) http://intelledger.github.io/0.8/cli/sawtooth.html#sawtooth-batch-submit

toddojala (Fri, 16 Jun 2017 15:02:52 GMT):
@LoubnaBaroudi See the XO CLI for a good example of a user-facing CLI.

LoubnaBaroudi (Fri, 16 Jun 2017 15:17:19 GMT):
ok thank you

pschwarz (Fri, 16 Jun 2017 17:36:22 GMT):
Put together a small demo app using the state delta subscription feature: https://github.com/peterschwarz/state-export-prototype

jsmitchell (Fri, 16 Jun 2017 17:36:36 GMT):
404

pschwarz (Fri, 16 Jun 2017 17:37:19 GMT):
Whoops for got to make it public

pschwarz (Fri, 16 Jun 2017 17:37:19 GMT):
Whoops forgot to make it public

pschwarz (Fri, 16 Jun 2017 17:37:58 GMT):
I should add a little bit more in the readme for setting up a db

pschwarz (Fri, 16 Jun 2017 17:38:50 GMT):

Message Attachments

kellyo (Fri, 16 Jun 2017 17:38:55 GMT):
@mohitsharma18893 hello

jsmitchell (Fri, 16 Jun 2017 17:42:40 GMT):
@GhadiShayban ^ clj

GhadiShayban (Fri, 16 Jun 2017 18:04:21 GMT):
beautiful

GhadiShayban (Fri, 16 Jun 2017 18:06:34 GMT):
That's very well factored clojure code...

pschwarz (Fri, 16 Jun 2017 18:07:01 GMT):
@GhadiShayban Added a little more info to the readme re: database setup

pschwarz (Fri, 16 Jun 2017 18:08:36 GMT):
Also, thanks

pschwarz (Fri, 16 Jun 2017 18:08:38 GMT):
:)

jsmitchell (Fri, 16 Jun 2017 18:09:13 GMT):
to be honest

jsmitchell (Fri, 16 Jun 2017 18:09:30 GMT):
@pschwarz is more parentheses than man now

pschwarz (Fri, 16 Jun 2017 18:09:36 GMT):
lol

mattalhonte (Fri, 16 Jun 2017 18:26:20 GMT):
Has joined the channel.

mattalhonte (Fri, 16 Jun 2017 18:33:43 GMT):
@pschwarz Love the Clojure interop!

mattalhonte (Fri, 16 Jun 2017 18:35:08 GMT):
@pschwarz Not sure if it still works (not actively maintained), but this is similar (for Ethereum though) and might have some useful things to look at: https://medium.com/@matus.lestan/how-to-create-decentralised-apps-with-clojurescript-re-frame-and-ethereum-81de24d72ff5

GhadiShayban (Fri, 16 Jun 2017 18:37:34 GMT):
so much similarity between the sawtooth merkle state and datomic's storage trees

GhadiShayban (Fri, 16 Jun 2017 18:38:13 GMT):
in fact we're exploring some lightweight relational / EAV models superimposed in the merklestate

GhadiShayban (Fri, 16 Jun 2017 18:39:17 GMT):
CBOR seems like a nice middle ground between json and schema'ed formats because it can do value tagging, like Clojure's EDN

GhadiShayban (Fri, 16 Jun 2017 18:39:39 GMT):
that way you can represent links to other merkle addrs without having to have a context/schema

pschwarz (Fri, 16 Jun 2017 18:39:50 GMT):
Yeah, it's a bit of an immutable database, with history

GhadiShayban (Fri, 16 Jun 2017 18:39:55 GMT):
however CBORs tags are integers, not symbolic

GhadiShayban (Fri, 16 Jun 2017 18:40:38 GMT):
probably lots of CBOR libs don't focus on/support the tagged values well

pschwarz (Fri, 16 Jun 2017 18:40:54 GMT):
Yeah, it's not the best, though - implementations vary widely across languanges, so you can run into issues with parsing and deterministic encodings

pschwarz (Fri, 16 Jun 2017 18:41:14 GMT):
We've had issues with the latter

pschwarz (Fri, 16 Jun 2017 18:41:37 GMT):
Particularly problematic with maps

GhadiShayban (Fri, 16 Jun 2017 18:42:25 GMT):
the sawtooth merkle address prefixing scheme is _exactly_ how datomic partitions Entity IDs -- this gives entities locality in the B-tree indexes (similar address "types" sort nearby)

pschwarz (Fri, 16 Jun 2017 18:43:30 GMT):
Interesting - I'm only conceptually familiar with Datomic

GhadiShayban (Fri, 16 Jun 2017 18:43:31 GMT):
take an opaque `long`, reserve some highorder bits and you're done

jsmitchell (Fri, 16 Jun 2017 18:43:33 GMT):
that is weird

jsmitchell (Fri, 16 Jun 2017 18:43:44 GMT):
that we came to the same design

jsmitchell (Fri, 16 Jun 2017 18:43:55 GMT):
i did not look at datomic as a reference

GhadiShayban (Fri, 16 Jun 2017 18:44:33 GMT):
heh, weird. it makes total sense given your constraints: flat address space + desire for loose grouping

jsmitchell (Fri, 16 Jun 2017 18:44:44 GMT):
yeah, i guess it's the natural choice

GhadiShayban (Fri, 16 Jun 2017 18:46:35 GMT):
@pschwarz do you really need deterministic encoding on the cbor maps?

GhadiShayban (Fri, 16 Jun 2017 18:47:03 GMT):
Ostensibly the same library is going to be creating the CBOR blob --

pschwarz (Fri, 16 Jun 2017 18:47:18 GMT):
For values in the global state, yes

pschwarz (Fri, 16 Jun 2017 18:47:33 GMT):
deterministic encodings is a requirement

pschwarz (Fri, 16 Jun 2017 18:47:33 GMT):
Choosing deterministic encodings is a requirement

GhadiShayban (Fri, 16 Jun 2017 18:47:58 GMT):
and the same libraries would be "updating" it (though those could be different than the blob creator)

GhadiShayban (Fri, 16 Jun 2017 18:48:41 GMT):
You'd have to take care using golang because each map has a different hash function seed

GhadiShayban (Fri, 16 Jun 2017 18:49:33 GMT):
I see - but as long as the bytes are always consistent, you might not need "canonical CBOR"

GhadiShayban (Fri, 16 Jun 2017 18:50:16 GMT):
ok i need to re-parse your wording -- Deterministic.

pschwarz (Fri, 16 Jun 2017 18:50:18 GMT):
It's possible that across a network, only a transaction family specification is agreed on, but not the implementation language. In these cases, you'd need to have a very deterministic encoding.

GhadiShayban (Fri, 16 Jun 2017 18:50:33 GMT):
gotcha.

jsmitchell (Fri, 16 Jun 2017 18:50:56 GMT):
that is admittedly a weird case, but we've had it come up in implementations

pschwarz (Fri, 16 Jun 2017 18:50:57 GMT):
We run some tests using the intkey family, but implemented in several languages

pschwarz (Fri, 16 Jun 2017 18:51:24 GMT):
(the transaction processors, I mean)

jsmitchell (Fri, 16 Jun 2017 18:51:29 GMT):
seems like erring on the side of determinism even if you aren't planning on multiple language implementations is the safe bet though

mattalhonte (Fri, 16 Jun 2017 20:29:00 GMT):
Is there source code available for the Demos? Like this one? https://www.hyperledger.org/projects/sawtooth/seafood-case-study

kellyo (Fri, 16 Jun 2017 20:30:57 GMT):
@mattalhonte I don't believe the exact code, but the supply chain transaction processor is very similar

kellyo (Fri, 16 Jun 2017 20:33:58 GMT):
https://github.com/hyperledger/sawtooth-core/tree/master/families

kellyo (Fri, 16 Jun 2017 20:34:11 GMT):
REST API spec is pending merge here

kellyo (Fri, 16 Jun 2017 20:34:15 GMT):
https://github.com/hyperledger/sawtooth-core/pull/635

boydjohnson (Fri, 16 Jun 2017 20:34:26 GMT):
@mattalhonte There is source code for the bond and marketplace demos in the 0.7 branch: https://github.com/hyperledger/sawtooth-core/tree/0-7/extensions All new development is happening with the 0-8 branch where there is a supply chain transaction processor: https://github.com/hyperledger/sawtooth-core/tree/master/families/supplychain

mattalhonte (Fri, 16 Jun 2017 20:37:08 GMT):
Awesome, thanks! :) :) :)

boydjohnson (Fri, 16 Jun 2017 20:46:01 GMT):
Your welcome. :)

boydjohnson (Fri, 16 Jun 2017 20:46:01 GMT):
You're welcome. :)

casualuser (Fri, 16 Jun 2017 20:48:27 GMT):
@boydjohnson can you give me a tip how to preseed data for bond family in 0.7 ? it keep say like 'Error: Creator was not found : 16Qf3LnuvYLbCpC395aF2iDGV1AMgQkGWo' with ./bin/load_bond_data script

casualuser (Fri, 16 Jun 2017 20:49:48 GMT):
checking sources lead to something like this: ``` try: store.lookup('participant:key-id', txn.OriginatorID) ``` but it seems it's not the same as in .wif file

casualuser (Fri, 16 Jun 2017 20:49:48 GMT):
checking sources lead to something like this: ``` try: store.lookup('participant:key-id', txn.OriginatorID) ``` but it seems it's not the same key as in .wif file

boydjohnson (Fri, 16 Jun 2017 20:54:28 GMT):
So does ./bin/load_all not successfully return?

boydjohnson (Fri, 16 Jun 2017 20:54:28 GMT):
So does ./bin/load_bond_data not successfully return?

boydjohnson (Fri, 16 Jun 2017 20:57:02 GMT):
Just guessing, I remember 'btp init' being required before running ./bin/load_bond_data.

casualuser (Fri, 16 Jun 2017 20:59:15 GMT):
tried `btp init` before that and also `./bin/load_bond_data` conatin `btp init` before loading data from .yaml files

casualuser (Fri, 16 Jun 2017 21:05:47 GMT):
feeling like there is something simple missed in configuration or so @boydjohnson can you please give me few tips where to look for debugging this?

casualuser (Fri, 16 Jun 2017 21:16:16 GMT):
can anybody explain why ./bin/load_bond_data display a such a messages? ``` [21:13:18 DEBUG client] get content from url [21:13:18 DEBUG client] waiting for transaction e076934d19df8140 to commit (not_found:404) ```

boydjohnson (Fri, 16 Jun 2017 21:18:48 GMT):
@casualuser Do you have the validator logs during loading?

casualuser (Fri, 16 Jun 2017 21:18:53 GMT):
sure

boydjohnson (Fri, 16 Jun 2017 21:19:04 GMT):
What do they say?

casualuser (Fri, 16 Jun 2017 21:22:58 GMT):
https://gist.github.com/casualuser/440a4a8e9201d5e4cab08fef1de3cd42

boydjohnson (Fri, 16 Jun 2017 21:26:31 GMT):
I can't tell from that.

boydjohnson (Fri, 16 Jun 2017 21:27:15 GMT):
To debug this I would grep the logs for WARNING and ERROR messages, even though there are some spurious WARNINGs.

casualuser (Fri, 16 Jun 2017 21:32:34 GMT):
hmm, no any ERROR messages and just two WARNINGS ``` [21:30:22 [MainThread] txnserver.web_pages.root_page WARNING] /Bond/Transaction - NoResource [21:30:22 [MainThread] txnserver.web_pages.root_page WARNING] ['Bond', 'Transaction'] - 2 ```

boydjohnson (Fri, 16 Jun 2017 21:33:14 GMT):
That is strange.

casualuser (Fri, 16 Jun 2017 21:42:49 GMT):
that's really strange it was build and installed from sources so may be there is some kind of config tweaks required can you say if there is any other install guides except this one - http://intelledger.github.io/0.7/bond_family_guide.html ?

boydjohnson (Fri, 16 Jun 2017 21:55:21 GMT):
I think that is all there is for bond install documentation.

casualuser (Fri, 16 Jun 2017 22:01:43 GMT):
@boydjohnson thx for tips, will check this on fresh head at the morning

boydjohnson (Fri, 16 Jun 2017 22:02:11 GMT):
You're welcome, @casualuser Good luck.

carbonx1 (Sat, 17 Jun 2017 00:55:22 GMT):
Has joined the channel.

xzib (Sat, 17 Jun 2017 11:02:43 GMT):
Has joined the channel.

bill.cawthra (Sat, 17 Jun 2017 13:29:22 GMT):
Has joined the channel.

MaximeLandon (Sat, 17 Jun 2017 23:31:24 GMT):
Hello Everyone,

MaximeLandon (Sat, 17 Jun 2017 23:34:45 GMT):
I am testing the first example of transaction in Sawtooth Documentation, and I face this problem: In the input/output lines of the TransactionHeader, I've put inputs = ['1cf126' + hashlib.sha512('address'.encode('utf-8')).hexdigest()[-64:]] When compiling for submission, I'm told that at this place, 'undefined name: hashlib'. Even with vim syntax checker the error is raised, so I don't really know what to do. Thanks for any help !

jsmitchell (Sat, 17 Jun 2017 23:35:48 GMT):
You will need 'import hashlib' at the top of your python file

jsmitchell (Sat, 17 Jun 2017 23:37:26 GMT):
Also that 'address' value in your example needs to match whatever name you setting in your intkey payload

MaximeLandon (Sat, 17 Jun 2017 23:38:40 GMT):
Exactly I just found that 2 secs ago

MaximeLandon (Sat, 17 Jun 2017 23:38:48 GMT):
anyway thanks very much for help

MaximeLandon (Sat, 17 Jun 2017 23:39:18 GMT):
Ah ok thanks for the match need, I had not understood that

MaximeLandon (Sat, 17 Jun 2017 23:39:35 GMT):
by the way, you might be able to explain something to me:

MaximeLandon (Sat, 17 Jun 2017 23:41:01 GMT):
Actually, what do you mean by 'address' ? The sole string part ? Or the whole formula ?

jsmitchell (Sat, 17 Jun 2017 23:41:51 GMT):
In sawtooth, data is stored at an address location in a merkle tree

jsmitchell (Sat, 17 Jun 2017 23:42:11 GMT):
The address is 70 hex characters

jsmitchell (Sat, 17 Jun 2017 23:42:49 GMT):
By convention, the first 6 characters are the 'namespace' for the type of data stored there

MaximeLandon (Sat, 17 Jun 2017 23:42:53 GMT):
so what should I put exactly in the name field of the payload ?

jsmitchell (Sat, 17 Jun 2017 23:43:17 GMT):
So, that '1cf...' is the namespace for intkey

MaximeLandon (Sat, 17 Jun 2017 23:43:25 GMT):
sorry for being assisted like that but there a few things I have to understand yet

jsmitchell (Sat, 17 Jun 2017 23:44:10 GMT):
The remaining portion of the address for intkey is defined as the last 64 characters of the hexdigest of a sha512 hash of the name of the intkey variable

jsmitchell (Sat, 17 Jun 2017 23:44:34 GMT):
No problem at all, this stuff is a bit unusual

jsmitchell (Sat, 17 Jun 2017 23:45:31 GMT):
So, when you are creating your payload for an intkey transaction, you might decide you want to set the value "x" to 100.

jsmitchell (Sat, 17 Jun 2017 23:46:10 GMT):
The payload would have name = "x", verb = "set", and value = 100

jsmitchell (Sat, 17 Jun 2017 23:46:48 GMT):
When you create a transaction, you also need to tell the system the input and output addresses that will be read from and written to

jsmitchell (Sat, 17 Jun 2017 23:47:44 GMT):
Because intkey works by trying to read the location of "x" and then writes to the location of "x", you need to specify that address as an input and an output

jsmitchell (Sat, 17 Jun 2017 23:48:49 GMT):
So, in this example, you would need sha512('x'.encode... instead of sha512('address'.encode... in the code you pasted above

MaximeLandon (Sat, 17 Jun 2017 23:49:29 GMT):
ok so: payload = { 'Verb': 'set',

jsmitchell (Sat, 17 Jun 2017 23:50:05 GMT):
You need a name and value in that payload as well

MaximeLandon (Sat, 17 Jun 2017 23:50:49 GMT):
'Name': ['1cf126' + hashlib.sha512('Address'.encode('utf-8')).hexdigest()[-64:]]

MaximeLandon (Sat, 17 Jun 2017 23:50:57 GMT):
'Value': 100

jsmitchell (Sat, 17 Jun 2017 23:51:32 GMT):
No, the name is the natural variable name in the intkey 'domain'

MaximeLandon (Sat, 17 Jun 2017 23:52:01 GMT):
Well I'm sorry but I do not get it

jsmitchell (Sat, 17 Jun 2017 23:52:04 GMT):
So 'Name': 'maximes_cookies',

MaximeLandon (Sat, 17 Jun 2017 23:52:11 GMT):
okayyyyyyy

MaximeLandon (Sat, 17 Jun 2017 23:52:19 GMT):
that name is just going to be created

MaximeLandon (Sat, 17 Jun 2017 23:52:25 GMT):
when submitting the transaction right ?

jsmitchell (Sat, 17 Jun 2017 23:52:44 GMT):
And then when you calculate an address later, you do sha512("maximes_cookies".encode...

MaximeLandon (Sat, 17 Jun 2017 23:52:52 GMT):
okayyyyyyryy

MaximeLandon (Sat, 17 Jun 2017 23:52:57 GMT):
I get it

jsmitchell (Sat, 17 Jun 2017 23:53:09 GMT):
Do you want to know why it is weird?

jsmitchell (Sat, 17 Jun 2017 23:53:12 GMT):
:)

MaximeLandon (Sat, 17 Jun 2017 23:53:23 GMT):
yes absolutely

MaximeLandon (Sat, 17 Jun 2017 23:53:25 GMT):
:)

jsmitchell (Sat, 17 Jun 2017 23:54:11 GMT):
It is because both the payload and the way addresses are generated in the transaction family are defined by the creator of the transaction family

jsmitchell (Sat, 17 Jun 2017 23:54:25 GMT):
The person who designed intkey chose to do it this way

jsmitchell (Sat, 17 Jun 2017 23:54:43 GMT):
But, you could do it in lots of different ways

jsmitchell (Sat, 17 Jun 2017 23:55:35 GMT):
For example, maybe the unique location (address) of a piece of data in your transaction family is based on the composite key of two fields in your payload

jsmitchell (Sat, 17 Jun 2017 23:56:25 GMT):
What the core system needs to know is where you are going to be reading from and writing to, so that it can enforce some isolation rules for parallel execution

MaximeLandon (Sat, 17 Jun 2017 23:56:28 GMT):
Ok I think I know what is my problem: I don't really see what they mean by transaction family. I have just understood that it is a broad name for creating different sorts of transactions, but would you have concrete examples ?

jsmitchell (Sat, 17 Jun 2017 23:57:13 GMT):
Think of it as a collection of different transaction types and data schemas that all solve one problem

jsmitchell (Sat, 17 Jun 2017 23:57:39 GMT):
For example, let's say we are trying to store information about songs and songwriters

jsmitchell (Sat, 17 Jun 2017 23:58:11 GMT):
We might need data schemas for personal identity, music compositions, and music recordings

jsmitchell (Sat, 17 Jun 2017 23:58:47 GMT):
Then we might need transaction types like CreateIdentity, CreateComposition, CreateRecording, etc...

MaximeLandon (Sat, 17 Jun 2017 23:59:03 GMT):
ok until there I get it ;)

jsmitchell (Sat, 17 Jun 2017 23:59:18 GMT):
Because these are all related to solving the same problem, we call them a transaction family

MaximeLandon (Sun, 18 Jun 2017 00:00:59 GMT):
Okay so let's say I want to use CreateIdentity, which Identity would be 'Bob Miller', to be put at a 'randomly generated' address, who should we do ?

MaximeLandon (Sun, 18 Jun 2017 00:01:16 GMT):
In other words, what will be the payload ?

jsmitchell (Sun, 18 Jun 2017 00:01:21 GMT):
No randomly generated addresses are allowed

MaximeLandon (Sun, 18 Jun 2017 00:01:47 GMT):
yes pardon I just expressed it in a wrong way

jsmitchell (Sun, 18 Jun 2017 00:01:47 GMT):
This is a blockchain, which means that all calculations must be determinisic

jsmitchell (Sun, 18 Jun 2017 00:02:07 GMT):
So, you would have to decide how you wanted to represent identity

jsmitchell (Sun, 18 Jun 2017 00:02:41 GMT):
Maybe you have a domain specific unique identifier already. Something like this exists in the music space called IPI.

MaximeLandon (Sun, 18 Jun 2017 00:03:48 GMT):
Ok so if you don't mind, let's get back to the intkey family, and this first example: from what I understood, if I use Verb 'set', I am going to put some value into an address

jsmitchell (Sun, 18 Jun 2017 00:03:50 GMT):
Otherwise, using something like a public key generated by the user might have nice qualities

jsmitchell (Sun, 18 Jun 2017 00:04:41 GMT):
If you went that route, you might have public_key and first_name and last_name in your payload

jsmitchell (Sun, 18 Jun 2017 00:05:43 GMT):
And then the rules of the transaction processor might check that the transaction was signed by the private key that matches that public key so you know the registration came from someone with control of that key

MaximeLandon (Sun, 18 Jun 2017 00:06:05 GMT):
where is the address (by that I mean one place in which the value 100 is goind to be stored) ?

MaximeLandon (Sun, 18 Jun 2017 00:06:51 GMT):
I'm sorry I'm tired at this time so as a result I may be completely dumb

MaximeLandon (Sun, 18 Jun 2017 00:07:22 GMT):
but I just want to understand how to basically create 'a bank account' in which I'm going to put the number 100

jsmitchell (Sun, 18 Jun 2017 00:07:31 GMT):
Yes, on intkey set maximes_cookies 100 results in a set of bytes in the intkey defined storage format being placed at an address in the merkle tree based on the intkey namespace prefix and the last 64 characters of the hexdigest of a sha512 hash of the string "maximes_cookies"

jsmitchell (Sun, 18 Jun 2017 00:08:13 GMT):
If you do the payload and address stuff as described above, your transaction should work

MaximeLandon (Sun, 18 Jun 2017 00:09:27 GMT):
So that mean the payload doesn't need to know the prefix of the maxime_cookies address, because it set by the intkey family

MaximeLandon (Sun, 18 Jun 2017 00:09:36 GMT):
right ?

jsmitchell (Sun, 18 Jun 2017 00:09:56 GMT):
The payload doesn't know _anything_ about addresses

jsmitchell (Sun, 18 Jun 2017 00:10:23 GMT):
All the payload knows is you want to set 100 to the name: "maxime_cookies"

jsmitchell (Sun, 18 Jun 2017 00:10:48 GMT):
The address is _calculated_ using the name

jsmitchell (Sun, 18 Jun 2017 00:10:55 GMT):
Outside of the payload

jsmitchell (Sun, 18 Jun 2017 00:11:18 GMT):
Your client code needs to calculate the address to set the inputs and outputs properly

jsmitchell (Sun, 18 Jun 2017 00:11:41 GMT):
And the transaction processor code calculates the same address by reading the contents of the payload

MaximeLandon (Sun, 18 Jun 2017 00:12:53 GMT):
Okay so maxime_cookies is going to appear both in the name field of the payload and in part of the input/output field

jsmitchell (Sun, 18 Jun 2017 00:13:04 GMT):
Yes

jsmitchell (Sun, 18 Jun 2017 00:13:51 GMT):
And the reason for that is that the designer of intkey decided that addresses are calculated from the unique "name" value of the payload

MaximeLandon (Sun, 18 Jun 2017 00:14:27 GMT):
Ok I got, but it is pretty stupid though,

MaximeLandon (Sun, 18 Jun 2017 00:14:56 GMT):
Now may I ask you might one avoid this 'problem' ?

jsmitchell (Sun, 18 Jun 2017 00:15:25 GMT):
It is not stupid

jsmitchell (Sun, 18 Jun 2017 00:15:35 GMT):
It is very much on purpose

MaximeLandon (Sun, 18 Jun 2017 00:15:51 GMT):
what is the purpose here ?

jsmitchell (Sun, 18 Jun 2017 00:16:28 GMT):
To define an abstraction between the concerns of the core validator and the concerns of the transaction processor

MaximeLandon (Sun, 18 Jun 2017 00:17:08 GMT):
wow I'm not sure to understand that alone :/

jsmitchell (Sun, 18 Jun 2017 00:17:58 GMT):
There is a domain specific representation (the transaction processor) which has ultimate flexibility, and the way the validator stores data which is based on a system of addresses in a radix tree

jsmitchell (Sun, 18 Jun 2017 00:18:19 GMT):
There are situations where those two representations must touch

MaximeLandon (Sun, 18 Jun 2017 00:18:46 GMT):
which kind of situations ?

MaximeLandon (Sun, 18 Jun 2017 00:19:19 GMT):
By the way I need to thank you a thousand times for helping me, sorry for that being hard :/

jsmitchell (Sun, 18 Jun 2017 00:21:17 GMT):
The validator must be able to know where to put things, so it needs to define what an address is. The validator also needs to be able to enforce that a transaction only reads and writes to addresses that it _said_ it was going to read and write to. This is important because it is how we calculate the isolation of portions of the tree for parallel execution.

jsmitchell (Sun, 18 Jun 2017 00:21:56 GMT):
So, we now you know why it's important that the validator sets the ground rules for addressing

jsmitchell (Sun, 18 Jun 2017 00:22:22 GMT):
We also want lots of flexibility in how transaction families store data

jsmitchell (Sun, 18 Jun 2017 00:22:50 GMT):
So, we leave the definition of how to build an address up to the transaction family designer

jsmitchell (Sun, 18 Jun 2017 00:23:31 GMT):
We also leave the definition of the format of data which gets stored at an address location up to the transaction family designer

MaximeLandon (Sun, 18 Jun 2017 00:24:02 GMT):
I am too biased by Bitcoin system, in which an address is just some place where bitcoins are going to be stored, that's why I don't fully understand all these concepts

jsmitchell (Sun, 18 Jun 2017 00:24:31 GMT):
We could implement bitcoin UTXO as a transaction family in sawtooth

jsmitchell (Sun, 18 Jun 2017 00:24:39 GMT):
It is one set of possible rules

jsmitchell (Sun, 18 Jun 2017 00:24:49 GMT):
There are many other possible rules

jsmitchell (Sun, 18 Jun 2017 00:26:55 GMT):
This is a platform for the design and development of those rules

MaximeLandon (Sun, 18 Jun 2017 00:27:02 GMT):
Is there any way to reformulate this whole conversation using a Bitcoin analogy ? I have a bitcoin wallet interface, and I want to create a new address in which we will store coins (here the value 100) How can this example be linked to our conversation, and how to implement it?

jsmitchell (Sun, 18 Jun 2017 00:27:41 GMT):
Go back to the intkey example

jsmitchell (Sun, 18 Jun 2017 00:28:08 GMT):
Instead of name: maxime_cookies, do name: wallet address

MaximeLandon (Sun, 18 Jun 2017 00:28:50 GMT):
okayyyyy

jsmitchell (Sun, 18 Jun 2017 00:28:55 GMT):
Note that wallet address is _not the same as_ the address on the sawtooth merkle tree

jsmitchell (Sun, 18 Jun 2017 00:29:06 GMT):
Two different types of address

MaximeLandon (Sun, 18 Jun 2017 00:29:14 GMT):
So do you think doing the 'Transaction Processor Tutorial Python' will help me understand my issues ?

MaximeLandon (Sun, 18 Jun 2017 00:29:49 GMT):
okkayy pleeeeeeaaase explain me how these two types of addresses are different

jsmitchell (Sun, 18 Jun 2017 00:29:59 GMT):
I think you should read all the documentation we have out on http://intelledger.github.io

MaximeLandon (Sun, 18 Jun 2017 00:30:11 GMT):
I think this in an important part of my difficulties

jsmitchell (Sun, 18 Jun 2017 00:30:19 GMT):
I can't explain it more clearly than I already have, unfortunately

MaximeLandon (Sun, 18 Jun 2017 00:30:37 GMT):
well I've read very carefully the Architecture part

MaximeLandon (Sun, 18 Jun 2017 00:30:55 GMT):
Okay any way thanks a lot, I'm going to read it again

MaximeLandon (Sun, 18 Jun 2017 00:31:15 GMT):
Sorry for making it harder than it is

MaximeLandon (Sun, 18 Jun 2017 00:31:18 GMT):
:/

jsmitchell (Sun, 18 Jun 2017 00:31:19 GMT):
Good luck!

jsmitchell (Sun, 18 Jun 2017 00:31:26 GMT):
It is hard because it is hard

MaximeLandon (Sun, 18 Jun 2017 00:31:31 GMT):
thanks :)

jsmitchell (Sun, 18 Jun 2017 00:32:11 GMT):
Not many people actually understand this stuff

MaximeLandon (Sun, 18 Jun 2017 00:33:01 GMT):
well I strongly hope I will leave this category of persons asap

MaximeLandon (Sun, 18 Jun 2017 00:33:24 GMT):
I mean the category of people that don't understand this

jsmitchell (Sun, 18 Jun 2017 00:34:14 GMT):
:thumbsup:

MaximeLandon (Sun, 18 Jun 2017 01:04:42 GMT):

Message Attachments

MaximeLandon (Sun, 18 Jun 2017 01:04:46 GMT):
well actually my transaction is not admitted, here is the output:

MaximeLandon (Sun, 18 Jun 2017 01:04:53 GMT):
just above

MaximeLandon (Sun, 18 Jun 2017 01:05:15 GMT):
seems that the api interaction got wrong

MaximeLandon (Sun, 18 Jun 2017 01:06:03 GMT):
the address I've put in the Submission part is 'http://rest.api.domain/batches' as in the Doc

MaximeLandon (Sun, 18 Jun 2017 01:06:16 GMT):
so I'm not sure

jsmitchell (Sun, 18 Jun 2017 01:07:59 GMT):
That's just an example

jsmitchell (Sun, 18 Jun 2017 01:08:22 GMT):
You will need to be running a copy of the sawtooth rest api

MaximeLandon (Sun, 18 Jun 2017 01:08:25 GMT):
I'm so stupid wtf

MaximeLandon (Sun, 18 Jun 2017 01:08:34 GMT):
yes I'm doing so

MaximeLandon (Sun, 18 Jun 2017 01:09:05 GMT):
so I guess i need to put tcp://rest_api.domain/batches' ?

MaximeLandon (Sun, 18 Jun 2017 01:09:30 GMT):
no that doesn't make sense actually

MaximeLandon (Sun, 18 Jun 2017 01:10:08 GMT):
no ok got it

jsmitchell (Sun, 18 Jun 2017 01:11:19 GMT):
Well I don't know how you have it setup, but probably something like http://localhost:8080/batches

jsmitchell (Sun, 18 Jun 2017 01:11:42 GMT):
Gotta run. Good luck!

MaximeLandon (Sun, 18 Jun 2017 01:11:55 GMT):
my API console is saying "Running on http://127.........:8080

MaximeLandon (Sun, 18 Jun 2017 01:12:02 GMT):
so that is what I put

MaximeLandon (Sun, 18 Jun 2017 01:12:08 GMT):
it passes to it,

MaximeLandon (Sun, 18 Jun 2017 01:12:16 GMT):
but I have a 404 status

MaximeLandon (Sun, 18 Jun 2017 01:12:21 GMT):
and nothing on validator

MaximeLandon (Sun, 18 Jun 2017 01:12:31 GMT):
I'm looking at the status code

MaximeLandon (Sun, 18 Jun 2017 01:14:06 GMT):
well ned to send it to the tp_intkey python right ?

MaximeLandon (Sun, 18 Jun 2017 01:18:07 GMT):
okay got it through I understand my mistake but now I have an invalid signature for a txn

MaximeLandon (Sun, 18 Jun 2017 01:30:35 GMT):
Also solved

MaximeLandon (Sun, 18 Jun 2017 01:53:38 GMT):
Well another issue (night-mare):

MaximeLandon (Sun, 18 Jun 2017 01:53:42 GMT):

Message Attachments

MaximeLandon (Sun, 18 Jun 2017 02:05:13 GMT):
_lol_

MaximeLandon (Sun, 18 Jun 2017 02:07:16 GMT):
I tried with both payload_encoding andAPI request header as application/cbor or application/octet-stream, but at submission validator outputs the same reject

zac (Sun, 18 Jun 2017 02:42:20 GMT):
Would it be possible for you to print to Transaction you are trying to send?

zac (Sun, 18 Jun 2017 02:42:39 GMT):
(Including the TransactionHeader)

MaximeLandon (Sun, 18 Jun 2017 11:35:42 GMT):
yes

MaximeLandon (Sun, 18 Jun 2017 12:09:52 GMT):

Message Attachments

MaximeLandon (Sun, 18 Jun 2017 12:11:00 GMT):

Message Attachments

jsmitchell (Sun, 18 Jun 2017 14:45:49 GMT):
@MaximeLandon it looks like you forgot to issue the command during genesis block creation to add the intkey family

MaximeLandon (Sun, 18 Jun 2017 15:16:22 GMT):
I guess it is this one ? sawtooth config proposal create --key /tmp/sawtooth.priv sawtooth.validator.transaction_families='[{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}, {"family":"sawtooth_config", "version":"1.0", "encoding":"application/protobuf"}]'

MaximeLandon (Sun, 18 Jun 2017 15:16:41 GMT):
Otherwise I don't see which one you are talking about

jsmitchell (Sun, 18 Jun 2017 15:34:43 GMT):
That is the one

MaximeLandon (Sun, 18 Jun 2017 15:38:45 GMT):
it gives me the same error response

MaximeLandon (Sun, 18 Jun 2017 15:38:45 GMT):
I'm not sure if I need to change the encoding...

MaximeLandon (Sun, 18 Jun 2017 15:41:34 GMT):
Because I gives the the same error response

jsmitchell (Sun, 18 Jun 2017 15:41:40 GMT):
Did you delete the data directory and start over with a new genesis block?

MaximeLandon (Sun, 18 Jun 2017 15:41:45 GMT):
yes

MaximeLandon (Sun, 18 Jun 2017 15:42:04 GMT):
I removed everything in /var/lib/sawtooth

MaximeLandon (Sun, 18 Jun 2017 15:42:12 GMT):
and then launched a new genesis

MaximeLandon (Sun, 18 Jun 2017 15:42:16 GMT):
everything worked well

jsmitchell (Sun, 18 Jun 2017 15:42:30 GMT):
The encoding in the command needs to match the encoding in the transaction processor

MaximeLandon (Sun, 18 Jun 2017 15:42:54 GMT):
which is the encoding specified in the transaction file right ?

jsmitchell (Sun, 18 Jun 2017 15:43:35 GMT):
The encoding in the transaction processor is application/cbor

MaximeLandon (Sun, 18 Jun 2017 15:43:50 GMT):
yesss it's goood

jsmitchell (Sun, 18 Jun 2017 15:43:50 GMT):
Where did you get application/protobuf for intkey?

MaximeLandon (Sun, 18 Jun 2017 15:44:21 GMT):
It passed through, in my transaction file I have 'application/cbor in the TransactionHeader

MaximeLandon (Sun, 18 Jun 2017 15:44:31 GMT):
so I put the same in my config proposal command

MaximeLandon (Sun, 18 Jun 2017 15:44:35 GMT):
at it passed through

jsmitchell (Sun, 18 Jun 2017 15:44:40 GMT):
Yes, good

jsmitchell (Sun, 18 Jun 2017 15:44:57 GMT):
Where did the faulty config proposal command come from? Our docs?

MaximeLandon (Sun, 18 Jun 2017 15:45:08 GMT):
Yes I guess so

jsmitchell (Sun, 18 Jun 2017 15:45:16 GMT):
Ugh

jsmitchell (Sun, 18 Jun 2017 15:45:37 GMT):
@toddojala ^^

MaximeLandon (Sun, 18 Jun 2017 15:45:44 GMT):
the line : sawtooth config proposal create --key /tmp/sawtooth.priv sawtooth.validator.transaction_families='[{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}, {"family":"sawtooth_config", "version":"1.0", "encoding":"application/protobuf"}]' in the Step Three: Create And Submit Batch

MaximeLandon (Sun, 18 Jun 2017 15:45:57 GMT):
However, I have a new question :)

jsmitchell (Sun, 18 Jun 2017 15:46:04 GMT):
I apologize for that

MaximeLandon (Sun, 18 Jun 2017 15:46:20 GMT):
No don't worry I bothered you with my questions yesterday night

jsmitchell (Sun, 18 Jun 2017 15:46:59 GMT):
@MaximeLandon are you French?

MaximeLandon (Sun, 18 Jun 2017 15:47:06 GMT):
When I do sawtooth bock list, there isn't a new block following this transaction submission

MaximeLandon (Sun, 18 Jun 2017 15:47:07 GMT):
yes

jsmitchell (Sun, 18 Jun 2017 15:47:21 GMT):
What is some good current French music I should listen to?

MaximeLandon (Sun, 18 Jun 2017 15:47:28 GMT):
ahahaha

MaximeLandon (Sun, 18 Jun 2017 15:47:33 GMT):
what style do you like

jsmitchell (Sun, 18 Jun 2017 15:47:43 GMT):
Everything, basically

MaximeLandon (Sun, 18 Jun 2017 15:48:40 GMT):
Well I have never been a huge listener of french music actually, but let me think about it and I will give some titles that worth listening !

MaximeLandon (Sun, 18 Jun 2017 15:49:04 GMT):
I won't want to throw shitty songs without thinking a bit :)

jsmitchell (Sun, 18 Jun 2017 15:49:23 GMT):
I don't know why you aren't seeing a block. What do the validator logs say?

MaximeLandon (Sun, 18 Jun 2017 15:51:42 GMT):
well it is weird

MaximeLandon (Sun, 18 Jun 2017 15:51:50 GMT):
let me look at it a second

MaximeLandon (Sun, 18 Jun 2017 15:54:36 GMT):

Message Attachments

jsmitchell (Sun, 18 Jun 2017 15:55:03 GMT):
That looks perfect

MaximeLandon (Sun, 18 Jun 2017 15:55:57 GMT):
yes indeed

MaximeLandon (Sun, 18 Jun 2017 15:56:20 GMT):
that is why I don't understand why there isn't a new block in the block list

jsmitchell (Sun, 18 Jun 2017 15:56:46 GMT):
What is the output of block list?

MaximeLandon (Sun, 18 Jun 2017 15:57:18 GMT):

Message Attachments

MaximeLandon (Sun, 18 Jun 2017 15:59:01 GMT):
here is also the output of the last block

MaximeLandon (Sun, 18 Jun 2017 15:59:47 GMT):

Message Attachments

jsmitchell (Sun, 18 Jun 2017 16:00:54 GMT):
Looks like it's there to me...

MaximeLandon (Sun, 18 Jun 2017 16:01:39 GMT):
Ok then I would have a question: Can I compare the payload_sha512 of the above output with the one I wrote in my Transaction file ?

jsmitchell (Sun, 18 Jun 2017 16:02:05 GMT):
If you want to see state, you need to look at state

MaximeLandon (Sun, 18 Jun 2017 16:02:14 GMT):
actually I'm gonna try another transaction at a new address, to check that

jsmitchell (Sun, 18 Jun 2017 16:02:19 GMT):
sawtooth state show or somesuch

MaximeLandon (Sun, 18 Jun 2017 16:02:51 GMT):
OKKKAAYYY GOT IT

MaximeLandon (Sun, 18 Jun 2017 16:03:08 GMT):

Message Attachments

MaximeLandon (Sun, 18 Jun 2017 16:04:08 GMT):
well now heading to a table tennis session, I'm back in about an hour, thanks for your help and I'm going to think of your French songs :)

jsmitchell (Sun, 18 Jun 2017 16:04:17 GMT):
👍🏻

MaximeLandon (Sun, 18 Jun 2017 19:14:52 GMT):
@jsmitchell "La Groupie du Pianiste" from Michel Berger

MaximeLandon (Sun, 18 Jun 2017 19:15:04 GMT):
let's start by that and see where you tastes lead us

zac (Mon, 19 Jun 2017 04:01:41 GMT):
Looks like both the ubuntu and docker app developer guides reference `{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}`

zac (Mon, 19 Jun 2017 04:01:41 GMT):
@toddojala Looks like both the ubuntu and docker app developer guides reference `{"family": "intkey", "version": "1.0", "encoding": "application/protobuf"}`

LoubnaBaroudi (Mon, 19 Jun 2017 12:26:16 GMT):
Hello everyone! Does somebody here know the role of the main.py program in the processor?

boydjohnson (Mon, 19 Jun 2017 12:28:30 GMT):
Hi @LoubnaBaroudi it is just the entrypoint into the program where argparse is and logging is setup.

LoubnaBaroudi (Mon, 19 Jun 2017 12:32:51 GMT):
Ok Thank you!

LoubnaBaroudi (Mon, 19 Jun 2017 14:00:17 GMT):
Has anyone of you already created his own transaction family but not a game?

kelly_ (Mon, 19 Jun 2017 14:01:53 GMT):
@LoubnaBaroudi here is a TF for supply chain management - https://github.com/hyperledger/sawtooth-core/tree/master/families/supplychain

kelly_ (Mon, 19 Jun 2017 14:02:21 GMT):
there is also a TF which enables you to deploy EVM bytecode

zac (Mon, 19 Jun 2017 14:03:10 GMT):
Also IntKey is not-a-game

zac (Mon, 19 Jun 2017 14:03:26 GMT):
What is the functionality you are hoping to see demonstrated?

LoubnaBaroudi (Mon, 19 Jun 2017 14:04:17 GMT):
Yes I'm currently inspiring myself with the intkey family

LoubnaBaroudi (Mon, 19 Jun 2017 14:04:44 GMT):
I want to be able to set and "sell" to another peer an object

LoubnaBaroudi (Mon, 19 Jun 2017 14:05:26 GMT):
but I'm getting confused with all the functions..

LoubnaBaroudi (Mon, 19 Jun 2017 14:08:47 GMT):
Thank you @kelly_ I think it will help me

GhadiShayban (Mon, 19 Jun 2017 14:44:27 GMT):
http://cs-www.cs.yale.edu/homes/dna/papers/rethink-mvcc.pdf This is a nice paper that should serve as some inspiration for Sawtooth's inter- and even intra-transaction concurrency. Sawtooth ticks all the boxes for being compatible with it (one machine, txes have to declare read-sets/write-sets)

benoit.razet (Mon, 19 Jun 2017 15:28:10 GMT):
Is there a documentation for intkey explaining how to play with it or the code is the documentation?

toddojala (Mon, 19 Jun 2017 15:29:06 GMT):
@benoit.razet This might help to start: http://intelledger.github.io/transaction_family_specifications/integerkey_transaction_family.html

toddojala (Mon, 19 Jun 2017 15:29:35 GMT):
@benoit.razet Then look at the entire App Deve Guide: http://intelledger.github.io/app_developers_guide.html

benoit.razet (Mon, 19 Jun 2017 15:30:22 GMT):
Thanks!

GhadiShayban (Mon, 19 Jun 2017 16:16:23 GMT):
@adamludvik @rbuysse some metrics we'd like to have: block progress number of transaction aborts peer count + peers tx rate by family tx latency by family merkle tree "size" We use Prometheus.io internally here, have had great success with it, and it has significant advantages compared to UDP-based ("push") metrics like statsd. Also it's conceptually really simple. Stuff like kubernetes bakes it in. Is there a JIRA we can comment on somewhere?

kellyo (Mon, 19 Jun 2017 19:21:50 GMT):
@TomBarnes ^

amundson (Mon, 19 Jun 2017 20:37:59 GMT):
@GhadiShayban https://jira.hyperledger.org/browse/STL-446

LoubnaBaroudi (Tue, 20 Jun 2017 12:58:02 GMT):
Hello everyone! Can somebody explain to me the role of the MessageFactory please?

pschwarz (Tue, 20 Jun 2017 14:19:38 GMT):
@LoubnaBaroudi The MessageFactory is for generating ZMQ messages for tests. They help create the various protobuf messages with a transaction family's specific encoded payloads. Unfortunately, one of the initial tests had its MessageFactory in the production side of code, and others copied this pattern. We're slowly working on moving those out of production code and into the test code.

LoubnaBaroudi (Tue, 20 Jun 2017 14:22:12 GMT):
Ok so It creates the protobuf message that the test_tp will get and test, right?

boydjohnson (Tue, 20 Jun 2017 14:32:32 GMT):
Yeah, the protobuf message that is sent to the transaction processor under test.

LoubnaBaroudi (Tue, 20 Jun 2017 14:37:36 GMT):
Ok thank you!

jsmitchell (Tue, 20 Jun 2017 16:31:54 GMT):
@MaximeLandon I like that Michel Berger jam. I like a lot of old Serge Gainsbourg, too.

mfford (Tue, 20 Jun 2017 18:57:16 GMT):
The next Hyperledger Sawtooth Team Technical Forum is on Thursday, June 22nd from 10-11am CDT. We invite Hyperledger community members interested in Hyperledger Sawtooth to join us! Agenda: 1. Introductions-Mark Ford 2. PoET & Sawtooth Lake-Jamie Jason 3. Open Forum Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi

MaximeLandon (Tue, 20 Jun 2017 21:11:20 GMT):
@jsmitchell glad to hear it ! Well I'm not a great fan of Gainsbourg's music, but I hate the man more :/

jsmitchell (Tue, 20 Jun 2017 21:34:26 GMT):
oh, i don't know anything about the guy himself, just the nice beats

MaximeLandon (Tue, 20 Jun 2017 23:38:07 GMT):
well he was much more angry with others than his songs may tell

MaximeLandon (Tue, 20 Jun 2017 23:40:00 GMT):
By the way @jsmitchell I now have a couple files for testing a new transaction family: - The processorhandler.py - The processormain.py - The MessageFactory.py (specific to my new txn fam) - and accessorily a test_tp_newtxnFam.py

jsmitchell (Tue, 20 Jun 2017 23:40:33 GMT):
Sounds cool

MaximeLandon (Tue, 20 Jun 2017 23:40:33 GMT):
But how am I supposed to make a binary of them ? and which one ?

jsmitchell (Tue, 20 Jun 2017 23:41:02 GMT):
A binary? It's python

MaximeLandon (Tue, 20 Jun 2017 23:41:05 GMT):
well I lack the client part

MaximeLandon (Tue, 20 Jun 2017 23:41:09 GMT):
actually

MaximeLandon (Tue, 20 Jun 2017 23:41:26 GMT):
well yes but then why is there a binary in /usr/bin/ ?

jsmitchell (Tue, 20 Jun 2017 23:42:04 GMT):
Oh, you can package up stuff for install

MaximeLandon (Tue, 20 Jun 2017 23:42:54 GMT):
Oh then may you tell me how to proceed, or lead me toward the relevant doc :)

MaximeLandon (Tue, 20 Jun 2017 23:43:11 GMT):
Is it the two files in the packaging section ?

MaximeLandon (Tue, 20 Jun 2017 23:43:36 GMT):
I guess I need to adapt them slightly according to my TxnFam specs

jsmitchell (Tue, 20 Jun 2017 23:44:38 GMT):
Check out the intkey example setup.py https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/intkey_python/setup.py

MaximeLandon (Tue, 20 Jun 2017 23:45:06 GMT):
thanks a lot !

MaximeLandon (Tue, 20 Jun 2017 23:46:48 GMT):
I guess the only change I have to make on these files is the TxnFam variable name ? and the endpoint ?

jsmitchell (Tue, 20 Jun 2017 23:51:44 GMT):
Probably quite a lot. I don't have much python packaging expertise.

MaximeLandon (Tue, 20 Jun 2017 23:55:09 GMT):
Ok well let's dig again

rbuysse (Wed, 21 Jun 2017 01:30:34 GMT):
I'm going to reboot jenkins quick

LoubnaBaroudi (Wed, 21 Jun 2017 09:38:38 GMT):
Again I'm trying to understand the role of each function in the intkey transaction family. I don't understand why there is a create_batch.py, a populate.py and a generate.py. Can someone help me please?

boydjohnson (Wed, 21 Jun 2017 13:03:13 GMT):
Ah, @LoubnaBaroudi Those are only in the client for the intkey transaction family. Where intkey gets its logic is in https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/intkey_python/sawtooth_intkey/processor/handler.py. To explain the client, populate.py creates only set transactions, while generate.py only creates 'inc' and 'dec' transactions. These rely on each other. While, create_batch.py creates first 'set' transactions and then for each associated 'inc' and 'dec' transaction creates a dependency on the associated 'set' transaction.

zac (Wed, 21 Jun 2017 13:22:50 GMT):
create_batch creates does both ('set' transactions, and then 'inc'/'dec' transactions)

LoubnaBaroudi (Wed, 21 Jun 2017 13:31:51 GMT):
Why do we need populate and generate if create_batch does both ?

boydjohnson (Wed, 21 Jun 2017 13:36:21 GMT):
They are possibly not needed. They can be used to create invalid transactions, which is useful for manual testing.

zac (Wed, 21 Jun 2017 13:39:40 GMT):
Yeah, they were developed as they were needed for testing IntKey clients

zac (Wed, 21 Jun 2017 13:39:52 GMT):
You shouldn't read too much into their significance

LoubnaBaroudi (Wed, 21 Jun 2017 13:44:31 GMT):
I'm actually building my own family transaction wich should have the same function as Intkey but with other caracteristics so I wanted to know if I had to build populate and generate

LoubnaBaroudi (Wed, 21 Jun 2017 13:44:45 GMT):
transaction family*

boydjohnson (Wed, 21 Jun 2017 13:50:22 GMT):
Cool, @LoubnaBaroudi

LoubnaBaroudi (Wed, 21 Jun 2017 13:53:12 GMT):
Besides, do you know how I can use a parameter in one transaction family to trigger a transaction in another transaction family?

pschwarz (Wed, 21 Jun 2017 13:57:29 GMT):
Hmm, you could possibly submit a new transaction, but you might run into some issues with signing the subsequent transaction

LoubnaBaroudi (Wed, 21 Jun 2017 13:59:43 GMT):
I want to set a value and use it in another transaction family. When the value reach a specific threshold, I want to launch a transaction

pschwarz (Wed, 21 Jun 2017 14:00:41 GMT):
That's a bit more complex

pschwarz (Wed, 21 Jun 2017 14:01:02 GMT):
But still doable, via a couple of avenues

pschwarz (Wed, 21 Jun 2017 14:01:17 GMT):
The first being my first suggestion

pschwarz (Wed, 21 Jun 2017 14:01:17 GMT):
The first being my previous suggestion

pschwarz (Wed, 21 Jun 2017 14:02:22 GMT):
The second way using a State Delta Subscription. You can listen for state changes by address prefix, and either store the values or act on particular changes

pschwarz (Wed, 21 Jun 2017 14:02:56 GMT):
Unfortunately, we don't have a canonical example of how to use that, yet but we're working on it

pschwarz (Wed, 21 Jun 2017 14:03:34 GMT):
Non-canon: https://github.com/peterschwarz/state-export-prototype

pschwarz (Wed, 21 Jun 2017 14:04:53 GMT):
By the submitting a new transaction suggestion, you could submit the transaction from the `apply` method in your transaction handler

LoubnaBaroudi (Wed, 21 Jun 2017 14:08:01 GMT):
Ok I will try to look at it and give you feedbacks asap

pschwarz (Wed, 21 Jun 2017 14:21:52 GMT):
Take your time, it's a pretty involved example :)

boydjohnson (Wed, 21 Jun 2017 14:52:39 GMT):

Message Attachments

boydjohnson (Wed, 21 Jun 2017 14:52:39 GMT):

Message Attachments

jsmitchell (Wed, 21 Jun 2017 14:59:22 GMT):
@boydjohnson looks like validator-0_1 gets stuck on block 219cb4e0

jsmitchell (Wed, 21 Jun 2017 15:00:13 GMT):
it is about 8 seconds behind the other two receiving the block, and the forking activity around 04:05:54 looks a bit odd to me.

jsmitchell (Wed, 21 Jun 2017 15:00:24 GMT):
@cianx should take a peek at it

boydjohnson (Wed, 21 Jun 2017 15:06:12 GMT):
@jsmitchell I got pulled away. validator-0_1 has a serial scheduler, and it looked to me that it started validating a block and then never completed.

jsmitchell (Wed, 21 Jun 2017 15:06:29 GMT):
@boydjohnson which block?

jsmitchell (Wed, 21 Jun 2017 15:06:51 GMT):
7e8...

boydjohnson (Wed, 21 Jun 2017 15:08:24 GMT):
Yeah, validator-0_1 | [04:05:54.065 INFO chain] Starting block validation of : 7e8a41e6(6, S:d799cb77, P:219cb4e0) and then not "on_block_validated".

jsmitchell (Wed, 21 Jun 2017 15:08:25 GMT):
this looks similar to that issue that jamie and ryan were seeing

boydjohnson (Wed, 21 Jun 2017 15:08:37 GMT):
Yeah, that came to mind.

jsmitchell (Wed, 21 Jun 2017 15:09:09 GMT):
do you have jamie's logging changes?

cianx (Wed, 21 Jun 2017 15:09:18 GMT):
What is the network configuration?

jsmitchell (Wed, 21 Jun 2017 15:09:40 GMT):
i was talking with him yesterday, and it sounds like something under _verify_block_batches is hanging

boydjohnson (Wed, 21 Jun 2017 15:09:49 GMT):
@cianx just a second

jsmitchell (Wed, 21 Jun 2017 15:10:26 GMT):
I doubt it's network related. It has the block, it just never comes back from validating it

jsmitchell (Wed, 21 Jun 2017 15:10:48 GMT):
and that validator is silent for the next minute until the block list occurs at the end of the test

jsmitchell (Wed, 21 Jun 2017 15:11:29 GMT):
@boydjohnson is this from a local run? how frequently is it happening?

boydjohnson (Wed, 21 Jun 2017 15:11:32 GMT):
validator-0 doesn't have any --peers listed, validator-1 has validator-0 as a peer, and validator-2 has validator-1 and validator-0 as peers.

boydjohnson (Wed, 21 Jun 2017 15:11:39 GMT):
16th run of a local test.

jsmitchell (Wed, 21 Jun 2017 15:12:24 GMT):
i think we need substantially better debug logging on all the stuff underneath verify block batches

boydjohnson (Wed, 21 Jun 2017 15:12:39 GMT):
Yeah

jsmitchell (Wed, 21 Jun 2017 15:12:46 GMT):
remember that issue that I tracked down before in the executor with the waiter threads?

jsmitchell (Wed, 21 Jun 2017 15:12:52 GMT):
this seems very similar to that

cianx (Wed, 21 Jun 2017 15:17:16 GMT):
There is not enough in these logs to diagnose the issue. I'll start some runs on my workstation with debug logging and some insturmentation in the BlockValidator.

jsmitchell (Wed, 21 Jun 2017 15:17:33 GMT):
@cianx jamie has already gone deep down this path with additional logging

cianx (Wed, 21 Jun 2017 15:17:45 GMT):
branch?

jsmitchell (Wed, 21 Jun 2017 15:17:47 GMT):
he has a branch with like 50 additional logging statements in the executor and scheduler

jsmitchell (Wed, 21 Jun 2017 15:17:51 GMT):
I don't have it

jsmitchell (Wed, 21 Jun 2017 15:18:10 GMT):
he says its something under verify block batches

jsmitchell (Wed, 21 Jun 2017 15:18:27 GMT):
the problem is it's only infrequently reproducable locally

jsmitchell (Wed, 21 Jun 2017 15:18:37 GMT):
paging @jjason

jsmitchell (Wed, 21 Jun 2017 15:19:00 GMT):
apparently it breaks on aws with regularity, which is baffling to me

cianx (Wed, 21 Jun 2017 15:20:15 GMT):
odds are if the scheduler is not returning it it `scheduler.complete(block=True)` in that function. Which is where we had the problem before.

boydjohnson (Wed, 21 Jun 2017 15:20:51 GMT):
https://github.com/boydjohnson/sawtooth-core/tree/parallel-poet This was the branch that I had it happen on. Running 'count=0; while ./bin/run_docker_test ...../test-poet-smoke.yaml; do (( count++ )); done; echo $count'.

jsmitchell (Wed, 21 Jun 2017 15:21:22 GMT):
that doesn't have jamie's logging commits though...

boydjohnson (Wed, 21 Jun 2017 15:21:29 GMT):
No.

jsmitchell (Wed, 21 Jun 2017 15:24:49 GMT):
I find it amusing that the parallel scheduler is working and the serial scheduler is broken

boydjohnson (Wed, 21 Jun 2017 15:25:00 GMT):
Let's make the switch now!

jsmitchell (Wed, 21 Jun 2017 15:25:36 GMT):
@boydjohnson this self._condition.wait_for(lambda: self._complete) seems pretty brittle

jsmitchell (Wed, 21 Jun 2017 15:25:48 GMT):
given the scenario under which self._complete is set to True

boydjohnson (Wed, 21 Jun 2017 15:26:23 GMT):
Yeah, because the condition needs to be acquired for it to be set to True?

jsmitchell (Wed, 21 Jun 2017 15:27:35 GMT):
well, that, and also that something might go wrong which keeps self._final == False or is_last_batch == False

jsmitchell (Wed, 21 Jun 2017 15:28:49 GMT):
it will just block forever if something in batch execution hangs

boydjohnson (Wed, 21 Jun 2017 15:29:59 GMT):
Yeah, We could put a timeout on it, that if it doesn't become complete after some amount of time, it comes back with a status other than valid.

jsmitchell (Wed, 21 Jun 2017 15:30:13 GMT):
right, and then the journal could retry it

jsmitchell (Wed, 21 Jun 2017 15:31:10 GMT):
but, we need to figure out root cause

boydjohnson (Wed, 21 Jun 2017 15:32:04 GMT):
Yeah, I worry that root cause is the complicated logic in set_transaction_execution_result being broken somehow.

jsmitchell (Wed, 21 Jun 2017 15:32:50 GMT):
yay, it's @jjason !

jjason (Wed, 21 Jun 2017 15:33:09 GMT):
One of the things I wondered about was the use of a single condition variable in the serial scheduler for multiple different "events".

jsmitchell (Wed, 21 Jun 2017 15:33:30 GMT):
@jjason we need a branch with your logging commits

jjason (Wed, 21 Jun 2017 15:33:36 GMT):
But, I haven't dug in far enough to convince myself that it all works okay.

jsmitchell (Wed, 21 Jun 2017 15:33:37 GMT):
so that boyd can pick cherries

jjason (Wed, 21 Jun 2017 15:33:50 GMT):
Let me get it checked in.

jjason (Wed, 21 Jun 2017 15:43:52 GMT):
Here is branch: https://github.com/jjason/sawtooth-core/tree/InvestigateAWSProblem

boydjohnson (Wed, 21 Jun 2017 15:48:58 GMT):
Thanks @jjason I will have info in about an hour...

jjason (Wed, 21 Jun 2017 15:51:39 GMT):
Okay.

jjason (Wed, 21 Jun 2017 15:52:57 GMT):
I tried to sprinkle some logging messages in `serial.py` and it always halted on first call to `complete()`. I don't know if i screwed something up, or it was a timing issue, or what the heck happened.

jjason (Wed, 21 Jun 2017 15:53:19 GMT):
So, I removed those logging messages. On my system, with the logging messages in the branch, it passes PoET smoke test every time.

boydjohnson (Wed, 21 Jun 2017 16:30:25 GMT):
So with some logging statement in, it always halted, but then with more it always passes?

cianx (Wed, 21 Jun 2017 17:43:50 GMT):
sounds like a timing issue.

amundson (Wed, 21 Jun 2017 18:15:06 GMT):
or locking, I think, the logging library uses a lock internally

amundson (Wed, 21 Jun 2017 18:15:06 GMT):
or threading, I think, the logging library uses a lock internally

amundson (Wed, 21 Jun 2017 18:17:14 GMT):
is the scheduler being used from multiple threads?

boydjohnson (Wed, 21 Jun 2017 18:24:23 GMT):
Yes, and in different situations, differing number of threads.

ecapriolo (Wed, 21 Jun 2017 18:38:50 GMT):
Has joined the channel.

ecapriolo (Wed, 21 Jun 2017 18:40:07 GMT):
Hello all. Just getting into blockchain/hyperledger. Lots of interesting things to learn (and code) I was if someone could point me to the source code of "https://bond.sawtooth.me/#/welcome"

pschwarz (Wed, 21 Jun 2017 18:41:41 GMT):
That example is against the previous version, which is not compatible with the current (0.8) version. But, if you'd like to look at the source, you'll find it here: https://github.com/hyperledger/sawtooth-core/tree/0-7/extensions/bond

ecapriolo (Wed, 21 Jun 2017 18:43:07 GMT):
@pschwarz Thank you. Also thanks for pointing out that it is out of date. I can not commit yet, but is the bond application something you would like to update and keep in the source tree or should it be a separate project?

pschwarz (Wed, 21 Jun 2017 18:45:32 GMT):
I think there's debate about whether something like that should or shouldn't be in the project. It probably can stand on its own. That being said, if it's something you'd like to port to 0.8, that would be awesome

pschwarz (Wed, 21 Jun 2017 19:09:34 GMT):
@cianx: Wish I could figure out how I got it into this state: ``` [19:07:46.282 CRITICAL publisher] on_check_publish_block exception. [19:07:46.282 ERROR publisher] None is not in list Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 505, in on_check_publish_block last_batch_index = self._pending_batches.index(last_batch) ValueError: None is not in list ```

pschwarz (Wed, 21 Jun 2017 19:09:34 GMT):
@cianx: Wish I could figure out how I got it into this state: ``` [19:07:46.282 CRITICAL publisher] on_check_publish_block exception. │[19:07:36.574 DEBUG handler] Incrementing "abaciscus" by 4 [19:07:46.282 ERROR publisher] None is not in list │[19:07:36.575 WARNING core] Invalid Transaction Verb is "inc" but name "abaciscus" not in state Traceback (most recent call last): │[19:07:36.580 DEBUG core] received message of type: TP_PROCESS_REQUEST File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 505, in on_check_publish_block │[19:07:36.584 DEBUG handler] Decrementing "abask" by 6 last_batch_index = self._pending_batches.index(last_batch) │[19:07:36.585 WARNING core] Invalid Transaction Verb is "dec" but name "abask" not in state ValueError: None is not in list ```

pschwarz (Wed, 21 Jun 2017 19:09:34 GMT):
@cianx: Wish I could figure out how I got it into this state: ``` ValueError: None is not in list [19:07:46.282 CRITICAL publisher] on_check_publish_block exception. [19:07:46.282 ERROR publisher] None is not in list Traceback (most recent call last): File "/project/sawtooth-core/validator/sawtooth_validator/journal/publisher.py", line 505, in on_check_publish_block last_batch_index = self._pending_batches.index(last_batch) ValueError: None is not in list ```

mfford (Wed, 21 Jun 2017 19:17:26 GMT):
Reminder that the next Hyperledger Sawtooth Team Technical Forum is tomorrow, Thursday, June 22nd from 10-11am CDT. We invite Hyperledger community members interested in Hyperledger Sawtooth to join us! Agenda: 1. Introductions-Mark Ford 2. PoET & Sawtooth Lake-Jamie Jason 3. Open Forum Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi

cianx (Wed, 21 Jun 2017 20:45:47 GMT):
@pschwarz I see what happened. I will send you a pr this afternoon.

jjason (Wed, 21 Jun 2017 20:48:39 GMT):
@boydjohnson With logging in `scheduler.py` it halted. When I took logging out of `schedule.py` things were happy - at least on my local system. On AWS, even without logging in `scheduler.py`, some validators halted when calling `complete()`

boydjohnson (Wed, 21 Jun 2017 20:50:43 GMT):
I've been running a modified poet-smoke on the parallel scheduler branch with the logging in. I wish there was a more deterministic way to get failure.

jsmitchell (Wed, 21 Jun 2017 20:51:12 GMT):
#debuglife

boydjohnson (Wed, 21 Jun 2017 20:51:28 GMT):
That was a Pixar movie, right?

jsmitchell (Wed, 21 Jun 2017 20:51:41 GMT):
that was Debugs Life

jjason (Wed, 21 Jun 2017 20:52:08 GMT):
@boydjohnson That's why you have to love threading bugs....

toddmvc (Wed, 21 Jun 2017 22:25:48 GMT):
Has joined the channel.

MaximeLandon (Wed, 21 Jun 2017 22:47:35 GMT):

Message Attachments

MaximeLandon (Wed, 21 Jun 2017 22:48:46 GMT):

Message Attachments

MaximeLandon (Wed, 21 Jun 2017 22:50:03 GMT):
Hello everyone, I would like to ask what are the roles of these two functions in the file create_batch.py in the intkey_python/sawtooth_intkey/client_cli/ directory ?

MaximeLandon (Wed, 21 Jun 2017 22:52:09 GMT):
More precisely, I don't understand why we need both of them

jsmitchell (Wed, 21 Jun 2017 22:53:11 GMT):
the intkey client grew up over time

jsmitchell (Wed, 21 Jun 2017 22:53:35 GMT):
do_populate creates a bunch of 'set' transactions

jsmitchell (Wed, 21 Jun 2017 22:54:52 GMT):
do_generate creates a bunch of 'inc' and 'dec' transactions on those 'set' names

MaximeLandon (Wed, 21 Jun 2017 22:55:07 GMT):
thanks @jsmitchell for your always fast answers,

jsmitchell (Wed, 21 Jun 2017 22:55:09 GMT):
i usually just use `intkey workload` :)

MaximeLandon (Wed, 21 Jun 2017 22:55:55 GMT):
Okay so that means one of these functions cannot live without the other, given you can only inc/dec in an address that is already set

MaximeLandon (Wed, 21 Jun 2017 22:56:12 GMT):
Ok I'm going to take a look at the intkey workload

MaximeLandon (Wed, 21 Jun 2017 22:58:40 GMT):
And a last question @jsmitchell : Of these files in the client_cli directory, which files do work together ? I guess we don't need them all, so what would be the most convenient ?

jsmitchell (Wed, 21 Jun 2017 22:59:11 GMT):
look at the noop example

jsmitchell (Wed, 21 Jun 2017 22:59:20 GMT):
all it does is workload

jsmitchell (Wed, 21 Jun 2017 22:59:25 GMT):
and it is stripped down

MaximeLandon (Wed, 21 Jun 2017 22:59:38 GMT):
okayy thanks I will look at this

jsmitchell (Wed, 21 Jun 2017 22:59:52 GMT):
https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/noop_python/sawtooth_noop/client_cli

MaximeLandon (Wed, 21 Jun 2017 23:00:47 GMT):
yes there is actually no separate file populate.py and generate.py in this directory

MaximeLandon (Wed, 21 Jun 2017 23:01:08 GMT):
I guess they have been 'merged' into the others ?

MaximeLandon (Wed, 21 Jun 2017 23:05:43 GMT):
Actually these functions populate and generate are no longer in the noop client_cli files, why is that ? I don't get it

jjason (Wed, 21 Jun 2017 23:06:01 GMT):
It is not common knowledge, but @jsmitchell is actually a smart bot.

jsmitchell (Wed, 21 Jun 2017 23:06:09 GMT):
they are not necessary for workload generation...

jjason (Wed, 21 Jun 2017 23:06:14 GMT):
He never sleeps.

jsmitchell (Wed, 21 Jun 2017 23:06:18 GMT):
the client can be whatever you want...

MaximeLandon (Wed, 21 Jun 2017 23:06:19 GMT):
ahahah

jsmitchell (Wed, 21 Jun 2017 23:06:28 GMT):
@jjason not that smart

MaximeLandon (Wed, 21 Jun 2017 23:06:36 GMT):
@jjason he is my angel

MaximeLandon (Wed, 21 Jun 2017 23:06:41 GMT):
my so patient angel

jjason (Wed, 21 Jun 2017 23:06:42 GMT):
You mean @jjason == Not that smart

jsmitchell (Wed, 21 Jun 2017 23:07:38 GMT):
ridiculous

jsmitchell (Wed, 21 Jun 2017 23:07:49 GMT):
i would never dream of saying something like that

jsmitchell (Wed, 21 Jun 2017 23:07:54 GMT):
to your face

jjason (Wed, 21 Jun 2017 23:07:57 GMT):
Nah....just think it ;)

jsmitchell (Wed, 21 Jun 2017 23:08:31 GMT):
@MaximeLandon @jjason is one of our best developers

jsmitchell (Wed, 21 Jun 2017 23:09:02 GMT):
everyone else struggles to measure up

jjason (Wed, 21 Jun 2017 23:10:27 GMT):
Okay....now I am going to get an ego.

jsmitchell (Wed, 21 Jun 2017 23:10:38 GMT):
it's pronounced eggo

jjason (Wed, 21 Jun 2017 23:10:50 GMT):
And never confuse randomly typing at the keyboard with being a good developer. Even monkeys get lucky sometimes.

jjason (Wed, 21 Jun 2017 23:11:09 GMT):
Speaking of eggo....patiently waiting for season 2.

jsmitchell (Wed, 21 Jun 2017 23:11:15 GMT):
yeaaaaahh

jsmitchell (Wed, 21 Jun 2017 23:11:24 GMT):
halloweentime, right?

jjason (Wed, 21 Jun 2017 23:12:11 GMT):
Yessirree Bob!!!!

jjason (Wed, 21 Jun 2017 23:12:22 GMT):
No trick or treating for me.

jsmitchell (Wed, 21 Jun 2017 23:12:42 GMT):
I'm going to binge the heck out of that

jsmitchell (Wed, 21 Jun 2017 23:12:57 GMT):
@jjason have you watched "Master of None" on netflix?

jjason (Wed, 21 Jun 2017 23:13:05 GMT):
Yes. Love it.

jsmitchell (Wed, 21 Jun 2017 23:13:17 GMT):
:thumbsup:

jjason (Wed, 21 Jun 2017 23:13:20 GMT):
I really liked Aziz Ansari on Parks & Req.

jjason (Wed, 21 Jun 2017 23:13:22 GMT):
Rec.

jjason (Wed, 21 Jun 2017 23:13:53 GMT):
Somehow we need to bring this conversation back to Sawtooth before @Dan catches us ;)

jsmitchell (Wed, 21 Jun 2017 23:13:59 GMT):
Parks and Req. is about a Business Analyst named John Parks.

jjason (Wed, 21 Jun 2017 23:14:04 GMT):
Otherwise, he'll want to talk about Stranger Things.

MaximeLandon (Wed, 21 Jun 2017 23:15:47 GMT):
My lords: (just to be sure) that means I can set up my TxnFam with the client_cli model of noop example ?

jsmitchell (Wed, 21 Jun 2017 23:16:09 GMT):
@MaximeLandon what do you want your client cli to do?

MaximeLandon (Wed, 21 Jun 2017 23:17:19 GMT):
I want my client to create and/or sell green certificates (in case you're not familiar, a mere piece of paper proving the green origin of electricity)

MaximeLandon (Wed, 21 Jun 2017 23:18:56 GMT):
So I have a couple elements in the payload, but the only two actions that can be performed are 'set' or 'sell' (I replaced 'Verb' by 'Action' -rewriting all underlying functions of course-)

jsmitchell (Wed, 21 Jun 2017 23:20:09 GMT):
so, think about the functions you want it to do. you might want `green list` `green show ` `green create ...` `green sell ...`

MaximeLandon (Wed, 21 Jun 2017 23:23:41 GMT):
Okay so I guess these functions are going to be written in the main.py file

MaximeLandon (Wed, 21 Jun 2017 23:25:42 GMT):
And once again sorry for all these misunderstandings, but the good news is that the client_cli is the last black hole for me (at least for this intkey example)

MaximeLandon (Wed, 21 Jun 2017 23:26:52 GMT):
So if I may ask for a VERY VERY BRIEF list of the files in the client_cli directory, and of their role, I WILL DEFINITELY NOT BOTHER YOU ANYMORE FOR 2 WEEKS

MaximeLandon (Wed, 21 Jun 2017 23:26:54 GMT):
;)

jsmitchell (Wed, 21 Jun 2017 23:27:46 GMT):
Well, I already left work :)

jsmitchell (Wed, 21 Jun 2017 23:27:58 GMT):
Maybe @jjason could help you

jsmitchell (Wed, 21 Jun 2017 23:28:04 GMT):
_runs_

MaximeLandon (Wed, 21 Jun 2017 23:28:11 GMT):
ahahahahahahahahaahahah

MaximeLandon (Wed, 21 Jun 2017 23:28:49 GMT):
anyway thanks @jsmitchell for your patience and kindnes

jsmitchell (Wed, 21 Jun 2017 23:29:15 GMT):
Of course!

jjason (Wed, 21 Jun 2017 23:29:22 GMT):
@MaximeLandon I will try to best of my ability to answer your questions. I am not super familiar with the code, but I will look. @jsmitchell is the bomb.

MaximeLandon (Wed, 21 Jun 2017 23:30:00 GMT):
ahahahahah thanks a lot @jjason I appreciate :)

jjason (Wed, 21 Jun 2017 23:34:27 GMT):
Are you talking about this directory: `/sdk/examples/noop_python/sawtooth_noop/client_cli`?

MaximeLandon (Wed, 21 Jun 2017 23:34:34 GMT):
yes

jjason (Wed, 21 Jun 2017 23:34:42 GMT):
Okay. Let me go take a look.

MaximeLandon (Wed, 21 Jun 2017 23:35:08 GMT):
or alternatively, and maybe better the /sdk/examples/intkey_python/sawtooth_intkey/client_cli

MaximeLandon (Wed, 21 Jun 2017 23:35:15 GMT):
thanks a lot

jjason (Wed, 21 Jun 2017 23:35:41 GMT):
Okay....I'll look at that.

mattalhonte (Wed, 21 Jun 2017 23:51:08 GMT):
Trying to install on Ubuntu with Docker. Not sure why it's failing ```docker-compose -f sawtooth-default.yaml up Creating network "sawtoothapp_default" with the default driver Pulling tp_settings (hyperledger/sawtooth-tp_settings:latest)... ERROR: manifest for hyperledger/sawtooth-tp_settings:latest not found```

jsmitchell (Wed, 21 Jun 2017 23:56:54 GMT):
@MaximeLandon you need to call your client 'certsverts'

jjason (Wed, 21 Jun 2017 23:58:19 GMT):
@MaximeLandon `main.py` - main entry point. Sets up command-line parsers and based upon command, invokes the correct function. `create_batch.py` - implements `intkey create_batch ...` command, which appears to do `populate` followed by `generate` to the same output file `exceptions.py` - defines any exceptions for intkey CLI `generate.py` - implements `intkey generate ...` command, which creates a file with `--count` batches, each containing a random number of transactions (between 0 a `--pool-size`), which are randomly chosen to be `inc` or `dec` `load.py` - implements `inteky load ...` command, which takes an input file generated by `create_batch`, `generate`, or `populate` and submits the batchs to a validator `populate.py` - implements `intkey populate ...` command, which creates a file with one batch of `--pool-size` transactions that `set` an intkey value `workload.py` - implements `intkey workload ....` command, which generates a sythetic workload composed of `set` and `inc` transactions, submitting at some predetermined rate until stopped (presumably with `Ctrl-C`)

jjason (Wed, 21 Jun 2017 23:58:19 GMT):
@MaximeLandon `main.py` - main entry point. Sets up command-line parsers and based upon command, invokes the correct function. `create_batch.py` - implements `intkey create_batch ...` command, which appears to do `populate` followed by `generate` to the same output file `exceptions.py` - defines any exceptions for intkey CLI `generate.py` - implements `intkey generate ...` command, which creates a file with `--count` batches, each containing a random number of transactions (between 0 a `--pool-size`), which are randomly chosen to be `inc` or `dec` `load.py` - implements `intkey load ...` command, which takes an input file generated by `create_batch`, `generate`, or `populate` and submits the batchs to a validator `populate.py` - implements `intkey populate ...` command, which creates a file with one batch of `--pool-size` transactions that `set` an intkey value `workload.py` - implements `intkey workload ....` command, which generates a sythetic workload composed of `set` and `inc` transactions, submitting at some predetermined rate until stopped (presumably with `Ctrl-C`)

jjason (Thu, 22 Jun 2017 00:00:48 GMT):
I hope that is what you were asking for....and helpful.

MaximeLandon (Thu, 22 Jun 2017 00:22:42 GMT):
That-is-wonderful

MaximeLandon (Thu, 22 Jun 2017 00:22:47 GMT):
Thanks a lot

MaximeLandon (Thu, 22 Jun 2017 00:23:52 GMT):
I've read the files too at the same time, and it appears that I had read them but way to fast. Still being a large amateur at CS, I'm going too fast...

MaximeLandon (Thu, 22 Jun 2017 00:25:54 GMT):
ahahah @jsmitchell just read your message :D

MaximeLandon (Thu, 22 Jun 2017 00:28:07 GMT):
actually green certificates are a pretty authoritary way of directing capital allocation toward renewables. These certificates take some value merely because people must give them back in order to avoid fines. So people buy these certificates, although they have NO VALUE but to be the only mean to pay "your taxes".

MaximeLandon (Thu, 22 Jun 2017 00:29:33 GMT):
The dollar and any single currency in the world today works actually the same: they have value because the State only accepts these bills for tax payment, which automatically gives to these bills a value: you need them if you don't want to go to jail, guilty of tax evasion.

MaximeLandon (Thu, 22 Jun 2017 00:38:47 GMT):
And tomorrow I ask for a few more precisions if possible: In main.py , I am not sure of which command to run for output of worload --rate, etc...

ecapriolo (Thu, 22 Jun 2017 00:44:13 GMT):
On a high level what is the overlap between https://github.com/hyperledger/fabric-api and sawtooth. It seems they both provide an API

jsmitchell (Thu, 22 Jun 2017 00:45:09 GMT):
@ecapriolo there is no overlap. They are completely separate projects.

ecapriolo (Thu, 22 Jun 2017 00:48:16 GMT):
I am a little less clear about fabric api. There exists a fabric-java-sdk and the fabrick-api is a java project that also provides and api. Trying to understand when to use one vs the other.

jsmitchell (Thu, 22 Jun 2017 00:49:01 GMT):
@ecapriolo maybe try in #fabric - this channel is for the sawtooth project

ecapriolo (Thu, 22 Jun 2017 00:49:15 GMT):
TX :)

MaximeLandon (Thu, 22 Jun 2017 00:51:25 GMT):
@jsmitchell if I say that most of the main.py functions are automatically used when submitting an intkey transaction, am I right ?

jsmitchell (Thu, 22 Jun 2017 00:56:32 GMT):
I'm not near a terminal @MaximeLandon

jsmitchell (Thu, 22 Jun 2017 00:56:42 GMT):
Doesn't sound right though

MaximeLandon (Thu, 22 Jun 2017 00:57:13 GMT):
oh ok i'm sorry I had forgot...

MaximeLandon (Thu, 22 Jun 2017 00:57:23 GMT):
Okay but then let's see that tomorrow

MaximeLandon (Thu, 22 Jun 2017 00:57:28 GMT):
have a good evening

jjason (Thu, 22 Jun 2017 01:21:05 GMT):
@MaximeLandon Roughly, yes.

jjason (Thu, 22 Jun 2017 01:26:04 GMT):
@MaximeLandon `main.py` basically (1) sets up the main or parent command-line argument parser and then let's each sub-command (`load`, `populate`, etc.) set up its command-specific sub-parser, (2) hands of the command-line arguments to the parent parser, (3) sets up any logging, and then (4) based on the intkey sub-command lets the appropriate sub-command take over and do its thing. While you don't have to structure your code this way, it is a clean way to break up things.

jjason (Thu, 22 Jun 2017 01:26:04 GMT):
@MaximeLandon `main.py` basically (1) sets up the main or parent command-line argument parser and then let's each sub-command (`load`, `populate`, etc.) set up its command-specific sub-parser, (2) hands off the command-line arguments to the parent parser, (3) sets up any logging, and then (4) based on the intkey sub-command lets the appropriate sub-command take over and do its thing. While you don't have to structure your code this way, it is a clean way to break up things.

jjason (Thu, 22 Jun 2017 01:27:42 GMT):
Anyone with Rocket.Chat iOS app having problems launching the app??? I launch the app and I get the Rocket.Chat equivalent of the spinner....forever. It was working as of a few days ago....now I know why I was not getting notifications on my phone when someone directed a message at me.

jjason (Thu, 22 Jun 2017 01:39:31 GMT):
Well...crud...the iOS app is now telling me that HL is running an out of date version of server.....

jjason (Thu, 22 Jun 2017 01:41:43 GMT):
Deleting and re-installing seemed to fix it....Sigh.

zac (Thu, 22 Jun 2017 02:11:51 GMT):
@ecapriolo The answer to your question is always use Sawtooth because Sawtooth is the best :wink:

zac (Thu, 22 Jun 2017 02:12:25 GMT):
Seriously though, I know very little about Fabric, or how it works in comparison to Sawtooth

zac (Thu, 22 Jun 2017 02:13:03 GMT):
But you might bug @JonathanLevi. He's built a couple of things with both Hyperledger projects.

zac (Thu, 22 Jun 2017 02:13:24 GMT):
And Ethereum and some other toolsets too I think.

mimineko (Thu, 22 Jun 2017 05:41:52 GMT):
Has joined the channel.

LoubnaBaroudi (Thu, 22 Jun 2017 09:21:07 GMT):
I have created my own transaction family and I want to run it now manually through the command line. But I have no idea how I can "install" my files, run my transaction processor etc

MaximeLandon (Thu, 22 Jun 2017 13:30:24 GMT):
many thanks @jjason for the answer on main.py. A last question, if you don't mind: Once all my files are written and ready (client_cli files, processor files, tests, packaging files), how am I supposed to deploy this ? It also seems I need a binary for my TxnFam in /usr/bin, just like tp_intkey_python. Do I need to create it by my own, or is this automatically generated ? THANKS THANKS anyway for all your help !

jsmitchell (Thu, 22 Jun 2017 14:48:03 GMT):
@MaximeLandon that is dictated by the setup.py file

jsmitchell (Thu, 22 Jun 2017 14:49:07 GMT):
@LoubnaBaroudi look at the `bin/intkey` file in the repo

jjason (Thu, 22 Jun 2017 14:49:10 GMT):
@MaximeLandon If you want to simply tests locally, you can set up your Python path (`PYTHONPATH` environment variable) to include the path to where you `.py` files live. if you were going to distribute to others, you would end up creating a Python package for it (look at example for `setup.py` file for how it is done). @ryanbeck and @adamludvik know more about the packaging sutff than I do. If you look the `intkey` "binary", you'll notice it simply manually sets the Python path for the packages/modules it needs and then invokes the `main` function in `main.py`

jjason (Thu, 22 Jun 2017 14:49:10 GMT):
@MaximeLandon If you want to simply test locally, you can set up your Python path (`PYTHONPATH` environment variable) to include the path to where you `.py` files live. if you were going to distribute to others, you would end up creating a Python package for it (look at example for `setup.py` file for how it is done). @ryanbeck and @adamludvik know more about the packaging sutff than I do. If you look the `intkey` "binary", you'll notice it simply manually sets the Python path for the packages/modules it needs and then invokes the `main` function in `main.py`

ryanbeck (Thu, 22 Jun 2017 14:49:10 GMT):
Has joined the channel.

jjason (Thu, 22 Jun 2017 14:49:27 GMT):
That file is not automatically generated.

jjason (Thu, 22 Jun 2017 14:52:26 GMT):
@LoubnaBaroudi Take a look at the intkey transaction processor in `sawtooth-core/sdk/examples/inkey_python` for an example of how you can package up your transaction processor. If you look in `sawtooth-core/bin` you'll also see the `tp_intkey_python`, which is used to launch this transaction processor.

LoubnaBaroudi (Thu, 22 Jun 2017 14:53:05 GMT):
I have all of these files and I have redirected my path to where they are

jsmitchell (Thu, 22 Jun 2017 14:53:10 GMT):
yeah, what @jjason said

jsmitchell (Thu, 22 Jun 2017 14:54:36 GMT):
@LoubnaBaroudi in the sawtooth architecture, transaction processors are separate processes that talk to the validator process over a network connection. We usually run them on the same machine and they talk over localhost:4004 by default.

jsmitchell (Thu, 22 Jun 2017 14:54:53 GMT):
So, if you follow the intkey example, one of the steps starts up tp_intkey_python

jsmitchell (Thu, 22 Jun 2017 14:55:08 GMT):
and you see log messages on the validator showing that transaction processor connecting

jsmitchell (Thu, 22 Jun 2017 14:55:17 GMT):
you will want to do the same thing with your transaction processor

LoubnaBaroudi (Thu, 22 Jun 2017 14:56:20 GMT):
How can I create the command for my transaction family?

LoubnaBaroudi (Thu, 22 Jun 2017 14:56:33 GMT):
I know what I need but I don't know how to run it

jsmitchell (Thu, 22 Jun 2017 14:56:47 GMT):
do you mean a command line client to submit and show data associated with your transaction family?

jsmitchell (Thu, 22 Jun 2017 14:57:11 GMT):
or the transaction processor?

jsmitchell (Thu, 22 Jun 2017 14:57:22 GMT):
these are two separate things

LoubnaBaroudi (Thu, 22 Jun 2017 14:57:43 GMT):
I want a transaction processor so I can submit my transactions

toddojala (Thu, 22 Jun 2017 14:58:18 GMT):
@LoubnaBaroudi The XO transaction family is a good example of a family that has a transaction processor, as well as a CLI that allows you to use this transaction family as it was designed to be used (play tic-tac-toe).

toddojala (Thu, 22 Jun 2017 14:58:53 GMT):
@LoubnaBaroudi You can submit transactions using the "sawtooth submit" command, once your transaction processor has connected to the validator and registered...

LoubnaBaroudi (Thu, 22 Jun 2017 15:00:13 GMT):
I've looked at these examples carefully and still don't see when the command tp_xo_python are created to connect to the host and be able to exchange with the validator

jsmitchell (Thu, 22 Jun 2017 15:00:51 GMT):
`bin/tp_xo_python`

jsmitchell (Thu, 22 Jun 2017 15:01:20 GMT):
it imports sawtooth_xo.processor.main and then runs main()

LoubnaBaroudi (Thu, 22 Jun 2017 15:01:42 GMT):
ok so I just write a similar program and run it in my terminal?

jsmitchell (Thu, 22 Jun 2017 15:01:47 GMT):
yep

jsmitchell (Thu, 22 Jun 2017 15:02:44 GMT):
if you look at `sawtooth-core/sdk/examples/xo_python/sawtooth_xo/processor/main.py`, you will see the main() method and the parser setup with the default values for endpoint to connect to and so forth.

LoubnaBaroudi (Thu, 22 Jun 2017 15:04:25 GMT):
yeah I've seen it, the missing part was the file in bin

MaximeLandon (Thu, 22 Jun 2017 15:40:10 GMT):
@jsmitchell @jjason thanks for your help, that was the missing part !

jsmitchell (Thu, 22 Jun 2017 15:40:33 GMT):
supercool

LoubnaBaroudi (Thu, 22 Jun 2017 15:46:15 GMT):
it works ;)

jsmitchell (Thu, 22 Jun 2017 15:48:39 GMT):
supersweet

boydjohnson (Thu, 22 Jun 2017 17:39:00 GMT):
FWIW, I have some logs from a failure of test_poet_smoke.yaml but I set the number of workers in the FutureCollection threadpool to 1. I had wondered if this threadpool was getting exhausted and if this would trigger failure sooner. I'll post some logs shortly.

boydjohnson (Thu, 22 Jun 2017 17:40:22 GMT):

Message Attachments

boydjohnson (Thu, 22 Jun 2017 17:41:59 GMT):

Message Attachments

boydjohnson (Thu, 22 Jun 2017 17:44:47 GMT):
This was the branch that I was repeatedly running test_poet_smoke.yaml on: https://github.com/boydjohnson/sawtooth-core/tree/logging.heisenbug.

jsmitchell (Thu, 22 Jun 2017 17:57:01 GMT):
What's with that 5ee... transaction three times in a row?

boydjohnson (Thu, 22 Jun 2017 18:01:10 GMT):
Gaa, that is weird. Three times next_transaction returns it. 2 times that I see the txn_result is set.

fz (Thu, 22 Jun 2017 18:04:38 GMT):
hi everyone...Is there a recording of today's tech presentation?

boydjohnson (Thu, 22 Jun 2017 18:04:45 GMT):
Although, block publishing and validation appear to be happening at the same time here, so 2 makes sense, 3 does not.

boydjohnson (Thu, 22 Jun 2017 18:05:31 GMT):
Hi @fz I think there is. @mfford Do you know the link for the Tech forum presentation today?

mfford (Thu, 22 Jun 2017 18:06:26 GMT):
@tkuhrt will likely make it available shortly

tkuhrt (Thu, 22 Jun 2017 18:07:04 GMT):
Working on the upload as we speak

tkuhrt (Thu, 22 Jun 2017 18:07:21 GMT):
I will send out a link as soon as that finishes

jaketarnow (Thu, 22 Jun 2017 18:07:34 GMT):
Has joined the channel.

fz (Thu, 22 Jun 2017 18:07:40 GMT):
Thanks @tkuhrt @mfford @boydjohnson !

tkuhrt (Thu, 22 Jun 2017 18:24:06 GMT):
All meeting recordings for Sawtooth can be found here: https://drive.google.com/open?id=0B_NJV6eJXAA1VnFUakRzaG1raXc

tkuhrt (Thu, 22 Jun 2017 18:24:06 GMT):
All meeting recordings for Sawtooth going forward can be found here: https://drive.google.com/open?id=0B_NJV6eJXAA1VnFUakRzaG1raXc

tkuhrt (Thu, 22 Jun 2017 18:24:38 GMT):
Link directly to today's Tech Forum recording here: https://drive.google.com/open?id=0B_NJV6eJXAA1TGdfMjJlT0Qtb0U

boydjohnson (Thu, 22 Jun 2017 18:28:17 GMT):

Message Attachments

boydjohnson (Thu, 22 Jun 2017 18:30:36 GMT):
I would expect each txn signature to show up an even number of times less than or equal to 4. 5ee434f6 shows up 5 times, as we discussed, @jsmitchell . Several others, such as 74f910ad, show up 6 times.

fz (Thu, 22 Jun 2017 18:36:37 GMT):
@tkuhrt thanks again!

jjason (Thu, 22 Jun 2017 22:47:34 GMT):
Is there any utility in moving `sawtooth-core/validator/sawtooth_validator/config` (or at least the path part of it) out into its own package? I have come across a couple of instances where it would be nice to get, for example, the sawtooth config directory from a module that is not part of the `sawtooth_validator` package.

jjason (Thu, 22 Jun 2017 22:48:00 GMT):
And I don't want to make the package dependent upon `sawtooth_validator` as it really only needs the path config.

jjason (Thu, 22 Jun 2017 22:49:14 GMT):
And then as a follow-on, if that is acceptable, I would also advocate scrubbing all of the code to make sure that all of it uses the config path module.

jjason (Thu, 22 Jun 2017 22:50:02 GMT):
@pschwarz @boydjohnson @jsmitchell @amundson @Dan @cianx ^^^^^^^^^^^^^

jjason (Thu, 22 Jun 2017 22:50:02 GMT):
@pschwarz @boydjohnson @jsmitchell @amundson @Dan @cianx ^^^^^^^^^^^^^6

liangxueping2015 (Thu, 22 Jun 2017 23:45:03 GMT):
Has joined the channel.

amundson (Fri, 23 Jun 2017 00:59:09 GMT):
@jjason which module?

jjason (Fri, 23 Jun 2017 01:03:17 GMT):
Which module uses path config?

amundson (Fri, 23 Jun 2017 01:04:45 GMT):
yes

jjason (Fri, 23 Jun 2017 01:05:41 GMT):
It would be nice to use the existing path config stuff from IAS proxy to load its TOML config file.

jjason (Fri, 23 Jun 2017 01:06:29 GMT):
I can repeat the code in config/path.py but would rather leverage existing code.

amundson (Fri, 23 Jun 2017 01:07:46 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/sdk/python/sawtooth_sdk/client/config.py

amundson (Fri, 23 Jun 2017 01:07:56 GMT):
is relying on the SDK better?

amundson (Fri, 23 Jun 2017 01:07:56 GMT):
is depending on the SDK better?

amundson (Fri, 23 Jun 2017 01:08:49 GMT):
what I mean is, having a dependency between the ias proxy and python sdk

jjason (Fri, 23 Jun 2017 01:12:04 GMT):
I would be willing to consider finding config directory as part is an SDK. I could see that as potentially being useful to TPs. I would have to think about it more though.

amundson (Fri, 23 Jun 2017 01:12:37 GMT):
well, it's already there is my point

amundson (Fri, 23 Jun 2017 01:25:04 GMT):
if we went down the path of creating a sawtooth config package, I think that it should solve this problem in a language agnostic way (something like pkg-config). that's not less code necessarily, since you have to deal with process execution and parsing the output, but it would at least centralize the calculation of the config information in a way that everything could use it

jjason (Fri, 23 Jun 2017 01:31:07 GMT):
Let me look tomorrow. I didn't bring laptop home.

VarunDeshpande (Fri, 23 Jun 2017 08:23:36 GMT):
Has joined the channel.

VarunDeshpande (Fri, 23 Jun 2017 08:24:20 GMT):
Hello, I am new to Sawtooth. Just one small question, can we implement smart contracts on sawtooth because in documentation I could not find anything substantial :)

pschwarz (Fri, 23 Jun 2017 13:29:45 GMT):
@VarunDeshpande Generally, Sawtooth abstracts out the concept of how transactions are applied. They can either be well-defined blocks of code that read transaction payloads and apply, all the way up to Turing-complete smart-contract engines and much in between. Fundamentally, though they need to change global state in a deterministic way. As far as examples and implemented families, you can find examples of the well-defined variety in the intkey and XO transaction families, or, for smart contracts, we have a transaction family which utilizes the Burrow EVM.

boydjohnson (Fri, 23 Jun 2017 14:05:55 GMT):
@VarunDeshpande Check out these docs for the Burrow EVM Transaction Family: http://intelledger.github.io/0.8/transaction_family_specifications/sawtooth_burrow_evm_family.html

LoubnaBaroudi (Fri, 23 Jun 2017 14:15:13 GMT):
How to remove all the remaining threads of the validator when we want to shut it down

zac (Fri, 23 Jun 2017 14:15:29 GMT):
^C^C^C^C^C^C^C^C^C^C

LoubnaBaroudi (Fri, 23 Jun 2017 14:16:06 GMT):
If I do that, when I launch my validator again, it stops and an error appears

zac (Fri, 23 Jun 2017 14:16:15 GMT):
Oh?

zac (Fri, 23 Jun 2017 14:16:20 GMT):
Address in use?

jsmitchell (Fri, 23 Jun 2017 14:17:28 GMT):
You need to kill the other processes as well.

LoubnaBaroudi (Fri, 23 Jun 2017 14:18:02 GMT):
I did

LoubnaBaroudi (Fri, 23 Jun 2017 14:18:23 GMT):
I get the following message : Cannot have a gesis_batch_file and an existing chain

LoubnaBaroudi (Fri, 23 Jun 2017 14:18:23 GMT):
I get the following message : Cannot have a genesis_batch_file and an existing chain

agunde (Fri, 23 Jun 2017 14:18:24 GMT):
What version of sawtooth are you running?

LoubnaBaroudi (Fri, 23 Jun 2017 14:18:33 GMT):
the last

LoubnaBaroudi (Fri, 23 Jun 2017 14:18:36 GMT):
0.8

agunde (Fri, 23 Jun 2017 14:19:43 GMT):
O you need to remove the data directory if you are trying to start from scratch.

agunde (Fri, 23 Jun 2017 14:20:10 GMT):
AKA with a new genesis block

LoubnaBaroudi (Fri, 23 Jun 2017 14:20:12 GMT):
with rm /var/lib/sawtooth/*?

agunde (Fri, 23 Jun 2017 14:21:14 GMT):
I think so.

LoubnaBaroudi (Fri, 23 Jun 2017 14:23:04 GMT):
no I get the same error

LoubnaBaroudi (Fri, 23 Jun 2017 14:23:10 GMT):
it's an ERROR CLI

LoubnaBaroudi (Fri, 23 Jun 2017 14:23:10 GMT):
it's an ERROR cli

LoubnaBaroudi (Fri, 23 Jun 2017 14:23:52 GMT):
I even tried to remove sawtooth and install it again but it seems to have remaining threads

boydjohnson (Fri, 23 Jun 2017 14:24:23 GMT):
@LoubnaBaroudi Are you installing from debs?

LoubnaBaroudi (Fri, 23 Jun 2017 14:25:07 GMT):
yes

zac (Fri, 23 Jun 2017 14:26:38 GMT):
It's not in `~/sawtooth/` is it?

zac (Fri, 23 Jun 2017 14:26:53 GMT):
The data, I mean

boydjohnson (Fri, 23 Jun 2017 14:27:13 GMT):
You could `ls` and see data files in the directory before removing it.

LoubnaBaroudi (Fri, 23 Jun 2017 14:28:38 GMT):
I have 8 files in /var/lib/sawtooth

agunde (Fri, 23 Jun 2017 14:29:42 GMT):
What are they?

LoubnaBaroudi (Fri, 23 Jun 2017 14:31:39 GMT):
block-00.lmdb // block-00.lmdb-lock // block-chain-id // genesis.batch // merkle-00.lmdb // merkle-00.lmdb-lock // state-deltas-00.lmdb // state-deltas-00.lmdb-lock

agunde (Fri, 23 Jun 2017 14:32:14 GMT):
And when remove them you still get the same "Cannot have a genesis_batch_file ..." error?

LoubnaBaroudi (Fri, 23 Jun 2017 14:32:31 GMT):
yes :/

toddojala (Fri, 23 Jun 2017 14:33:48 GMT):
@LoubnaBaroudi The genesis batch file might be in a different directory. Could you search for it with .. something like "find / -name genesis.batch" (not sure if that's the actual filename)

toddojala (Fri, 23 Jun 2017 14:34:10 GMT):
@LoubnaBaroudi I'll get you the right filename to search for in a bit..

LoubnaBaroudi (Fri, 23 Jun 2017 14:34:30 GMT):
I have a config-genesis.batch in my home directory

toddojala (Fri, 23 Jun 2017 14:35:40 GMT):
aha. Please delete that and try again, as well as deleted the already mentioned data files.

LoubnaBaroudi (Fri, 23 Jun 2017 14:35:57 GMT):
already tried it ^^

toddojala (Fri, 23 Jun 2017 14:36:06 GMT):
Hmm....

LoubnaBaroudi (Fri, 23 Jun 2017 14:38:06 GMT):
[16:36:30.152 INFO core] remaining threads: Thread-1 (_ContextReader), InterconnectThread-5 (Thread), Thread-2 (_ContextWriter) [16:36:33.158 INFO core] remaining threads: Thread-1 (_ContextReader) [16:36:33.159 INFO core] All threads have been stopped and joined

LoubnaBaroudi (Fri, 23 Jun 2017 14:38:30 GMT):
and above that

LoubnaBaroudi (Fri, 23 Jun 2017 14:38:37 GMT):
[16:36:29.745 ERROR cli] Cannot have a genesis_batch_file and an existing chain [16:36:29.746 DEBUG dispatch] Attempted to remove send_message function for connection ServerThread, but no send_message function was registered [16:36:29.746 DEBUG dispatch] Removed send_message function for connection ServerThread

agunde (Fri, 23 Jun 2017 14:39:10 GMT):
what does it say above that?

pschwarz (Fri, 23 Jun 2017 14:39:21 GMT):
`config-genesis.batch` is not the problem

pschwarz (Fri, 23 Jun 2017 14:39:51 GMT):
Are you running `sawtooth admin genesis` before starting your validator every time?

LoubnaBaroudi (Fri, 23 Jun 2017 14:40:23 GMT):
I tried both

pschwarz (Fri, 23 Jun 2017 14:41:34 GMT):
You should only need to do that once. It will compose a `genesis.batch` and put it in the `data` directory. On first run, with no chain, the validator will consume the file and produce the genesis block out of its contents

pschwarz (Fri, 23 Jun 2017 14:41:34 GMT):
You should only need to do that once. It will compose a `genesis.batch` and put it in the data (in your case, `/var/lib/sawtooth`) directory. On first run, with no chain, the validator will consume the file and produce the genesis block out of its contents

pschwarz (Fri, 23 Jun 2017 14:42:50 GMT):
If you run it again for a validator that has an existing chain, it will consider that an invalid state, as the presence of the file `genesis.batch` indicates to the validator that you want to create a genesis block, but one already exists

pschwarz (Fri, 23 Jun 2017 14:43:15 GMT):
Where are you running the validator? Docker? Ubuntu?

LoubnaBaroudi (Fri, 23 Jun 2017 14:43:21 GMT):
Ubuntu

LoubnaBaroudi (Fri, 23 Jun 2017 14:44:56 GMT):
Ok it might be the mistake

LoubnaBaroudi (Fri, 23 Jun 2017 14:45:26 GMT):
I think it is

pschwarz (Fri, 23 Jun 2017 14:46:09 GMT):
If it happens again, just delete `/var/lib/sawtooth/genesis.batch`

LoubnaBaroudi (Fri, 23 Jun 2017 14:46:55 GMT):
OK thank you!!

jjason (Fri, 23 Jun 2017 14:47:11 GMT):
@amundson I didn't notice the `config.py` in the SDK - I guess not a surprise as I don't find myself in that part of the code very often. Having IAS proxy dependent upon the SDK is okay....kind of....it doesn't feel _right_, although much preferable to IAS proxy being dependent upon `sawtooth_validator` package.

dplumb (Fri, 23 Jun 2017 15:40:41 GMT):
Has joined the channel.

dataharvest (Fri, 23 Jun 2017 16:35:48 GMT):
Has joined the channel.

amundson (Fri, 23 Jun 2017 18:36:52 GMT):
@jjason yeah, it's not great. but having a package just for the relatively simple path calculations isn't great either. a separate pkg-config-like tool might be better/good, but more complex.

amundson (Fri, 23 Jun 2017 18:39:27 GMT):
(not great for IAS stuff, but pretty good actually for stuff already using the sdk)

sven09543 (Fri, 23 Jun 2017 19:25:34 GMT):
Has joined the channel.

sven09543 (Fri, 23 Jun 2017 19:26:09 GMT):
Hi all! I am in the process of building a blockchain using Hyperledger. I would like to create a mobile and desktop wallet to interface with Sawtooth. Do you have any recommendations for creating this wallet? Current considerations are using the Qt License/C++, Javascript, and Classic iOS/Android Development. Desktop wallets are for Windows and OSX.

sven09543 (Fri, 23 Jun 2017 19:27:33 GMT):
Also, can I just use the REST API from HyperLedger to build a light wallet client, or do I need an extra component running on a server that interacts with HyperLedger?

jjason (Fri, 23 Jun 2017 19:45:25 GMT):
@amundson Agree. It might be nice in future to have something like that or a sawtooth-utils package.

kelly_ (Fri, 23 Jun 2017 19:48:04 GMT):
@pschwarz may have some client advice for you @sven09543

kelly_ (Fri, 23 Jun 2017 19:48:44 GMT):
a mobile framework for interacting with sawtooth would be a great contribution

liangxueping2015 (Fri, 23 Jun 2017 20:20:47 GMT):
I got the same problem here @LoubnaBaroudi

liangxueping2015 (Fri, 23 Jun 2017 20:21:02 GMT):
Have you solved it?

MaximeLandon (Fri, 23 Jun 2017 20:38:05 GMT):
@jjason @jsmitchell I think I just suceeded to understand pretty correcty the essence of Sawtooth. Am I mad or is Sawtooth a deeply brilliant way to see issues and to solve them ?

MaximeLandon (Fri, 23 Jun 2017 20:38:05 GMT):
@jjason @jsmitchell I think I just suceeded to understand pretty correcty the essence of Sawtooth. Am I mad or is Sawtooth a deeply brilliant way to see blockchain issues and to solve them ?

MaximeLandon (Fri, 23 Jun 2017 20:38:05 GMT):
@jjason @jsmitchell I think I just suceeded to understand pretty correcty the essence of Sawtooth. Am I mad or is Sawtooth a deeply brilliant way to see the security/modularity trade-off and to solve it ?

jsmitchell (Fri, 23 Jun 2017 20:45:18 GMT):
maybe yes maybe no

jsmitchell (Fri, 23 Jun 2017 20:45:20 GMT):
ask again later

MaximeLandon (Fri, 23 Jun 2017 20:46:23 GMT):
@jsmitchell what is your mind on that ?

MaximeLandon (Fri, 23 Jun 2017 20:46:30 GMT):
if I may ask

zac (Fri, 23 Jun 2017 20:57:39 GMT):
@MaximeLandon That's the goal. But it's still very early to make any big claims.

zac (Fri, 23 Jun 2017 20:58:44 GMT):
@sven09543 We've written some "wallet" apps in the past. If I understand your intent correctly, you basically just want to build something to manage private keys for users?

MaximeLandon (Fri, 23 Jun 2017 21:06:22 GMT):
@zac well that's true I've put too strong words on my claim, but it's been less than a day that I understood this and still being a bit astonished

zac (Fri, 23 Jun 2017 21:06:57 GMT):
I find the whole concept of block chains pretty brilliant

zac (Fri, 23 Jun 2017 21:07:07 GMT):
The definitely have the potential to change everything

zac (Fri, 23 Jun 2017 21:07:32 GMT):
And yeah, I'm pretty happy with what we're building in Sawtooth :)

zac (Fri, 23 Jun 2017 21:07:37 GMT):
We'll see though

MaximeLandon (Fri, 23 Jun 2017 21:07:56 GMT):
I'm very amateur programmer in a firm full of experts, and I've been told with another amateur to consider sawtooth (like go check sawtooth good luck for learning) and we worked hard, so finding this couln't be more exciting

MaximeLandon (Fri, 23 Jun 2017 21:08:16 GMT):
@zac are you working at Intel ?

zac (Fri, 23 Jun 2017 21:08:31 GMT):
I'm a contractor

zac (Fri, 23 Jun 2017 21:08:43 GMT):
So, not directly, but they pay the bills

MaximeLandon (Fri, 23 Jun 2017 21:09:01 GMT):
okayyy

zac (Fri, 23 Jun 2017 21:09:18 GMT):
So, not directly

MaximeLandon (Fri, 23 Jun 2017 21:09:39 GMT):
ok

zac (Fri, 23 Jun 2017 21:10:08 GMT):
There are a few Intel folks on this channel though

zac (Fri, 23 Jun 2017 21:10:20 GMT):
But I'm not one of them

MaximeLandon (Fri, 23 Jun 2017 21:10:24 GMT):
okkk good to know ;)

toddmvc (Fri, 23 Jun 2017 21:15:55 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=ptCuzJpvQWb5AMPCN) @zac I work on a team with @sven09543 For the wallet, we are looking to store private keys, and initially give the ability send/receive payments. Eventually we will integrate many other features, such as an Instant Messenger.

zac (Fri, 23 Jun 2017 21:17:50 GMT):
@toddmvc Sounds very cool. Something to keep in mind is that Sawtooth is not a currency. You could implement a currency like BitCoin _on top of it_, but "out of the box" there is nothing that inherently makes it a currency.

toddmvc (Fri, 23 Jun 2017 21:18:39 GMT):
Yes, we would like to add one token to Sawtooth, but there will be many other functions.

zac (Fri, 23 Jun 2017 21:19:10 GMT):
Were you thinking you would implement your own currency?

toddmvc (Fri, 23 Jun 2017 21:19:30 GMT):
I just started learning about Sawtooth, but the model seems to work well with our design for the blockchain.

zac (Fri, 23 Jun 2017 21:19:58 GMT):
So, it sounds like there would be two parts to your app

toddmvc (Fri, 23 Jun 2017 21:20:08 GMT):
Yes, there would be a currency.

zac (Fri, 23 Jun 2017 21:20:29 GMT):
One would manage private keys. Which is all pretty straightforward and similar to other solutions for this.

zac (Fri, 23 Jun 2017 21:21:02 GMT):
The other would be to send Transactions to the blockchain, and probably read some state from it.

zac (Fri, 23 Jun 2017 21:22:05 GMT):
This could be tailored to a particular "Transaction Family" (which would be the logic for your currency implementation)

zac (Fri, 23 Jun 2017 21:22:32 GMT):
Or you could try to make it general purpose. I think that might be a little bit of a challenge to make user friendly.

zac (Fri, 23 Jun 2017 21:22:44 GMT):
But maybe doable.

zac (Fri, 23 Jun 2017 21:22:51 GMT):
It would be a very cool tool if you built it

zac (Fri, 23 Jun 2017 21:23:07 GMT):
Also, implementing a currency Transaction Family would be non-trivial

zac (Fri, 23 Jun 2017 21:24:01 GMT):
If you haven't seen our documentation yet it is here: http://intelledger.github.io/

zac (Fri, 23 Jun 2017 21:24:23 GMT):
You are going to be particularly interested in the App Developer's Guide

toddmvc (Fri, 23 Jun 2017 21:24:29 GMT):
I have looked through it, but I am not an engineer.

toddmvc (Fri, 23 Jun 2017 21:24:38 GMT):
I understand some. Sven handles that.

zac (Fri, 23 Jun 2017 21:24:39 GMT):
Sure sure

zac (Fri, 23 Jun 2017 21:24:50 GMT):
What's the end goal?

zac (Fri, 23 Jun 2017 21:25:10 GMT):
Is it just a project to get to know Sawtooth better, or are you looking to build a product?

toddmvc (Fri, 23 Jun 2017 21:26:22 GMT):
We are looking to build a product. We started with an Ethereum fork, but I'm not in love with the way it's set up. I would like to switch to something that is more lean, and flexible.

toddmvc (Fri, 23 Jun 2017 21:27:37 GMT):
I think the way that you use the Transaction Family will allow us to have more flexibility with currency payments vs EVM code.

zac (Fri, 23 Jun 2017 21:28:09 GMT):
awesome

zac (Fri, 23 Jun 2017 21:28:38 GMT):
Yeah, I think the lion's share of your work will be implementing the Transaction Family (not including whatever work goes into the actual GUI)

zac (Fri, 23 Jun 2017 21:29:22 GMT):
Our SDK's and REST API handle a good deal of the state, submission, and signature work

toddmvc (Fri, 23 Jun 2017 21:30:54 GMT):
Ok, I know @sven09543 wanted more information about that.

toddmvc (Fri, 23 Jun 2017 21:33:06 GMT):
For building out the wallet, did you use Javascript in the past?

zac (Fri, 23 Jun 2017 21:34:08 GMT):
Hrmmm. I actually don't remember if it was JavaScript, Python, or ClojureScript.

zac (Fri, 23 Jun 2017 21:34:22 GMT):
You could do it equally well in any of them though.

zac (Fri, 23 Jun 2017 21:34:32 GMT):
Well. ClojureScript would be harder.

zac (Fri, 23 Jun 2017 21:34:44 GMT):
You'd have to use the JS SDK.

zac (Fri, 23 Jun 2017 21:36:21 GMT):
If @sven09543 is used to JS, or you are planning on running it from the browser, I definitely think that's the way to go

toddmvc (Fri, 23 Jun 2017 21:38:22 GMT):
Ok. We have seen some other wallets in Clojure, and Javascript. Thank you for your feedback.

zac (Fri, 23 Jun 2017 21:38:34 GMT):
sure thing

zac (Fri, 23 Jun 2017 21:38:53 GMT):
Checkout the JS SDK, in particular the client functionality

zac (Fri, 23 Jun 2017 21:39:06 GMT):
And I believe @pschwarz is working on a Clojure SDK on the side

zac (Fri, 23 Jun 2017 21:39:13 GMT):
Not sure if there is an ETA there

toddmvc (Fri, 23 Jun 2017 21:39:18 GMT):
We could run it from a browser, I don't know the technical limitations, but could you run a "full-node" wallet from a browser?

toddmvc (Fri, 23 Jun 2017 21:39:38 GMT):
I think dApps will work that way.

zac (Fri, 23 Jun 2017 21:39:46 GMT):
What does "full-node" mean in this context?

toddmvc (Fri, 23 Jun 2017 21:40:02 GMT):
A complete history of the blockchain.

toddmvc (Fri, 23 Jun 2017 21:40:16 GMT):
For security. Using PoET or another consensus.

zac (Fri, 23 Jun 2017 21:41:38 GMT):
Wait. Is your wallet also a validator? Is it calculating blocks and all the rest?

toddmvc (Fri, 23 Jun 2017 21:42:03 GMT):
The desktop wallet. The mobile wallet is not.

zac (Fri, 23 Jun 2017 21:42:50 GMT):
In that case you are running Python code, and it is definitely not in the browser.

toddmvc (Fri, 23 Jun 2017 21:43:16 GMT):
Ok, that's what I thought.

toddmvc (Fri, 23 Jun 2017 21:43:21 GMT):
It would be nice if you could.

zac (Fri, 23 Jun 2017 21:44:15 GMT):
It's an interesting thought. I think we're a long way from that though. Or any focus on user deployed nodes.

zac (Fri, 23 Jun 2017 21:44:43 GMT):
Deploying a validator is a somewhat technical process at the moment.

toddmvc (Fri, 23 Jun 2017 21:46:06 GMT):
We would be running it as a centralized system. Later play around with PoET, and hopefully the project will be further along by then.

zac (Fri, 23 Jun 2017 21:46:26 GMT):
Support for _clients_ that talk to validators is pretty robust.

toddmvc (Fri, 23 Jun 2017 21:47:09 GMT):
That's good. Is that something that should run on it's own?

zac (Fri, 23 Jun 2017 21:47:23 GMT):
You can use a number of languages Access any of the blockchain data. Sign and submit Transactions, etc.

zac (Fri, 23 Jun 2017 21:47:43 GMT):
Everything we've done so far has been that way.

zac (Fri, 23 Jun 2017 21:47:56 GMT):
There is a network of nodes, and then clients that access them.

toddmvc (Fri, 23 Jun 2017 21:49:14 GMT):
Ok, so unlike Bitcoin, you do not combine the wallet and ledger on one device.

toddmvc (Fri, 23 Jun 2017 21:49:53 GMT):
Clients and validators run separate. (Not that people mine on their home PC anymore).

toddmvc (Fri, 23 Jun 2017 21:50:25 GMT):
So this implies trust of the validator?

zac (Fri, 23 Jun 2017 21:53:00 GMT):
Yes and no. I think we're starting to get into deployment questions that are not necessarily answered, because they will depend on the use case.

zac (Fri, 23 Jun 2017 21:53:50 GMT):
In the past, everything that I know of that's been deployed, the same people are responsible for deploying the clients and deploying the validators.

zac (Fri, 23 Jun 2017 21:54:16 GMT):
So it makes sense to build the client to be fairly lightweight, and "trust" the validator they are talking to.

zac (Fri, 23 Jun 2017 21:55:18 GMT):
I think a lot of use cases would look like this, where you would deploy a validator, and deploy a back-end server that talks to that validator, and then have your clients talk to that.

zac (Fri, 23 Jun 2017 21:55:51 GMT):
Other people might deploy other validators, which you do not trust, but you do trust the one your back-end talks to, because you have control over it.

zac (Fri, 23 Jun 2017 21:58:40 GMT):
Now, if you are interested in building a desktop app, which is both a friendly user-facing GUI, and it's own validator. That's interesting. Nobody has built anything like that for Sawtooth yet, but you'd basically be mimicking the same structure. You would be running a validator (Python), and then your GUI would be talking to it.

zac (Fri, 23 Jun 2017 22:00:08 GMT):
You could write the GUI in anything, it could be totally isolated from the validator portion of the app

sven09543 (Fri, 23 Jun 2017 22:19:17 GMT):
Thanks a lot for the helpful response @zac . Yes, I basically want to make something to manage private keys for users, with some more features in addition to that. In particular, you could think of the Status IM app. So, it would be good to have a currency (which can't be that hard to write a transaction family for, I assume), and some other interesting features could be instant messaging, and maybe interacting with dapps in a similar way as Status allows. Now with Ethereum, the instant messaging and dapps were already built-in, so that was convenient (although, if we don't run semi-full-nodes on the mobile client, the messages would have to be routed through servers anyway), and I assume we'd need a separate solution for instant messaging. I'm not sure if there is an advantage to running full-nodes of sawtooth for desktop apps intended for users, unless we also build in a proof-of-stake mechanism to reward them for doing that. It might make more sense with Ethereum. You say "deploy a back-end server that talks to that validator", does that mean we cannot use the REST API from the client app directly? In that case we have the same structure as Ethereum, where we also had a component to translate client app commands to the RPC interface, for client apps that did not contain a node.

zac (Fri, 23 Jun 2017 22:36:41 GMT):
You could definitely talk to the REST API directly. It's just often time there is some extra business that is nice to do server side.

zac (Fri, 23 Jun 2017 22:37:03 GMT):
Storing usernames and passwords, or providing domain specific endpoints, that sort of thing

sven09543 (Fri, 23 Jun 2017 22:42:13 GMT):
Yes, I see what you mean. Maybe we could use that indeed.

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the 'sawtooth-core/intkey_python/sawtooth_intkey/client_cli/' directory, the files 'populate.py' and 'generate.py' have functions called 'add_generate_parser' and 'add_populate_parser' but they are told to be deprecated, because the 'create_batch.py' file already combines the 'populate' and 'generate' commands. But in the mean time, the 'import' section of the 'main.py file comprises 'from generate import add_generate_parser' and 'from populate import add_populate_parser'.

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the 'sawtooth-core/intkey_python/sawtooth_intkey/client_cli/' directory, the files 'populate.py' and 'generate.py' have functions called 'add_generate_parser' and 'add_populate_parser' but they are told to be deprecated, because the 'create_batch.py' file already combines the 'populate' and 'generate' commands. But in the mean time, the 'import' section of the 'main.py file comprises 'from generate import add_generate_parser' and 'from populate import add_populate_parser'. What did I miss here ? If I create a TxnFam without the 'populate.py' and 'generate.py' in the 'client_cli' directory, how can I invoke them subsequently in the 'main.py' file ? How to substitute these imports ? Thanks for your help !

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the `sawtooth-core/intkey_python/sawtooth_intkey/client_cli/` directory, the files 'populate.py' and 'generate.py' have functions called 'add_generate_parser' and 'add_populate_parser' but they are told to be deprecated, because the 'create_batch.py' file already combines the 'populate' and 'generate' commands. But in the mean time, the 'import' section of the 'main.py file comprises 'from generate import add_generate_parser' and 'from populate import add_populate_parser'. What did I miss here ? If I create a TxnFam without the 'populate.py' and 'generate.py' in the 'client_cli' directory, how can I invoke them subsequently in the 'main.py' file ? How to substitute these imports ? Thanks for your help !

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the `sawtooth-core/intkey_python/sawtooth_intkey/client_cli/` directory, the files 'populate.py' and 'generate.py' have functions called `add_generate_parser` and `add_populate_parser` but they are told to be deprecated, because the 'create_batch.py' file already combines the `populate` and `generate` commands. But in the mean time, the `import` section of the 'main.py file comprises `from generate import add_generate_parser` and `from populate import add_populate_parser`. What did I miss here ? If I create a TxnFam without the 'populate.py' and 'generate.py' in the 'client_cli' directory, how can I invoke them subsequently in the 'main.py' file ? How to substitute these imports ? Thanks for your help !

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the `sawtooth-core/intkey_python/sawtooth_intkey/client_cli/` directory, the files 'populate.py' and 'generate.py' have functions called `add_generate_parser` and `add_populate_parser` but they are told to be deprecated, because the 'create_batch.py' file already combines the `populate` and `generate` commands. But in the mean time, the `import` section of the 'main.py' file comprises `from generate import add_generate_parser` and `from populate import add_populate_parser`. What did I miss here ? If I create a TxnFam without the 'populate.py' and 'generate.py' in the 'client_cli' directory, how can I invoke them subsequently in the 'main.py' file ? How to substitute these imports ? Thanks for your help !

MaximeLandon (Sat, 24 Jun 2017 13:23:27 GMT):
@jjason @jsmitchell Hello guys, when you'll have time for me I have a question: In the `sawtooth-core/intkey_python/sawtooth_intkey/client_cli/` directory, the files 'populate.py' and 'generate.py' have functions called `add_generate_parser` and `add_populate_parser` but they are told to be deprecated, because the 'create_batch.py' file already combines the `populate` and `generate` commands. But in the mean time, the `import` section of the 'main.py' file comprises `from generate import add_generate_parser` and `from populate import add_populate_parser`. What did I miss here ? If I create a TxnFam without the 'populate.py' and 'generate.py' in the 'client_cli' directory, how can I invoke them subsequently in the 'main.py' file ? How to substitute these imports ? Thanks for your help !

seaSwan (Sat, 24 Jun 2017 19:49:34 GMT):
Has joined the channel.

seaSwan (Sat, 24 Jun 2017 19:50:20 GMT):
Hello, I was hoping to gain insight on a specific component of sawtoothlake

seaSwan (Sat, 24 Jun 2017 19:51:52 GMT):
from my understanding, users must ultimately "trust" Intel's SGX platform

seaSwan (Sat, 24 Jun 2017 19:52:19 GMT):
are there plants to opensource this technology to other chip manufacturers?

MaximeLandon (Sat, 24 Jun 2017 20:13:02 GMT):
@seaSwan my humble mind on this is that the idea of SGX is more valuable than the fact that Intel has developed it

MaximeLandon (Sat, 24 Jun 2017 20:13:35 GMT):
Here is a link on the PoET Consensus and its interaction with the SGX enclave

seaSwan (Sat, 24 Jun 2017 20:13:37 GMT):
i agree, but i feel thats something that will eventually need to be addressed

MaximeLandon (Sat, 24 Jun 2017 20:13:42 GMT):
give me a second to find it

MaximeLandon (Sat, 24 Jun 2017 20:13:50 GMT):
that will

seaSwan (Sat, 24 Jun 2017 20:13:50 GMT):
thanks

MaximeLandon (Sat, 24 Jun 2017 20:13:58 GMT):
same for Bitcoin

MaximeLandon (Sat, 24 Jun 2017 20:14:03 GMT):
Bitcoin is an idea

MaximeLandon (Sat, 24 Jun 2017 20:14:15 GMT):
once you gave it to everyone (it is distributed)

seaSwan (Sat, 24 Jun 2017 20:14:31 GMT):
agreed, i found hyperledger after coming to a similar conclusion

MaximeLandon (Sat, 24 Jun 2017 20:14:47 GMT):
the idea can multiply without any cartel controlling supply

seaSwan (Sat, 24 Jun 2017 20:15:12 GMT):
but its my understanding SGX is like a black box

MaximeLandon (Sat, 24 Jun 2017 20:15:15 GMT):
well I'm just an amateur in CS but I think you should definitely spend some time understanding Sawtooth

MaximeLandon (Sat, 24 Jun 2017 20:15:22 GMT):
(if you have not yet)

seaSwan (Sat, 24 Jun 2017 20:15:27 GMT):
there is no way to verify intel or a hacker even isnt doing anything funny inside

MaximeLandon (Sat, 24 Jun 2017 20:15:33 GMT):
yes I forgot the link give me a sec

seaSwan (Sat, 24 Jun 2017 20:16:03 GMT):
ive read the whitepaper and other paperes for past few weeks now, everything I can get my hands on

seaSwan (Sat, 24 Jun 2017 20:17:10 GMT):
and ive found this project which is promising https://01.org/intel-softwareguard-extensions

MaximeLandon (Sat, 24 Jun 2017 20:17:25 GMT):
https://drive.google.com/file/d/0B_NJV6eJXAA1TGdfMjJlT0Qtb0U/view

MaximeLandon (Sat, 24 Jun 2017 20:17:45 GMT):
It starts really at the like 8th minute

seaSwan (Sat, 24 Jun 2017 20:17:51 GMT):
thganks i def nave not seen this

seaSwan (Sat, 24 Jun 2017 20:19:09 GMT):
just realized how unsave that was for me to be clicking gdrive links from strangers :P

MaximeLandon (Sat, 24 Jun 2017 20:19:16 GMT):
@jsmitchell @jjason I don't know who is 'in charge' of the content published on Hyperledger but the presentation above should be given a link in the doc, it is a pretty good presentation of the `consensus module`

MaximeLandon (Sat, 24 Jun 2017 20:22:29 GMT):
ahahah

MaximeLandon (Sat, 24 Jun 2017 20:22:44 GMT):
actually the link is this conversation

MaximeLandon (Sat, 24 Jun 2017 20:22:52 GMT):
a bit above

seaSwan (Sat, 24 Jun 2017 20:24:55 GMT):
so I just registered for a free month of Azure hosting and want to mess around with some hypertech. anyone here do this yet?

jeanne_mtl (Mon, 26 Jun 2017 14:18:31 GMT):
Has joined the channel.

MaximeLandon (Mon, 26 Jun 2017 14:36:34 GMT):
Hello everyone, a last (for real) issue for me: In the /usr/bin file `tp_gbond_python.py` I have an import problem:

MaximeLandon (Mon, 26 Jun 2017 14:37:08 GMT):

Message Attachments

MaximeLandon (Mon, 26 Jun 2017 14:37:44 GMT):

Message Attachments

MaximeLandon (Mon, 26 Jun 2017 14:40:01 GMT):
my directory structure is the following: /home/ maximelandon/ Sawtooth/ gbond_python/ sawtooth_gbond/ processor/ main.py

MaximeLandon (Mon, 26 Jun 2017 14:41:34 GMT):
So I have no clue why it doesn't work, moreover that my collegue suceeded to make her tp_gbond_python to work, with the same directory structure and with similar specifications in the `tp_gbond_python.py`

MaximeLandon (Mon, 26 Jun 2017 14:42:27 GMT):
And I need to precise that I have moved this file into my `Sawtooth ` directory, for the sake of simplicity

MaximeLandon (Mon, 26 Jun 2017 14:44:14 GMT):

Message Attachments

MaximeLandon (Mon, 26 Jun 2017 14:44:31 GMT):
for a clearer representation of my directory structure

pschwarz (Mon, 26 Jun 2017 14:44:35 GMT):
Your path insert at line 11 is adding your code relative to the script path. Remove the `os.path.direname(os.path.dirname(os.path.realpath(__file) )))`

MaximeLandon (Mon, 26 Jun 2017 14:46:11 GMT):
thanks for your answer @pschwarz, but still doesn't work

MaximeLandon (Mon, 26 Jun 2017 14:46:17 GMT):
here is a new screenshot

pschwarz (Mon, 26 Jun 2017 14:46:24 GMT):
Hrm

MaximeLandon (Mon, 26 Jun 2017 14:46:42 GMT):

Message Attachments

MaximeLandon (Mon, 26 Jun 2017 14:46:54 GMT):
and still the error from the syntax checker

pschwarz (Mon, 26 Jun 2017 14:47:52 GMT):
Ah, it also should be, on line 20, `from sawtooth_gbond. ...`

pschwarz (Mon, 26 Jun 2017 14:48:07 GMT):
You don't need the `gbond_python`

MaximeLandon (Mon, 26 Jun 2017 14:48:28 GMT):
Ok so I remove the line 11 and the ̀gbond_python`?

pschwarz (Mon, 26 Jun 2017 14:49:09 GMT):
Line 11 looks good now, but yes, remove the `gbond_python`

MaximeLandon (Mon, 26 Jun 2017 14:50:43 GMT):
Nope, still doesn't work, I'm going to get mad, everything looks fine though

pschwarz (Mon, 26 Jun 2017 14:52:25 GMT):
Hrm

pschwarz (Mon, 26 Jun 2017 14:52:58 GMT):
Could you post the code again?

MaximeLandon (Mon, 26 Jun 2017 14:53:02 GMT):
okay

MaximeLandon (Mon, 26 Jun 2017 14:53:56 GMT):

Message Attachments

pschwarz (Mon, 26 Jun 2017 15:03:06 GMT):
Line 11 is still a problem: it's a relative path

MaximeLandon (Mon, 26 Jun 2017 15:04:29 GMT):
I'm gonna have to ask you what should I put, because that is a kind of subject I really lack of

pschwarz (Mon, 26 Jun 2017 15:05:05 GMT):
Would suggest, instead of including your home directory, trying making that path relative to the script path. Uncomment line 12, and replace the path the strings with `'..', '..', '..', 'gbond_python'`

pschwarz (Mon, 26 Jun 2017 15:05:21 GMT):
I think that should specify the relative path from the script it self

pschwarz (Mon, 26 Jun 2017 15:05:47 GMT):
Wait

pschwarz (Mon, 26 Jun 2017 15:05:51 GMT):
Where does this script live?

pschwarz (Mon, 26 Jun 2017 15:05:58 GMT):
Is it the main under client_cli?

MaximeLandon (Mon, 26 Jun 2017 15:06:56 GMT):
no it is the tp_gbond_python.py that I've put in my Sawtooth directory

MaximeLandon (Mon, 26 Jun 2017 15:07:08 GMT):
and it still doesn't work

pschwarz (Mon, 26 Jun 2017 15:08:24 GMT):
Ah, yeah, I realize I didn't know where that was

pschwarz (Mon, 26 Jun 2017 15:08:44 GMT):
Go back to what you had and just put `/home` as the first string

MaximeLandon (Mon, 26 Jun 2017 15:09:35 GMT):

Message Attachments

MaximeLandon (Mon, 26 Jun 2017 15:09:38 GMT):
okay I have put that

pschwarz (Mon, 26 Jun 2017 15:09:41 GMT):
No

MaximeLandon (Mon, 26 Jun 2017 15:09:54 GMT):
I need to uncomment the line 12 ?

MaximeLandon (Mon, 26 Jun 2017 15:10:03 GMT):
okay I see

MaximeLandon (Mon, 26 Jun 2017 15:10:08 GMT):
give me a sec

MaximeLandon (Mon, 26 Jun 2017 15:11:02 GMT):
YYYYYYYYYYYYYYYYYYYYYYYYYYYEEEEESSSS

MaximeLandon (Mon, 26 Jun 2017 15:11:05 GMT):
I did work

MaximeLandon (Mon, 26 Jun 2017 15:11:19 GMT):
god damn that much struggle because of a slash

MaximeLandon (Mon, 26 Jun 2017 15:11:31 GMT):
thanks a billion times Sir !

jjason (Mon, 26 Jun 2017 15:11:31 GMT):
@MaximeLandon Apologies. I was offline all weekend. Did you get your original question about 'populate' and 'generate' answered?

MaximeLandon (Mon, 26 Jun 2017 15:13:14 GMT):
@jjason Hello ! No I actually didn't have an answer, and there is no need for apologies (it seems that I'm the only one working on weekends, I'm still at the beginning of this blockchain journey and motivation is at its best)

jjason (Mon, 26 Jun 2017 15:16:20 GMT):
So, I am unfamiliar territory here, but looking at the git commit history, it appears that `create_batch` is to be preferred over `populate` or `generate`. It looks like @toddojala made the initial commit to combine the two into `create_batch`. Maybe he can chime in and give more insight.

jjason (Mon, 26 Jun 2017 15:18:14 GMT):
As for the mechanics in the python file, you would no longer need to import from `popluate.py` and `generate.py` and can rely upon these: ``` from sawtooth_intkey.client_cli.create_batch import add_create_batch_parser from sawtooth_intkey.client_cli.create_batch import do_create_batch ```

jjason (Mon, 26 Jun 2017 15:19:11 GMT):
However, if you decide that you would rather keep them split into separate modules if it makes more sense to you that way, then you may certainly do so (as the design of your own CLI is certainly up to you).

MaximeLandon (Mon, 26 Jun 2017 15:25:19 GMT):
Okkayy thanks for the answer @jjason ! Actually what surprises me is that the content of `populate.py` and `generate.py` is not present entirely in the `create_batch.py` file. There are parts missing, and that is the source of my wanderings !

MaximeLandon (Mon, 26 Jun 2017 15:26:05 GMT):
So @toddojala I will be grateful if you mind help me on this ! Thanks !

boydjohnson (Mon, 26 Jun 2017 15:34:36 GMT):
@zac On your getting the validity of txns back to the client story, high level: after the TransactionExecutor gets the validity information from the txn processor, how does the client get it?

jjason (Mon, 26 Jun 2017 15:57:23 GMT):
@MaximeLandon Looking at the source, it looks like any missing code in `create_batch.py` appears to be because of a little bit of code restructuring/refactoring and the fact that the `create_batch` command combines performing a `populate` followed by `generate`. It appears to me that functionally `intkey create_batch ...` _should_ end up with the same or a similar result as running `intkey populate ...` followed by `intkey generate ...` although it looks like `create_batch` will do a better job of on the `generate` portion as it will only choose from keys/names for values that were chosen in the `populate` phase whereas `populate` followed by `generate` will most likely result in `inc`/`dec` transactions for keys/names that were not originally `set.

jjason (Mon, 26 Jun 2017 15:57:23 GMT):
@MaximeLandon Looking at the source, it looks like any missing code in `create_batch.py` appears to be because of a little bit of code restructuring/refactoring and the fact that the `create_batch` command combines performing a `populate` followed by `generate`. It appears to me that functionally `intkey create_batch ...` _should_ end up with the same or a similar result as running `intkey populate ...` followed by `intkey generate ...` although it looks like `create_batch` will do a better job of on the `generate` portion as it will only choose from keys/names for values that were chosen in the `populate` phase whereas `populate` followed by `generate` will most likely result in `inc`/`dec` transactions for keys/names that were not originally `set`.

jjason (Mon, 26 Jun 2017 15:57:23 GMT):
@MaximeLandon Looking at the source, it looks like any missing code in `create_batch.py` appears to be because of a little bit of code restructuring/refactoring and the fact that the `create_batch` command combines performing a `populate` followed by `generate`. It appears to me that functionally `intkey create_batch ...` _should_ end up with the same or a similar result as running `intkey populate ...` followed by `intkey generate ...` although it looks like `create_batch` will do a better job on the `generate` portion as it will only choose from keys/names for values that were chosen in the `populate` phase whereas `populate` followed by `generate` will most likely result in `inc`/`dec` transactions for keys/names that were not originally `set`.

jjason (Mon, 26 Jun 2017 15:57:23 GMT):
@MaximeLandon Looking at the source, it looks like any missing code in `create_batch.py` appears to be because of a little bit of code restructuring/refactoring and the fact that the `create_batch` command combines performing a `populate` followed by `generate`. It appears to me that functionally `intkey create_batch ...` _should_ end up with the same or a similar result as running `intkey populate ...` followed by `intkey generate ...` although it looks like `create_batch` will do a better job on the `generate` portion as it will only choose from keys/names for values that were chosen in the `populate` phase whereas `populate` followed by `generate` will most likely result in `inc` / `dec` transactions for keys/names that were not originally `set`.

MaximeLandon (Mon, 26 Jun 2017 16:34:20 GMT):
@jjason Understood a 100%, yes actually the potential lack of synchronisation between `populate` and `generate` was something I somehow identified. I understand that `create_batch` resolves this issue ! Thanks a lot for your help !

MaximeLandon (Mon, 26 Jun 2017 16:35:06 GMT):
I'll never be able to thank you guys enough for all the help you're providing to amateurs like me !

zac (Mon, 26 Jun 2017 16:42:29 GMT):
@boydjohnson TP --> Executor --> BatchTracker --> Client Handler --> REST API --> client

zac (Mon, 26 Jun 2017 16:43:38 GMT):
More specifically, the Executor notifies the Batch Tracker that there is an invalid transaction. The BatchTracker stores that information temporarily, and Client Handlers can query the BatchTracker for it.

boydjohnson (Mon, 26 Jun 2017 16:44:45 GMT):
What piece owns the BatchTracker?

zac (Mon, 26 Jun 2017 16:45:11 GMT):
No piece

zac (Mon, 26 Jun 2017 16:45:15 GMT):
It is its own piece

MaximeLandon (Mon, 26 Jun 2017 16:47:42 GMT):
@zac Actually I would like to know if there is some sort of doc about the precise functionning of the Transaction_Processor Part ? To illustrate, the Journal is very well explained in the Sawtooth Doc, so if something similar exists for the TP I would be glad to read it !

zac (Mon, 26 Jun 2017 16:49:11 GMT):
@MaximeLandon What language are you working in?

zac (Mon, 26 Jun 2017 17:09:10 GMT):
Python TP Guide is here: http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html

cianx (Mon, 26 Jun 2017 18:16:49 GMT):
@jjason Is this expected behavior ```test-dynamic-network_1 | [17:42:09.738 ERROR consensus_state] Validator validator-02cd2bca (ID=02cd2bca...0736b286): Committed in block 10, trying to claim block 11, must wait until block 12 test-dynamic-network_1 | [17:42:09.738 ERROR poet_block_publisher] Reject building on block 284fc9e5: Validator has not waited long enough since registering validator information. ```

cianx (Mon, 26 Jun 2017 18:16:49 GMT):
\

jjason (Mon, 26 Jun 2017 18:17:57 GMT):
Yes.

jjason (Mon, 26 Jun 2017 18:18:03 GMT):
That is the c-policy at work.

jjason (Mon, 26 Jun 2017 18:20:43 GMT):
If not in the settings on the blockchain, the default for `sawtooth.poet.block_claim_delay`is 1.

cianx (Mon, 26 Jun 2017 18:21:07 GMT):
So validators are expected to intentionally violate that policy??

jjason (Mon, 26 Jun 2017 18:21:32 GMT):
No, what you are seeing is a validator refusing to initialize a block because it knows that it _would_ violate the policy.

jjason (Mon, 26 Jun 2017 18:22:07 GMT):
We could change the "error" to an "info"

cianx (Mon, 26 Jun 2017 18:22:10 GMT):
So not actually errors, maybe the logging should be info?

cianx (Mon, 26 Jun 2017 18:22:25 GMT):
:)

jjason (Mon, 26 Jun 2017 18:23:26 GMT):
In `consensus_state` it would probably remain an "error" as that code is used by both the block publisher and the block verifier (where it truly is an error), but in `poet_block_publisher` it could be downgraded to an "infi"

jjason (Mon, 26 Jun 2017 18:23:26 GMT):
In `consensus_state` it would probably remain an "error" as that code is used by both the block publisher and the block verifier (where it truly is an error), but in `poet_block_publisher` it could be downgraded to an "info"

cianx (Mon, 26 Jun 2017 18:29:59 GMT):
it is only an error when validator_did_claim_block is called from the BlockVerifier, not when it is called from the BlockPublisher. It is not an error to detect that you would violate a policy.

benoit.razet (Mon, 26 Jun 2017 19:52:09 GMT):
Hi, I am looking into the supplychain family in sawtooth-core. I am trying to understand how the different pieces play together. Has anyone created a demo calling the various functions creating agents, records, and applications? Thanks!

benoit.razet (Mon, 26 Jun 2017 19:59:33 GMT):
Oops, I just found the `tests` folder. I am going to look into that :grin:

kelly_ (Mon, 26 Jun 2017 20:43:46 GMT):
hey @benoit.razet - @cianx created that and may be able to help

kelly_ (Mon, 26 Jun 2017 20:44:07 GMT):
There is not a public demo of that code specifically, but this is very similar - https://provenance.sawtooth.me/

benoit.razet (Mon, 26 Jun 2017 20:44:47 GMT):
I was hoping I could see the code that created https://provenance.sawtooth.me

benoit.razet (Mon, 26 Jun 2017 20:45:03 GMT):
the tests folder is helping

cianx (Mon, 26 Jun 2017 20:45:25 GMT):
@benoit.razet here are a couple of open PRs regarding supply chain:https://github.com/hyperledger/sawtooth-core/pull/668

cianx (Mon, 26 Jun 2017 20:45:38 GMT):
https://github.com/hyperledger/sawtooth-core/pull/652

cianx (Mon, 26 Jun 2017 20:46:25 GMT):
The first is documentation on the SupplyChain Transaction processor, the second is a CLI client for the SupplyChain TP.

cianx (Mon, 26 Jun 2017 20:46:25 GMT):
The first is documentation on the SupplyChain Transaction processor, the second is a CLI client for the SupplyChain.

benoit.razet (Mon, 26 Jun 2017 20:47:06 GMT):
Thanks! I'll look at these

cianx (Mon, 26 Jun 2017 20:48:07 GMT):
We probably won't be releasing the source for the WebPage on the current public demo page as it is against the 0.7 code base. We are working on and updated demo but that is a little ways out and I am not sure the complete form it will take yet.

mattalhonte (Mon, 26 Jun 2017 20:50:25 GMT):
I'm also interested in using Sawtooth for a Supply Chain application.

mattalhonte (Mon, 26 Jun 2017 20:50:46 GMT):
Especially in making a demo like one of those sweet ones on the site! :)

benoit.razet (Mon, 26 Jun 2017 20:56:37 GMT):
I tried to load the demo with test_tp_supplychain_python.yaml but I get the following message. Should I set those environment variables manually? Do I need register to be able to use repository sawtooth-tp_supplychain_python ? ``` WARNING: The SAWTOOTH_CORE variable is not set. Defaulting to a blank string. WARNING: The ISOLATION_ID variable is not set. Defaulting to a blank string. Pulling tp_supplychain_python (sawtooth-tp_supplychain_python:ISOLATION_ID)... ERROR: repository sawtooth-tp_supplychain_python not found: does not exist or no pull access ```

cianx (Mon, 26 Jun 2017 21:06:49 GMT):
That docker runs the SupplyChain Transaction processor unit tests. You will need to setup an environment as described here :https://intelledger.github.io/core_developers_guide/environment_setup.html#build-components

cianx (Mon, 26 Jun 2017 21:07:58 GMT):
and run the "bin/build_all -l python" to create the docker images. AFAIK we are not publishing prebuilt docker images for the unit tests.

cianx (Mon, 26 Jun 2017 21:10:30 GMT):
That test compose file to be run in by it's self would be called via the run_docker_test script as follows 'bin/run_docker_test families/supplychain/python/tests/test_tp_supplychain_python.yaml'

benoit.razet (Mon, 26 Jun 2017 21:11:25 GMT):
I am building the image...

mattalhonte (Mon, 26 Jun 2017 21:24:52 GMT):
Do you need to use Vagrant to run the Demo code? I'm developing on an AWS instance, and Vagrant's giving me trouble (I guess it doesn't let you do Inception layers of VMs?)

toddojala (Mon, 26 Jun 2017 21:26:22 GMT):
@mattalhonte You should be able to run demo code in Docker, as the App Dev Guide outlines: http://intelledger.github.io/0.8/app_developers_guide/docker.html

mattalhonte (Mon, 26 Jun 2017 21:26:57 GMT):
Awesome, thanks!

benoit.razet (Mon, 26 Jun 2017 21:33:49 GMT):
Thanks too!

mattalhonte (Mon, 26 Jun 2017 21:46:58 GMT):
In docker, thought I set up the Genesis block and everything, but when I check connectivity... ```curl http://localhost:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }```

cianx (Mon, 26 Jun 2017 21:47:51 GMT):
can you post the log from your validator instance and the command(s) you used to start it?

toddojala (Mon, 26 Jun 2017 21:49:07 GMT):
@mattalhonte If you use Docker (using the App Dev Guide flow), the genesis block should be created automatically. Are you creating your own docker containers or doing something different?

mattalhonte (Mon, 26 Jun 2017 21:50:15 GMT):
No, I was trying to follow the App Dev guide. But then it gave me the issue with the Genesis Block, so I ran a bunch of the commands from the Ubuntu one.

mattalhonte (Mon, 26 Jun 2017 21:50:25 GMT):
I'll tear it down and start again.

mattalhonte (Mon, 26 Jun 2017 21:54:07 GMT):
Hrm, same issue.

toddojala (Mon, 26 Jun 2017 21:55:07 GMT):
@mattalhonte Can you display the output you get when you run docker-compose, to start the containers?

mattalhonte (Mon, 26 Jun 2017 21:55:08 GMT):
I did ``docker-compose -f sawtooth-default.yaml down`` then ```docker-compose -f sawtooth-default.yaml up``` Then in a different window: ```docker exec -it sawtooth-client-default bash root@ed6908272e85:/# curl http://rest_api:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }```

mattalhonte (Mon, 26 Jun 2017 21:55:22 GMT):
k!

mattalhonte (Mon, 26 Jun 2017 21:55:53 GMT):
docker-compose -f sawtooth-default.yaml up Creating network "sawtoothapp_default" with the default driver Creating sawtooth-validator-default ... Creating sawtooth-validator-default ... done Creating sawtooth-rest_api-default ... Creating sawtooth-tp_xo_python-default ... Creating sawtooth-tp_intkey_python-default ... Creating sawtooth-tp_settings-default ... Creating sawtooth-rest_api-default Creating sawtooth-tp_xo_python-default Creating sawtooth-tp_intkey_python-default Creating sawtooth-tp_intkey_python-default ... done Creating sawtooth-client-default ... Creating sawtooth-client-default ... done Attaching to sawtooth-validator-default, sawtooth-rest_api-default, sawtooth-tp_xo_python-default, sawtooth-tp_intkey_python-default, sawtooth-tp_settings-default, sawtooth-client-default

mattalhonte (Mon, 26 Jun 2017 21:56:06 GMT):
sawtooth-validator-default | writing file: /etc/sawtooth/keys/validator.priv sawtooth-validator-default | writing file: /etc/sawtooth/keys/validator.pub sawtooth-validator-default | creating key directory: /root/.sawtooth/keys sawtooth-validator-default | writing file: /root/.sawtooth/keys/my_key.priv sawtooth-validator-default | writing file: /root/.sawtooth/keys/my_key.pub sawtooth-validator-default | Generated config-genesis.batch sawtooth-validator-default | Processing config-genesis.batch... sawtooth-validator-default | Generating /var/lib/sawtooth/genesis.batch sawtooth-validator-default | [21:53:33.496 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml sawtooth-validator-default | [21:53:33.496 INFO validator] Skipping validator config loading from non-existent config file: /etc/sawtooth/validator.toml

mattalhonte (Mon, 26 Jun 2017 21:56:08 GMT):
sawtooth-validator-default | [21:53:33.497 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.priv sawtooth-validator-default | [21:53:33.498 INFO cli] config [path]: config_dir = "/etc/sawtooth" sawtooth-validator-default | [21:53:33.498 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" sawtooth-validator-default | [21:53:33.499 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" sawtooth-validator-default | [21:53:33.499 INFO cli] config [path]: log_dir = "/var/log/sawtooth" sawtooth-validator-default | [21:53:33.499 WARNING cli] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted. sawtooth-validator-default | [21:53:33.499 DEBUG core] database file is /var/lib/sawtooth/merkle-00.lmdb sawtooth-validator-default | [21:53:33.500 DEBUG core] state delta store file is /var/lib/sawtooth/state-deltas-00.lmdb sawtooth-validator-default | [21:53:33.500 DEBUG core] block store file is /var/lib/sawtooth/block-00.lmdb sawtooth-validator-default | [21:53:33.503 DEBUG selector_events] Using selector: ZMQSelector sawtooth-validator-default | [21:53:33.504 DEBUG dispatch] Added send_message function for connection ServerThread sawtooth-validator-default | [21:53:33.505 DEBUG genesis] genesis_batch_file: /var/lib/sawtooth/genesis.batch sawtooth-validator-default | [21:53:33.505 DEBUG genesis] block_chain_id: not yet specified sawtooth-validator-default | [21:53:33.505 INFO genesis] Producing genesis block from /var/lib/sawtooth/genesis.batch sawtooth-validator-default | [21:53:33.506 DEBUG genesis] Adding 1 batches sawtooth-validator-default | [21:53:33.507 DEBUG executor] no transaction processors registered for processor type sawtooth_config: 1.0: application/protobuf sawtooth-validator-default | [21:53:33.508 INFO executor] Waiting for transaction processor (sawtooth_config, 1.0, application/protobuf) sawtooth-validator-default | [21:53:33.512 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 98 bytes sawtooth-validator-default | [21:53:33.513 INFO processor_handlers] registered transaction processor: connection_id=32f0711b8b9678f867bdb4944b2a3eb74f738a1701dd0258129119e0a8f5adc426ee697a3e3de006fd9c908d6ca8cc35040ef78846cbebe5b26507937c8cdf0d, family=xo, version=1.0, encoding=csv-utf8, namespaces=['5b7349'] sawtooth-validator-default | [21:53:33.514 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'489845cdf1264576' sawtooth-validator-default | [21:53:33.554 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 110 bytes sawtooth-validator-default | [21:53:33.555 INFO processor_handlers] registered transaction processor: connection_id=6549178205ec40ea010e063a0cdd3ae3050613020c09d8914230bf65a09de0f09e2a5d750c691349a4623b6c0805ea73051f10ff7b93444323d9b65e899d6118, family=intkey, version=1.0, encoding=application/cbor, namespaces=['1cf126'] sawtooth-validator-default | [21:53:33.556 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'8ff6fa5c337147bc' sawtooth-validator-default | [21:53:33.647 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 125 bytes sawtooth-validator-default | [21:53:33.648 INFO processor_handlers] registered transaction processor: connection_id=5df42a397236f3f25a522f84c397433ee1b73d2be8eca8b9539e2f5253828c8f9c496e6c4ebf0ab866da49c5982c038b0975f5945910ea51a3a3390c7e138cd5, family=sawtooth_settings, version=1.0, encoding=application/protobuf, namespaces=['000000'] sawtooth-validator-default | [21:53:33.649 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'ace0cad83f0d4ed1' sawtooth-tp_xo_python-default | [21:53:33.516 INFO core] register attempt: OK sawtooth-tp_intkey_python-default | [21:53:33.558 INFO core] register attempt: OK sawtooth-tp_settings-default | [21:53:33 DEBUG selector_events] Using selector: ZMQSelector sawtooth-tp_settings-default | [21:53:33 INFO core] register attempt: OK sawtooth-client-default | creating key directory: /root/.sawtooth/keys sawtooth-client-default | writing file: /root/.sawtooth/keys/root.priv sawtooth-client-default | writing file: /root/.sawtooth/keys/root.pub sawtooth-validator-default | [21:54:02.588 DEBUG interconnect] ServerThread receiving CLIENT_BLOCK_LIST_REQUEST message: 73 bytes sawtooth-validator-default | [21:54:02.589 DEBUG client_handlers] Unable to get chain head from block store sawtooth-validator-default | [21:54:02.590 DEBUG interconnect] ServerThread sending CLIENT_BLOCK_LIST_RESPONSE to b'3e873cd202fd4125'

toddojala (Mon, 26 Jun 2017 21:59:14 GMT):
@mattalhonte It looks like the genesis batch is generated and consumed properly: sawtooth-validator-default | Generated config-genesis.batch sawtooth-validator-default | Processing config-genesis.batch... sawtooth-validator-default | Generating /var/lib/sawtooth/genesis.batch

toddojala (Mon, 26 Jun 2017 21:59:54 GMT):
@mattalhonte Is it possible that a different validator container was left running? odd..

mattalhonte (Mon, 26 Jun 2017 22:00:03 GMT):
Possible!

mattalhonte (Mon, 26 Jun 2017 22:00:28 GMT):
Know offhand how one would fix that if that were the issue?

toddojala (Mon, 26 Jun 2017 22:01:13 GMT):
"docker-compose -f sawtooth-default.yaml down" should tear down all the containers, but...

mattalhonte (Mon, 26 Jun 2017 22:01:31 GMT):
Tried that. :

mattalhonte (Mon, 26 Jun 2017 22:01:33 GMT):
:/

toddojala (Mon, 26 Jun 2017 22:01:49 GMT):
Enter "docker ps" to see what is running.

mattalhonte (Mon, 26 Jun 2017 22:03:13 GMT):
Oh, hrm, looks like a lot of stuff. I was experimenting with Fabric before, I think I didn't kill all those VMs properly before switching over.

mattalhonte (Mon, 26 Jun 2017 22:03:51 GMT):
Thanks! Let's see if killing all those fixes things... :)

toddojala (Mon, 26 Jun 2017 22:03:53 GMT):
Maybe get rid of all of them before trying again? ;)

mattalhonte (Mon, 26 Jun 2017 22:06:00 GMT):
ugh, still the same issue

toddojala (Mon, 26 Jun 2017 22:06:17 GMT):
@mattalhonte I'm going to get the latest code and try it myself.

mattalhonte (Mon, 26 Jun 2017 22:06:22 GMT):
Thanks!

mattalhonte (Mon, 26 Jun 2017 22:07:55 GMT):
hrm, when I run `curl http://rest_api:8080/blocks` on the window running Docker it says this: ```sawtooth-validator-default | [22:06:30.643 DEBUG interconnect] ServerThread receiving CLIENT_BLOCK_LIST_REQUEST message: 73 bytes sawtooth-validator-default | [22:06:30.645 DEBUG client_handlers] Unable to get chain head from block store sawtooth-validator-default | [22:06:30.645 DEBUG interconnect] ServerThread sending CLIENT_BLOCK_LIST_RESPONSE to b'f693f9af244c4309' ```

toddojala (Mon, 26 Jun 2017 22:09:46 GMT):
@mattalhonte When you say "the window running docker," do you mean a terminal running on the host OS?

toddojala (Mon, 26 Jun 2017 22:10:05 GMT):
@mattalhonte In that case, you would run: curl http://localhost:8080/blocks

mattalhonte (Mon, 26 Jun 2017 22:10:13 GMT):
the one where I ran `docker-compose -f sawtooth-default.yaml up`

mattalhonte (Mon, 26 Jun 2017 22:10:24 GMT):
it says that output

toddojala (Mon, 26 Jun 2017 22:10:36 GMT):
@mattalhonte From the host OS, the rest_api is reachable at http://localhost:8080/blocks

toddojala (Mon, 26 Jun 2017 22:11:06 GMT):
@mattalhonte Within the client docker container, it would be reachable at: curl http://rest_api:8080/blocks

toddojala (Mon, 26 Jun 2017 22:11:37 GMT):
Since you run docker-compose from the host-os command line, try the localhost option.

mattalhonte (Mon, 26 Jun 2017 22:11:57 GMT):
ohh, I see, thanks, I'll try that!

mattalhonte (Mon, 26 Jun 2017 22:12:49 GMT):
aaand same issue. ```curl http://localhost:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } ```

toddojala (Mon, 26 Jun 2017 22:15:00 GMT):
@mattalhonte I get this:

toddojala (Mon, 26 Jun 2017 22:15:03 GMT):
curl http://rest_api:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }root@3b9462d0961e:/#

mattalhonte (Mon, 26 Jun 2017 22:15:29 GMT):
Looks familiar! Heh

toddojala (Mon, 26 Jun 2017 22:15:59 GMT):
@mattalhonte So I've duplicated your issue.

mattalhonte (Mon, 26 Jun 2017 22:17:02 GMT):
So did I just contribute to Hyperledger? =D

toddojala (Mon, 26 Jun 2017 22:17:15 GMT):
Has anyone else seen this issue, with the validator missing a genesis block? The output from "docker-compose up" does not seem to have anything alarming.

toddojala (Mon, 26 Jun 2017 22:28:55 GMT):
@mattalhonte Removed some stale images, and retrying...

mattalhonte (Mon, 26 Jun 2017 22:29:16 GMT):
K, thanks again!

mattalhonte (Mon, 26 Jun 2017 22:30:24 GMT):
Not sure if this is helpful. Messed around with other commands in the Docker guide, this seemed interesting: ```sawtooth batch submit -f batches.intkey --url http://rest_api:8080 usage: sawtooth batch [-h] {list,show} ... sawtooth batch: error: argument subcommand: invalid choice: 'submit' (choose from 'list', 'show')```

mattalhonte (Mon, 26 Jun 2017 22:30:52 GMT):
Maybe some subcommands got changed and it's not reflected in the docs?

toddojala (Mon, 26 Jun 2017 22:30:52 GMT):
It worked for me this time.

mattalhonte (Mon, 26 Jun 2017 22:31:04 GMT):
Interesting! What did you do, exactly?

mattalhonte (Mon, 26 Jun 2017 22:31:22 GMT):
Maybe I didn't flush my Docker images well enough

toddojala (Mon, 26 Jun 2017 22:31:36 GMT):
can you output the result of "docker images"?

mattalhonte (Mon, 26 Jun 2017 22:32:59 GMT):
REPOSITORY TAG IMAGE ID CREATED SIZE hyperledger/sawtooth-tp_settings latest 25f39b57e9c6 7 hours ago 163 MB hyperledger/sawtooth-validator latest d12a0519f996 2 weeks ago 167 MB hyperledger/sawtooth-tp_xo_python latest b46e3845e32c 2 weeks ago 166 MB hyperledger/sawtooth-tp_intkey_python latest cbd2bb272aa0 2 weeks ago 161 MB hyperledger/sawtooth-rest_api latest 74ed5c778b8c 2 weeks ago 165 MB hyperledger/sawtooth-all latest c0d471ead26b 2 weeks ago 183 MB hyperledger/composer-playground latest 80eb4bf34c8d 3 weeks ago 337 MB hyperledger/fabric-ca x86_64-1.0.0-alpha 35311d8617b4 3 months ago 240 MB hyperledger/fabric-couchdb x86_64-1.0.0-alpha f3ce31e25872 3 months ago 1.51 GB hyperledger/fabric-orderer x86_64-1.0.0-alpha 5685fd77ab7c 3 months ago 182 MB hyperledger/fabric-peer x86_64-1.0.0-alpha 784c5d41ac1d 3 months ago 184 MB hyperledger/fabric-ccenv x86_64-1.0.0-alpha 91792014b61f 3 months ago 1.29 GB hyperledger/fabric-baseos x86_64-0.3.0 c3a4cf3b3350 5 months ago 161 MB

toddojala (Mon, 26 Jun 2017 22:33:18 GMT):
@mattalhonte What I did was run the command "docker rmi IMAGE_NAME" on all the images that started with hyperledger.

toddojala (Mon, 26 Jun 2017 22:33:37 GMT):
In your case, just run it on the "hyperledger/sawtooth*" images....

toddojala (Mon, 26 Jun 2017 22:34:06 GMT):
@mattalhonte Give that a try - remove the possibly stale images with "docker rmi"

mattalhonte (Mon, 26 Jun 2017 22:35:29 GMT):
so, `docker rmi $(docker images hyperledger/sawooth-* -q)` ?

mattalhonte (Mon, 26 Jun 2017 22:36:08 GMT):
err `docker rmi $(docker images hyperledger/sawtooth-* -q)` rather?

mattalhonte (Mon, 26 Jun 2017 22:37:00 GMT):
k, done!

mattalhonte (Mon, 26 Jun 2017 22:38:01 GMT):
huzzah! :)

mattalhonte (Mon, 26 Jun 2017 22:38:05 GMT):
Thanks so much!

mattalhonte (Mon, 26 Jun 2017 22:39:29 GMT):
hrm, maybe the official docs should recommend running `docker rmi $(docker images hyperledger/sawtooth-* -q)` after shutting down with `docker-compose -f sawtooth-default.yaml down` ?

mattalhonte (Mon, 26 Jun 2017 22:53:48 GMT):
Stupid question...now that I've got the Docker up and running, how do I run the demo code exactly?

boydjohnson (Mon, 26 Jun 2017 22:56:14 GMT):
Just a second.

boydjohnson (Mon, 26 Jun 2017 22:57:47 GMT):
`docker exec -it sawtooth-client-default bash` and then run `xo` or `intkey` commands. Query blocks through the rest api using `sawtooth block list --url http://rest_api:8080`.

mattalhonte (Mon, 26 Jun 2017 22:58:17 GMT):
Awesome, thanks!

boydjohnson (Mon, 26 Jun 2017 22:58:41 GMT):
No problem. Thanks for being engaged as we work out the kinks.

mattalhonte (Mon, 26 Jun 2017 22:59:29 GMT):
hrm :/ ```docker exec -it sawtooth-client-default bash root@bdd0cd71cfd1:/# xo Error: invalid command: None root@bdd0cd71cfd1:/# intkey <_io.TextIOWrapper name='' mode='w' encoding='ANSI_X3.4-1968'> Error: invalid command: None```

boydjohnson (Mon, 26 Jun 2017 23:02:08 GMT):
try `xo -h`.

boydjohnson (Mon, 26 Jun 2017 23:03:08 GMT):
I'm going to make a Jira story about those commands, with no arguments, producing junk output.

boydjohnson (Mon, 26 Jun 2017 23:06:19 GMT):
Here is the jira story, mattalhonte, if you want to add anything: https://jira.hyperledger.org/browse/STL-509

mattalhonte (Mon, 26 Jun 2017 23:06:38 GMT):
Cool, thanks!

mattalhonte (Mon, 26 Jun 2017 23:07:50 GMT):
xo -h gives a Help output

boydjohnson (Mon, 26 Jun 2017 23:08:36 GMT):
Cool, then you can `xo init --url http://rest_api:8080` and then play through a game of xo.

mattalhonte (Mon, 26 Jun 2017 23:08:45 GMT):
huzzah, xo init works

boydjohnson (Mon, 26 Jun 2017 23:09:03 GMT):
Yay! Can you create a game?

mattalhonte (Mon, 26 Jun 2017 23:11:09 GMT):
Yup!

boydjohnson (Mon, 26 Jun 2017 23:12:11 GMT):
Sweet!

boydjohnson (Mon, 26 Jun 2017 23:13:13 GMT):
Good luck. Have fun.

mattalhonte (Mon, 26 Jun 2017 23:35:20 GMT):
How would one go about making a neat demo with a web frontend? Would really like to try n make a modified version of this awesome thing: https://provenance.sawtooth.me

mattalhonte (Tue, 27 Jun 2017 00:09:35 GMT):
Trying to run Tests. ```bin/run_docker_test families/supplychain/python/tests/test_tp_supplychain_python.yaml /home/ubuntu/sawtooth-with-supply-chain/sawtooth-core ERROR:__main__:Test service 'test-tp-supplychain-python' does not exist in compose file: 'families/supplychain/python/tests/test_tp_supplychain_python.yaml' ```

benoit.razet (Tue, 27 Jun 2017 02:32:05 GMT):
I ran into the same error

MaximeLandon (Tue, 27 Jun 2017 09:13:35 GMT):
@zac Hello ! Thanks for your answer yesterday, and yees you are right I'm working with Python. But I could have been more precise on my question: I am especially interested in the functionning of the `TransactionExecutor` part, which one is not explained or described in any Doc I have read. If you either know where to find that info, or mind explain this to me, I will be grateful ! Thanks !

MaximeLandon (Tue, 27 Jun 2017 09:32:05 GMT):
And also another question, maybe @benoit.razet @jjason or @jsmitchell may answer to me : Are there advantages to use Sawtooth with Docker rather than "with Ubuntu" ? If yes, which ones ? Thanks a lot

FlyingTiger (Tue, 27 Jun 2017 10:47:01 GMT):
Hi everyone, I had a question. When I looked into the code of STL, I found here https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/journal/chain.py#L203 , it only uses genesis_consensus.BlockVerifier or dev_mode_consensus.BlockVerifier, it couldn't use poet_consensus.PoetBlockVerifier, Am I wrong? If I want to use poet_consensus.PoetBlockVerifier, how should I do? Thanks.

Ayushi (Tue, 27 Jun 2017 11:17:33 GMT):
Has joined the channel.

boydjohnson (Tue, 27 Jun 2017 12:46:00 GMT):
Hi @FlyingTiger It dynamically loads the consensus module based on on-chain configuration. Check out https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_smoke.yaml#L32 where the config batch is made. This can be part of the genesis block, or can be sent to the validator later.

boydjohnson (Tue, 27 Jun 2017 12:50:08 GMT):
@MaximeLandon The /validator/sawtooth_validator/execution/executor.TransactionExecutor takes a scheduler and determines which transaction processor to send the transaction to. It allows for there to be processing of batches for both block publishing and block validation at the same time.

cianx (Tue, 27 Jun 2017 13:06:42 GMT):
@benoit.razet @mattalhonte That issue is fixed in this PR: https://github.com/hyperledger/sawtooth-core/pull/652 The test script has changed it's expectation of container names. There has to be a container in the compose file with a name that matches the compose file.

LoubnaBaroudi (Tue, 27 Jun 2017 13:26:05 GMT):
Hello everyone! When I launch an Intkey transaction and it's now on the transaction list, how can I see the payload of this transaction? To check for its value for instance. Thank you

boydjohnson (Tue, 27 Jun 2017 13:36:44 GMT):
@LoubnaBaroudi There is `sawtooth state list` which will show the opaque bytes stored in state.

LoubnaBaroudi (Tue, 27 Jun 2017 13:38:20 GMT):
yes I've seen it but there's no way I can check explicitly the value or the name

LoubnaBaroudi (Tue, 27 Jun 2017 13:38:28 GMT):
?

boydjohnson (Tue, 27 Jun 2017 13:42:09 GMT):
There currently isn't that functionality for the client. This https://jira.hyperledger.org/browse/STL-277 jira issue would do that.

LoubnaBaroudi (Tue, 27 Jun 2017 13:42:46 GMT):
Ok thank you @boydjohnson ! :)

boydjohnson (Tue, 27 Jun 2017 13:50:31 GMT):
You're welcome, @LoubnaBaroudi

toddojala (Tue, 27 Jun 2017 14:29:30 GMT):
@mattalhonte We will discuss the best way to deal with those "stale images" in the docs... ;)

MaximeLandon (Tue, 27 Jun 2017 14:47:57 GMT):
Ok got it @boydjohnson ! Then another question: From what I saw the `sawtooth config proposal create` generally bears 3 different key/value parameters (family, version, encoding), but let's suppose I want to cheat on my processor and change its logic. It would be very easy as there is only 3 parameters stored on-chain, and none of them relates to the inner content of this Transaction Family. Is there a way to add parameters to the `sawtooth config proposal create` ? Otherwise, what is the interest of transaction processors, if they can be changed with only weak control from the validator ? Why not putting all the code on-chain ? Thanks for the answer !

MaximeLandon (Tue, 27 Jun 2017 14:49:03 GMT):
Actually I guess we can first of all submit this `config proposal create` to the vote of other validators on the network ?

MaximeLandon (Tue, 27 Jun 2017 14:49:12 GMT):
as a first clue...

boydjohnson (Tue, 27 Jun 2017 14:51:37 GMT):
@MaximeLandon There are several on-chain settings that are consumed by the validator. Right now they are poorly documented. There is a sawtooth.settings.vote.authorized_keys that can restrict who can vote on proposed changes to config settings.

zac (Tue, 27 Jun 2017 15:09:27 GMT):
A lot of it is here: http://intelledger.github.io/transaction_family_specifications/settings_transaction_family.html

jjason (Tue, 27 Jun 2017 15:38:59 GMT):
@MaximeLandon So, I don't use docker much because recently I have been working on PoET SGX, which requires direct access to hardware. However, as I see it the advantages of using docker are the convenience it gives you. Docker images allow for all pre-requisites to be bundled together. If you were working directly in Ubuntu, then you have to install all necessary packages, set up Python paths, etc., etc. A pre-built validator docker image, for example, would have everything configured so that all you need to do was launch the image and you have a validator running. Docker images can also make testing easier. When testing SGX, I usually have to either launch a bunch of shells or use something like tmux so that I can manage a validator, several transaction processors, the rest API, etc. Docker can make this much easier - for example, see the PoET smoke tests in the `sawtooth-core/integration/sawtooth_integration/docker/test_poet_smoke.yaml`. It launches three validators (these include, for each, rest API, intkey transaction processor, settings transaction processor, validator registry transaction processor, and core validator) and the test application, all on a single machine allowing a small validator network to be smoke tested. I am sure that someone much smarter about docker can chime in. This is only my rudimentary understanding and probably only scratches the surface of the benefits.

MaximeLandon (Tue, 27 Jun 2017 23:10:19 GMT):
Okay I'll look at docker and how to use Sawtooth through it, thanks for the answer @jjason and also @boydjohnson

MaximeLandon (Wed, 28 Jun 2017 00:59:42 GMT):
When I launch `docker-compose -f sawtooth-default.yaml --version "2.0" up` , I have an error `docker-compose version 1.8.0, build unknown` . Does anyone knows why and what do I need to do ?

jjason (Wed, 28 Jun 2017 01:33:30 GMT):
Paging @adamludvik

benoit.razet (Wed, 28 Jun 2017 15:58:46 GMT):
@cianx @mattalhonte I pulled this morning and `bin/run_docker_test families/supplychain/python/tests/test_tp_supplychain_python.yaml` works just fine. Thanks!

mfford (Wed, 28 Jun 2017 20:29:53 GMT):
There will be a presentation and discussion of Composer + Hyperledger Sawtooth tomorrow (Thursday, June 29th) at 10am CDT. For those interested in participating, the Zoom meeting link is provided below: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone:  Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free)   Meeting ID: 655 382 678   International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi

mattalhonte (Wed, 28 Jun 2017 21:42:12 GMT):
@benoit.razet Hey, awesome!

mattalhonte (Wed, 28 Jun 2017 22:05:41 GMT):
What ever happened to Marketplace Navigator?

kelly_ (Wed, 28 Jun 2017 22:11:19 GMT):
It hasn't been brought forward to the .8 release

kelly_ (Wed, 28 Jun 2017 22:11:33 GMT):
though I'm sure we'd welcome anyone that wants to port it :)

mattalhonte (Wed, 28 Jun 2017 22:49:56 GMT):
Hrm, I do know a bit of ClojureScript. Uh, dumb question - any suggestions on where one would start off for such a task? Like, is there a record of what in particular broke in the move to .8?

kelly_ (Wed, 28 Jun 2017 22:51:38 GMT):
we'll probably the first thing is that we haven't ported the marketplace smart contract to .8

kelly_ (Wed, 28 Jun 2017 22:51:56 GMT):
thought @pschwarz may have some thoughts on some UI activities related to .8

mattalhonte (Wed, 28 Jun 2017 22:55:09 GMT):
Just so I've got it straight, my main goal is to make a sweet UI for a demo network like this: https://provenance.sawtooth.me/ Except, y'know, by editing existing templates instead of making it from scratch.

kelly_ (Wed, 28 Jun 2017 22:55:20 GMT):
got it

mattalhonte (Wed, 28 Jun 2017 22:55:32 GMT):
Helping port the marketplace Smart Contracts to .8 would be the most direct route to that?

kelly_ (Wed, 28 Jun 2017 22:55:50 GMT):
off the top of my head one possible route would be to modify the marketplace explorer to interact with the supply chain transaction family

kelly_ (Wed, 28 Jun 2017 22:56:03 GMT):
@cianx created the transaction family and is working on some rest API improvements

kelly_ (Wed, 28 Jun 2017 22:56:23 GMT):
@pschwarz created the marketplace explorer that integrated with the marketplace transaction family

kelly_ (Wed, 28 Jun 2017 22:56:51 GMT):
the .7 architecture and APIs were quite different I suspect, but @pschwarz may have some ideas to get you started

kelly_ (Wed, 28 Jun 2017 22:57:39 GMT):
Peter may be home for the day but hopefully he has some guidance for you

mattalhonte (Wed, 28 Jun 2017 22:57:52 GMT):
Awesome, thanks!

LoubnaBaroudi (Thu, 29 Jun 2017 09:05:15 GMT):
Is there a possibility to decode the data bytes given by the command sawtooth state show when it's a transaction I wrote and submitted myself?

LoubnaBaroudi (Thu, 29 Jun 2017 09:48:40 GMT):
Or is there a possibility to have messages in the processor just like InvalidTransaction for instance but without ending the process? Thank you!

pschwarz (Thu, 29 Jun 2017 13:12:08 GMT):
@mattalhonte I'm working on an example using the supply chain family, which incorporates the new way to consume state deltas into an off-chain database. This was something that was handled in a very proof-of-concept way in 0.7, but now should be a bit more stream-lined.

pschwarz (Thu, 29 Jun 2017 13:31:19 GMT):
@LoubnaBaroudi As far as the first question goes, `sawtooth state show` doesn't have any knowledge of how to decode the actual state values, really it can just tell you that the state was set, and give you the bytes. You can filter on address (e.g. only show the state entries that you created via your transaction processor). If you want to actually view the content of state, you'll need to build your own tool for that. A couple of examples would be a web page that calls out to the sawtooth rest api, and decodes the information, or a CLI tool that can print the values to the console. There is an example of the former at https://github.com/IntelLedger/omi-summer-lab. An example of the later is in the sawtooth-core repo, under the `sdk/examples/xo_python`

pschwarz (Thu, 29 Jun 2017 13:31:36 GMT):
Not entirely sure I understand your second question

LoubnaBaroudi (Thu, 29 Jun 2017 13:35:38 GMT):
Ok thank you I will look at it! I wanted my processor to raise some messages to keep me inform of the actual state of the transaction. Messages I would wrote myself in handler.py. But the only things I found are Error messages

pschwarz (Thu, 29 Jun 2017 13:43:02 GMT):
Ah, I see - you could just use the standard python logging for that. The log level might need to be increased in your implementation

benoit.razet (Thu, 29 Jun 2017 14:06:55 GMT):
I am reviewing the code for supplychain, I could not find a field in the Record to store information related to a good in the physical world. So I am guessing the intent is to store this information offchain, and the smart contract is controlling who can access the record. Or perhaps the idea is to extend the supplychain transaction processor to handle information on chain. Am I on the right path?

pschwarz (Thu, 29 Jun 2017 14:07:17 GMT):
@cianx :point_up:

zac (Thu, 29 Jun 2017 14:25:58 GMT):
@LoubnaBaroudi > keep me inform of the actual state of the transaction You are saying you want to get periodic updates while the Transaction is still working it's way through your processor?

zac (Thu, 29 Jun 2017 14:26:21 GMT):
i.e. Step 1 is complete . . . Step 2 is complete . . . etc?

zac (Thu, 29 Jun 2017 14:26:21 GMT):
i.e. TP handle step 1 is complete . . . TP handle step 2 is complete . . . etc?

LoubnaBaroudi (Thu, 29 Jun 2017 14:31:09 GMT):
yes kind of @zac

LoubnaBaroudi (Thu, 29 Jun 2017 14:32:31 GMT):
If I take for instance intkey, If I make an 'inc' transaction I would like to have : TP handle value was x ... TP handle value is now x+y

LoubnaBaroudi (Thu, 29 Jun 2017 14:33:50 GMT):
things like [ INFO CORE]

zac (Thu, 29 Jun 2017 14:36:55 GMT):
Hrmmm

zac (Thu, 29 Jun 2017 14:37:10 GMT):
Correct me if I'm wrong, but I think what can come out the TP is pretty limited

boydjohnson (Thu, 29 Jun 2017 14:37:11 GMT):
@LoubnaBaroudi https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/processor/handler.py#L223 This is an example of logging in xo, which displays the current game state.

zac (Thu, 29 Jun 2017 14:37:23 GMT):
You can set the data

zac (Thu, 29 Jun 2017 14:37:33 GMT):
And I could save a log in there I suppose

zac (Thu, 29 Jun 2017 14:37:33 GMT):
And you could save a log in there I suppose

zac (Thu, 29 Jun 2017 14:37:59 GMT):
But you are sending back either the data to be saved or an error message

zac (Thu, 29 Jun 2017 14:38:17 GMT):
On the Client side, you can do things like check values

zac (Thu, 29 Jun 2017 14:38:29 GMT):
You could also break it down into multiple transactions potentially

LoubnaBaroudi (Thu, 29 Jun 2017 14:39:07 GMT):
I think the link @boydjohnson gave me will help

zac (Thu, 29 Jun 2017 14:39:25 GMT):
yes, you can also log whatever

jsmitchell (Thu, 29 Jun 2017 14:39:30 GMT):
the current assumption is that apply() is a short-duration activity and that it either succeeds or fails

zac (Thu, 29 Jun 2017 14:39:38 GMT):
if that works for your use case

jsmitchell (Thu, 29 Jun 2017 14:39:44 GMT):
it is async to the client

jsmitchell (Thu, 29 Jun 2017 14:40:17 GMT):
logging in the tp is the right thing to do for the developer to get insight into what is happening

boydjohnson (Thu, 29 Jun 2017 14:40:31 GMT):
Also one thing to keep in mind is that what is being logged in apply may not be current for the chain, it could be done in block publishing for a block that never gets added to the chain.

toddojala (Thu, 29 Jun 2017 14:41:10 GMT):
@benoit.razet The record.proto file has a field, "identifier", that is the natural key of the record, serial number, or attached sensor info. Does that help?

LoubnaBaroudi (Thu, 29 Jun 2017 14:42:21 GMT):
I will try and see if it works for my case

benoit.razet (Thu, 29 Jun 2017 14:51:29 GMT):
I see the identifier is set when a record is created with the function `_record_create()`

benoit.razet (Thu, 29 Jun 2017 14:55:57 GMT):
but I don't see where the "identifier" is changed

benoit.razet (Thu, 29 Jun 2017 15:05:01 GMT):
@toddojala if I take the example of the identifier of the record being a sensor identifier. This identifier would indicate where to find the information, or the information itself (e.g. temperature)?

GhadiShayban (Thu, 29 Jun 2017 15:09:04 GMT):
Is there a description of the TX signing algorithm that is more detailed than https://intelledger.github.io/_autogen/txn_submit_tutorial.html#building-the-transaction and less detailed than reading the source? I am trying to work STL-461 and cross validate the signing / verification between Python <-> JDK <-> Go <-> JavaScript SDKs

GhadiShayban (Thu, 29 Jun 2017 15:09:04 GMT):
Is there a description of the TX signing algorithm that is more detailed than https://intelledger.github.io/_autogen/txn_submit_tutorial.html#sign-the-header and less detailed than reading the source? I am trying to work STL-461 and cross validate the signing / verification between Python <-> JDK <-> Go <-> JavaScript SDKs

GhadiShayban (Thu, 29 Jun 2017 15:10:13 GMT):
It looks like it's using the Bitcoin "compact signature" scheme of concat(32 bytes R + 32 Bytes S) ... but it's unclear whether to hash the message once or hash it twice

kelly_ (Thu, 29 Jun 2017 16:03:22 GMT):
@Dan ^^

Dan (Thu, 29 Jun 2017 16:32:47 GMT):
hi @GhadiShayban it should just be once if I understand your question right. some ECDSA Sign functions take the raw message and hash it for you, and others expect the hash.

Dan (Thu, 29 Jun 2017 16:33:49 GMT):
so if the library you are using looks like this `sign(key, message)` assume it is hashing for you and you should not also hash.

zac (Thu, 29 Jun 2017 16:34:04 GMT):
@GhadiShayban I'd be curious to hear what exactly you're using and how it is breaking

zac (Thu, 29 Jun 2017 16:35:16 GMT):
I wrote that documentation, and only understand half of what is going on under the hood myself. The idea behind that doc though is that it is enough for someone in your position to create a valid signature without having to get into the weeds.

zac (Thu, 29 Jun 2017 16:35:16 GMT):
I wrote that documentation, and only understand half of what is going on under the hood myself. But the idea behind that doc is that it's enough for someone in your position to create a valid signature in any language without understanding _every_ aspect of the process.

zac (Thu, 29 Jun 2017 16:35:51 GMT):
I only actually created signatures in Python and JS though, so there may be peculiarities in other languages I didn't anticipate.

sstone1 (Thu, 29 Jun 2017 16:37:28 GMT):
@here great call on Composer + Sawtooth today, here are the slides that I presented: https://www.slideshare.net/SimonStone8/introduction-to-hyperledger-composer

sstone1 (Thu, 29 Jun 2017 16:37:51 GMT):
Here's our website along with the tutorials/install guides: https://hyperledger.github.io/composer/

Dan (Thu, 29 Jun 2017 16:39:20 GMT):
@sstone1 thanks again for presenting!

tkuhrt (Thu, 29 Jun 2017 16:41:37 GMT):
And the video should now be available in both the Sawtooth and Composer Meeting Recordings folders

sstone1 (Thu, 29 Jun 2017 16:42:57 GMT):
great, and np :)

GhadiShayban (Thu, 29 Jun 2017 18:02:40 GMT):
@zac i want TX signing to be correct/consistent across all SDKs. Is a message byte[] or a utf-8 string, do you double hash...etc. you necessarily have to care about _every_ aspect, otherwise you'll spend a couple days debugging why this particular opaque string is not the correct opaque string =)

GhadiShayban (Thu, 29 Jun 2017 18:04:47 GMT):
my next task was to transplant the python test strings (pubkeys, etc.) into the go sdk to see if they check

GhadiShayban (Thu, 29 Jun 2017 18:06:11 GMT):
I'm gonna punt on implementing the Java signing until I can figure out whether the currently implemented sdks are consistent

GhadiShayban (Thu, 29 Jun 2017 18:08:15 GMT):
the old joke about AWS APIs resonates with pub key signing: just keep hitting it until it stops returning 400

Dan (Thu, 29 Jun 2017 18:11:56 GMT):
Hi @GhadiShayban was my explanation on the hashing clear? If what you want to sign is a hash then you pass that into your signing API as the message ... `sign(key, message=tx_header_hash)` Caveat is if your signing api is expecting the message hash rather than the message. In which case you would need what looks like a hash of a hash. If you want to point me to the library you are using I can be more clear.

GhadiShayban (Thu, 29 Jun 2017 18:13:33 GMT):
thanks Dan -- absolutely clear. Yesterday I was trying to get something signed in Python to be verified on the JVM, and v.v.

GhadiShayban (Thu, 29 Jun 2017 18:13:50 GMT):
(so outside of a transaction, just signing a string)

zac (Thu, 29 Jun 2017 18:26:31 GMT):
Yeah, dealing with signature issues is a huge pain

zac (Thu, 29 Jun 2017 18:26:42 GMT):
And every library seems to implement things a little differently

GhadiShayban (Thu, 29 Jun 2017 18:26:50 GMT):
yeah not fun

zac (Thu, 29 Jun 2017 18:27:05 GMT):
Let me know if you discover anything that you think should be mentioned in that document but isn't

GhadiShayban (Thu, 29 Jun 2017 18:27:36 GMT):
seems like the bitcoin "compact sig" is what the underlying python lib is using... hopefully I can give back with a PR

zac (Thu, 29 Jun 2017 18:27:42 GMT):
And obviously, if there are any signing inconsistencies between the SDKs, we definitely want to push bug fixes for those

MaximeLandon (Thu, 29 Jun 2017 18:27:43 GMT):

Message Attachments

GhadiShayban (Thu, 29 Jun 2017 18:27:46 GMT):
all the bitcoin "standards" are super baroque

MaximeLandon (Thu, 29 Jun 2017 18:27:49 GMT):
Hello everyone, how can I solve this problem ? Thnaks

zac (Thu, 29 Jun 2017 18:28:13 GMT):
yes, "compact sig" is accurate

zac (Thu, 29 Jun 2017 18:28:32 GMT):
Though I am also not super clear on what that is, or how it differs from a non-compact sig

GhadiShayban (Thu, 29 Jun 2017 18:28:54 GMT):
64 or 65 bytes vs. 70 71 72 bytes on standard ECDSA

kelly_ (Thu, 29 Jun 2017 18:29:04 GMT):
that's the DER encoding right?

GhadiShayban (Thu, 29 Jun 2017 18:29:09 GMT):
the latter, yeah

zac (Thu, 29 Jun 2017 18:30:06 GMT):
Yeah, I tried to mention byte-lengths as much as possible in that document since there seems to be four different terms and loose specifications for everything

zac (Thu, 29 Jun 2017 18:30:22 GMT):
Byte-lengths feels nice and consistent and confirmable

pschwarz (Thu, 29 Jun 2017 18:30:36 GMT):
@MaximeLandon the `test_poet_smoke.yaml` is for local and CI server testing, so it's not relying on published docker images, but locally built ones. You would need to run `./bin/build_all` for that to work

boydjohnson (Thu, 29 Jun 2017 18:31:18 GMT):
@MaximeLandon and then `./bin/run_docker_test integration.....`

GhadiShayban (Thu, 29 Jun 2017 18:31:59 GMT):
@kelly_ @zac all of this is new to me, but is there a particular advantage to using bitcoin's variants vs other signing schemes? i don't know the archaeology, besides that one of the schemes allows you to extract the pubkey from the signature

zac (Thu, 29 Jun 2017 18:32:52 GMT):
My answer is just going to be "because that is what the library I was using output by default"

zac (Thu, 29 Jun 2017 18:33:11 GMT):
Some of the folks who worked more directly with the signing stuff may have better answers

MaximeLandon (Thu, 29 Jun 2017 18:33:45 GMT):
Thanks @pschwarz and @boydjohnson for your answers, however I have never used this `./bin/buil_all` command, where am I supposed to execute it ? Thanks a lot

zac (Thu, 29 Jun 2017 18:33:50 GMT):
I will say it is really tough to get away from the BitCoin standards in this space. Almost all existing libraries are designed with BC in mind.

boydjohnson (Thu, 29 Jun 2017 18:35:14 GMT):
If you have the hyperledger/sawtooth-core repo, it would be the file at sawtooth-core/bin/build_all. You should be in sawtooth-core.

MaximeLandon (Thu, 29 Jun 2017 18:35:42 GMT):
okkkkayyyy thanks a lot !!!

MaximeLandon (Thu, 29 Jun 2017 18:41:27 GMT):

Message Attachments

MaximeLandon (Thu, 29 Jun 2017 18:42:12 GMT):
What can I do about that ? If you may explain me briefly what is the "context", sorry I'm new to Docker...

pschwarz (Thu, 29 Jun 2017 18:43:04 GMT):
What OS are you on?

MaximeLandon (Thu, 29 Jun 2017 18:43:13 GMT):
linux

MaximeLandon (Thu, 29 Jun 2017 18:43:19 GMT):
ubuntu

boydjohnson (Thu, 29 Jun 2017 18:46:59 GMT):
I wouldn't do it from bin, I think that is why docker is getting confused. `cd ..` to sawtooth-core and then `./bin/build_all`.

MaximeLandon (Thu, 29 Jun 2017 19:00:59 GMT):
Thanks, it works

MaximeLandon (Thu, 29 Jun 2017 19:03:12 GMT):
By the way I have a Docker directory for my projects, would it have worked if I had done ` ../Sawtooth/bin/build_all` ?

MaximeLandon (Thu, 29 Jun 2017 19:03:29 GMT):
(Docker is the home directory like Sawtooth)

boydjohnson (Thu, 29 Jun 2017 19:04:33 GMT):
Hmm, not sure.

MaximeLandon (Thu, 29 Jun 2017 19:06:09 GMT):
And let me ask again a question left unanswered: From what I saw the `sawtooth config proposal create` generally bears 3 different key/value parameters (family, version, encoding), but let's suppose I want to cheat on my processor and change its logic. It would be very easy as there is only 3 parameters stored on-chain, and none of them relates to the inner content of this Transaction Family. Is there a way to add parameters to the `sawtooth config proposal create` ? Otherwise, what is the interest of transaction processors, if they can be changed with only weak control from the validator ? Why not putting all the code on-chain ? Thanks for the answer !

MaximeLandon (Thu, 29 Jun 2017 19:07:07 GMT):
And more broadly, what is the security around the transaction processor ? or around the link processor-validator...

boydjohnson (Thu, 29 Jun 2017 19:09:21 GMT):
Ah, so what you are proposing is that what the validator itself consumes from the on-chain settings would be stored on-chain as well. Would this just be for which txn processors are supported by the validator?

boydjohnson (Thu, 29 Jun 2017 19:11:53 GMT):
https://jira.hyperledger.org/browse/STL-297 This issue is around designing permissioning for connecting with a validator. Right now it is assumed that whoever is setting up a node has control over networking rules on the server and might put the txn_processor on the same server as the validator.

MaximeLandon (Thu, 29 Jun 2017 19:13:12 GMT):
Well I mean that -from my understanding of sawtooth- the validator doesn't know what is the transaction processor logic, it just knows under which format transaction data is supposed to arrive, and assumes that this data is "correct" from the transaction processor point of view. Which means that, in the case where there are only 3 parameters in the sawtooth config proposal create, I -malicious cracker- can modify the logic of the processor without changing these three parameters, so as not to submit another config proposal that would have to be accepted by potential other validators.

AlexanderGordon (Thu, 29 Jun 2017 19:13:50 GMT):
Has joined the channel.

AlexanderGordon (Thu, 29 Jun 2017 19:13:55 GMT):
hi

AlexanderGordon (Thu, 29 Jun 2017 19:14:10 GMT):
sawtooth can be run on private blockchain?

MaximeLandon (Thu, 29 Jun 2017 19:14:14 GMT):
Well, yet if I understood you correctly, that doesn't solve the problem.

MaximeLandon (Thu, 29 Jun 2017 19:14:52 GMT):
Because if you can get inside the server I guess you still can modify the transaction processor

boydjohnson (Thu, 29 Jun 2017 19:14:53 GMT):
Could you describe the scenario more completely?

MaximeLandon (Thu, 29 Jun 2017 19:14:57 GMT):
okay

zac (Thu, 29 Jun 2017 19:16:49 GMT):
@AlexanderGordon What is your definition of a private blockchain?

AlexanderGordon (Thu, 29 Jun 2017 19:17:18 GMT):
one run in house

AlexanderGordon (Thu, 29 Jun 2017 19:18:17 GMT):
from what I see behind all words - its simply a software for blockchain contracts?

zac (Thu, 29 Jun 2017 19:18:28 GMT):
Yep

zac (Thu, 29 Jun 2017 19:18:33 GMT):
You can deploy it however you like

zac (Thu, 29 Jun 2017 19:18:55 GMT):
There isn't one Sawtooth network like with Bitcoin or Ethereum

AlexanderGordon (Thu, 29 Jun 2017 19:19:54 GMT):
cool

zac (Thu, 29 Jun 2017 19:21:31 GMT):
You could build a big cryptocurrency network on top of Sawtooth if you wanted. But you can also do something like an internal banking network, that tracks exchanges between different banks that each run their own validator node which is not publicly visible.

AlexanderGordon (Thu, 29 Jun 2017 19:21:40 GMT):
oki

AlexanderGordon (Thu, 29 Jun 2017 19:22:01 GMT):
and how is security assured?

zac (Thu, 29 Jun 2017 19:22:13 GMT):
That is a big question

zac (Thu, 29 Jun 2017 19:22:36 GMT):
You mean, how is it kept private?

zac (Thu, 29 Jun 2017 19:22:59 GMT):
Or how is the blockchain kept secure/valid?

boydjohnson (Thu, 29 Jun 2017 19:23:22 GMT):
The three network cases are often called public, permissioned, and private blockchains. STL-297 that I posted above has a design task for on-chain permissioning.

MaximeLandon (Thu, 29 Jun 2017 19:23:50 GMT):
I have: - A validator - An intkey txn processor (let's imagine it is a bank software, maintaining bank accounts) - A declaration of this processor to the validator, via the `sawtooth config proposal create .....{family, version, encoding}` (Validator and processor can either be on two different machines, or on the same) In this case, the validator accepts blocks from the transaction processor with only one concern: is the message format the good one ? This is because the "correct" character of a transaction is determined by the transaction processor.

AlexanderGordon (Thu, 29 Jun 2017 19:23:57 GMT):
zac how is blockchain kept secure

zac (Thu, 29 Jun 2017 19:24:08 GMT):
_magic_

MaximeLandon (Thu, 29 Jun 2017 19:24:09 GMT):
No actually @boydjohnson I found the answer by myself when writing

AlexanderGordon (Thu, 29 Jun 2017 19:24:10 GMT):
from transactions been overwriten

AlexanderGordon (Thu, 29 Jun 2017 19:24:30 GMT):
zac in btc you need to maintain a lot of hash to prevent overwriting

AlexanderGordon (Thu, 29 Jun 2017 19:24:41 GMT):
how its solve in sawtooth?

zac (Thu, 29 Jun 2017 19:25:05 GMT):
I am not the person to give a thoroughly technical answer to this

zac (Thu, 29 Jun 2017 19:25:09 GMT):
But it is similar

MaximeLandon (Thu, 29 Jun 2017 19:25:12 GMT):
Because if you add a valid action like erase, that is possible if ou have access to the processor. But then you would have to get various keys for sending transactions on the good addresses, etc etc

zac (Thu, 29 Jun 2017 19:25:37 GMT):
Hashes are maintained, everything is signed

AlexanderGordon (Thu, 29 Jun 2017 19:25:50 GMT):
zac also whoever supplies computational power will want $$ for it

AlexanderGordon (Thu, 29 Jun 2017 19:26:01 GMT):
now I can transact via SEPA and likes very cheaply

MaximeLandon (Thu, 29 Jun 2017 19:26:06 GMT):
And you would have a very short time, because the firm may able to controlvery quickly if files have been modified, and could very quickly reconfigure a new transaction processor and remove the old one.

zac (Thu, 29 Jun 2017 19:26:37 GMT):
Ah, so unlike you bitcoin you do not need Proof of Work algorithms for consensus

zac (Thu, 29 Jun 2017 19:27:14 GMT):
Sawtooth features pluggable consensus, so you _could_ use that if you wanted, but the most interesting option is Proof of Elapsed Time, or PoET

Dan (Thu, 29 Jun 2017 19:27:20 GMT):
@GhadiShayban @zac short answer is we went with compact signature because they were small. Largely the roots of that path were from the original research which started looking at bitcoin. That led up to present day where we were still using the bitcoin curve, and then a fast library from the bitcoin people for that curve. And then from that the kind of signature formats that were options compact was the best. We decided against using PK recovery in this version so that lopped off one format variation too where you don't need to hang onto some extra bits that let you help recover the pubkey.

AlexanderGordon (Thu, 29 Jun 2017 19:27:39 GMT):
hows does PoET works?

MaximeLandon (Thu, 29 Jun 2017 19:27:40 GMT):
So actually the blockchain itself is not really providing good security around the transaction processor, it seems that the complexity of the structure (firm, bank, governement, whatever) would the real protection against an attack on the transaction processor

zac (Thu, 29 Jun 2017 19:27:59 GMT):
Once again, not the guy to get too technical here, but basically you are replacing the complex hashing function with a hardware solution

MaximeLandon (Thu, 29 Jun 2017 19:28:05 GMT):
@boydjohnson I hope I am right on what I just said...

zac (Thu, 29 Jun 2017 19:28:15 GMT):
validators wait a random amount of time before claiming a block

zac (Thu, 29 Jun 2017 19:28:28 GMT):
that wait time is signed by the hardware, the Trusted Execution Environment

AlexanderGordon (Thu, 29 Jun 2017 19:28:58 GMT):
hmm

zac (Thu, 29 Jun 2017 19:29:01 GMT):
This verifies the validator actually waited, and didn't just claim the block after 1ms

zac (Thu, 29 Jun 2017 19:29:17 GMT):
Whichever validator happens to go first, gets the block

zac (Thu, 29 Jun 2017 19:29:33 GMT):
You can also do some statistical modeling to complement the hardware signature

AlexanderGordon (Thu, 29 Jun 2017 19:29:46 GMT):
sounds fun

AlexanderGordon (Thu, 29 Jun 2017 19:29:47 GMT):
:)

zac (Thu, 29 Jun 2017 19:29:55 GMT):
if one validator is claiming all the blocks, they are bad

zac (Thu, 29 Jun 2017 19:29:59 GMT):
but anyway

AlexanderGordon (Thu, 29 Jun 2017 19:30:04 GMT):
it can replace swift for example

zac (Thu, 29 Jun 2017 19:30:07 GMT):
this means there is no significant energy cost

AlexanderGordon (Thu, 29 Jun 2017 19:30:11 GMT):
for participating banks

AlexanderGordon (Thu, 29 Jun 2017 19:30:35 GMT):
if some banks choose to issue own e currencies they can use sawtooth to transact :)

AlexanderGordon (Thu, 29 Jun 2017 19:30:46 GMT):
bypassing basel and likes :)

boydjohnson (Thu, 29 Jun 2017 19:30:49 GMT):
@MaximeLandon For the transaction processor, which is just a stateless process that validates txns and has some access to state on the validator, I think you are right, you would have to trust your hardware. You don't have to trust other people's hardware, and that is where the blockchain and consensus comes in.

zac (Thu, 29 Jun 2017 19:30:50 GMT):
yeah

AlexanderGordon (Thu, 29 Jun 2017 19:31:02 GMT):
interesting

zac (Thu, 29 Jun 2017 19:31:38 GMT):
really, anywhere you have a monolithic mediator negotiating between different parties that don't trust each other

AlexanderGordon (Thu, 29 Jun 2017 19:31:39 GMT):
for a momen in my view biggest weakest points of all crypto coins, they are not allowed to be backed by fiat directly, 1:1

AlexanderGordon (Thu, 29 Jun 2017 19:31:48 GMT):
moment

zac (Thu, 29 Jun 2017 19:31:48 GMT):
you could potentially replace it with a blockchain

zac (Thu, 29 Jun 2017 19:31:59 GMT):
and that blockchain could be Sawtooth

AlexanderGordon (Thu, 29 Jun 2017 19:32:04 GMT):
alibaba coiuld invest in it :)

AlexanderGordon (Thu, 29 Jun 2017 19:32:08 GMT):
*could

AlexanderGordon (Thu, 29 Jun 2017 19:32:20 GMT):
to add it to their alipay solution

zac (Thu, 29 Jun 2017 19:33:03 GMT):
sure, potentially

AlexanderGordon (Thu, 29 Jun 2017 19:34:10 GMT):
so now banks transact via clearing house - central bank

AlexanderGordon (Thu, 29 Jun 2017 19:34:15 GMT):
they can use sawtooth instead?

AlexanderGordon (Thu, 29 Jun 2017 19:34:23 GMT):
not saying they would but :)

AlexanderGordon (Thu, 29 Jun 2017 19:34:37 GMT):
also trading shares

AlexanderGordon (Thu, 29 Jun 2017 19:34:47 GMT):
to guarantee counterparty perfomance

zac (Thu, 29 Jun 2017 19:36:44 GMT):
yes, I think that is the big potential

zac (Thu, 29 Jun 2017 19:36:58 GMT):
blockchains can force trust algorithmically

zac (Thu, 29 Jun 2017 19:37:06 GMT):
you don't need middlemen to mediate

zac (Thu, 29 Jun 2017 19:38:54 GMT):
So for anyone who relies on something like a big central bank, there is potentially a lot of autonomy and profit to be gained by getting rid of the mediator and going with a distributed ledger like Sawtooth

AlexanderGordon (Thu, 29 Jun 2017 19:39:02 GMT):
yes

AlexanderGordon (Thu, 29 Jun 2017 19:39:13 GMT):
I say penny stocks

zac (Thu, 29 Jun 2017 19:39:16 GMT):
You can imagine something like real estate sales too

AlexanderGordon (Thu, 29 Jun 2017 19:39:17 GMT):
its better than ICO :)

AlexanderGordon (Thu, 29 Jun 2017 19:39:23 GMT):
real estate sales no

zac (Thu, 29 Jun 2017 19:39:29 GMT):
Where normally a bank holds everything in escrow while the sale is resolved

AlexanderGordon (Thu, 29 Jun 2017 19:39:38 GMT):
for 1 reason - person under duress may sign contract to sell

zac (Thu, 29 Jun 2017 19:39:53 GMT):
Potentially the escrow process could be replaced

AlexanderGordon (Thu, 29 Jun 2017 19:40:06 GMT):
escrow yes

AlexanderGordon (Thu, 29 Jun 2017 19:40:29 GMT):
I would say transfer of company shares and real estate should still be done in person

AlexanderGordon (Thu, 29 Jun 2017 19:40:41 GMT):
so u cant be kidnapped and forced to sign all over

AlexanderGordon (Thu, 29 Jun 2017 19:40:42 GMT):
:)

zac (Thu, 29 Jun 2017 19:41:00 GMT):
Maybe

zac (Thu, 29 Jun 2017 19:41:07 GMT):
I'm not sure how much of a risk that is

zac (Thu, 29 Jun 2017 19:41:21 GMT):
Potentially a court could order it be signed back as well

zac (Thu, 29 Jun 2017 19:41:47 GMT):
The chain can't be undone, but you can submit a transaction which reverses the effects of a previous transactions

AlexanderGordon (Thu, 29 Jun 2017 19:41:54 GMT):
yep

MaximeLandon (Thu, 29 Jun 2017 19:42:38 GMT):
@boydjohnson I don't understand, if that can happen to my processor, how could I trust other's one ?

zac (Thu, 29 Jun 2017 19:44:52 GMT):
@MaximeLandon You can't. That's why you're using a blockchain :wink:

boydjohnson (Thu, 29 Jun 2017 19:45:27 GMT):
Well, if you trust your own, then the blockchain and consensus should be able to weed out validators with bad txn processors. If you don't trust your txn processor, then you really can't trust your own validator.

MaximeLandon (Thu, 29 Jun 2017 19:46:21 GMT):
well if someone else can change its transaction processor and my validator not to see it, the state I share with him is endangered

MaximeLandon (Thu, 29 Jun 2017 19:47:33 GMT):
No actually let me think about it, I may be wrong

zac (Thu, 29 Jun 2017 19:47:40 GMT):
Looking at the network as a whole, you would have to corrupt 51% of the transaction processors

boydjohnson (Thu, 29 Jun 2017 19:47:47 GMT):
The state hash at the end of processing a block is stored on the block header, so you can make state assertions: that your state is the same as their state, or if it is isn't there is a problem.

zac (Thu, 29 Jun 2017 19:48:07 GMT):
Which maybe could be done through some sort of compromised distribution service or something

zac (Thu, 29 Jun 2017 19:48:26 GMT):
It would be quite the hack though

MaximeLandon (Thu, 29 Jun 2017 19:52:32 GMT):
Ok let me give you an example (@boydjohnson has the beggining of the story): If there are 2 validators and only one of them is connected to an intkey processor, that this processor is known from both validators (thanks to `proposal create`), and that now the processor logic is changed without having to modify the parameters of the `config proposal create`, then validators will accepts peacefully all the transactions submitted, and the nude validator will then share a state that he may not want

MaximeLandon (Thu, 29 Jun 2017 19:53:16 GMT):
and by "want", I mean you rely on the fact that the processor is not corrupted

zac (Thu, 29 Jun 2017 19:54:34 GMT):
all validators must have all transaction processors locally

agunde (Thu, 29 Jun 2017 19:54:41 GMT):
Each validator needs to have its own intkey transaction processor

MaximeLandon (Thu, 29 Jun 2017 19:54:50 GMT):
but that is not convenient at all

boydjohnson (Thu, 29 Jun 2017 19:54:57 GMT):
So @MaximeLandon is that a validator without intkey when intkey is specified? If so it will pause in all processing of txns until it has an intkey processor attached. If the settings are changed so that intkey is no longer required, all intkey txns will be dropped by the validators.

MaximeLandon (Thu, 29 Jun 2017 19:55:04 GMT):
it kills all the beauty of sawtooth

zac (Thu, 29 Jun 2017 19:55:09 GMT):
How can you trust a transaction processed by someone else?

MaximeLandon (Thu, 29 Jun 2017 19:55:35 GMT):
okkkkkkkkkkkkkkkkk

MaximeLandon (Thu, 29 Jun 2017 19:55:39 GMT):
I understoooood

MaximeLandon (Thu, 29 Jun 2017 19:56:04 GMT):
but, that makes the system not convenient at all

zac (Thu, 29 Jun 2017 19:56:52 GMT):
If you are able to trust the other validators than a blockchain probably is a less convenient solution

zac (Thu, 29 Jun 2017 19:57:03 GMT):
You could just use a database

MaximeLandon (Thu, 29 Jun 2017 19:57:12 GMT):
because if you need to check every single transaction (which may be passing through a lot of code, in a complete application structure), then the validator package you have to bear is way too big and/or slow isn't it ?

zac (Thu, 29 Jun 2017 19:57:27 GMT):
The problem blockchains solve is a lack of trust between parties

zac (Thu, 29 Jun 2017 19:58:20 GMT):
Which comes with a certain amount of overhead

MaximeLandon (Thu, 29 Jun 2017 19:58:37 GMT):
(I smiled)

MaximeLandon (Thu, 29 Jun 2017 19:59:40 GMT):
But then this means running an eco system of validators and all the firm structure around them (represented by txn processors) will be very heavy

zac (Thu, 29 Jun 2017 20:00:00 GMT):
Perhaps

zac (Thu, 29 Jun 2017 20:00:12 GMT):
But I think the CPU time will be much cheaper than the people time it replaces

MaximeLandon (Thu, 29 Jun 2017 20:00:18 GMT):
Isn't it a major brake to scalability ?

MaximeLandon (Thu, 29 Jun 2017 20:00:36 GMT):
Well that is right

boydjohnson (Thu, 29 Jun 2017 20:00:53 GMT):
There is some thought on processing txns within sgx and then emitting a signature if it is valid. Then other validators would only need to process the signature verification.

AlexanderGordon (Thu, 29 Jun 2017 20:01:11 GMT):
it seems like an amazing tech

boydjohnson (Thu, 29 Jun 2017 20:01:17 GMT):
In general blockchains are all processing each txn on each node.

adamludvik (Thu, 29 Jun 2017 20:01:47 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=54eJvxdSXQuTcgRrn) @zac @MaximeLandon This is true at the moment, but may not always be true. @amundson and I have been doing some brainstorming around heterogenous networks.

adamludvik (Thu, 29 Jun 2017 20:02:12 GMT):
Where not every validator needs to run every transaction processor. But that is a ways off still.

AlexanderGordon (Thu, 29 Jun 2017 20:02:39 GMT):
is there an image to show transactions flow? to illustrate entire concept

zac (Thu, 29 Jun 2017 20:06:23 GMT):
I don't know of one off the top of my head. I think there are some architecture diagrams out there somewhere . . .

boydjohnson (Thu, 29 Jun 2017 20:09:00 GMT):
I think this is a decent diagram at a high level, but it isn't txn/batch specific: https://www.altoros.com/blog/wp-content/uploads/2017/02/Hyperledger-Intel-Sawtooth-Lake-Transaction-Family.jpg

zac (Thu, 29 Jun 2017 20:11:33 GMT):
So on that diagram, the left side of the Network is transactions and blocks coming in from other validators, and the right side is transactions submitted locally?

MaximeLandon (Thu, 29 Jun 2017 20:12:10 GMT):
Well then @adamludvik would you have the courage to read a bit my questions above ? I would be grateful !!! The question doesn't leave me

boydjohnson (Thu, 29 Jun 2017 20:12:34 GMT):
You can get batches from the wider network. The left side is blocks from the network, and the right side is batches for publishing.

MaximeLandon (Thu, 29 Jun 2017 20:13:38 GMT):
an to give me your mind @adamludvik actually that is what I want :)

kelly_ (Thu, 29 Jun 2017 20:38:45 GMT):
@MaximeLandon have you looked into 'sharding'

kelly_ (Thu, 29 Jun 2017 20:39:24 GMT):
sharding is one mechanism where not everyone validates every transaction, but just some %

MaximeLandon (Thu, 29 Jun 2017 20:39:45 GMT):
tell me more ! :D

kelly_ (Thu, 29 Jun 2017 20:39:50 GMT):
the other option is to leverage trusted hardware, so the the transaction is run in a trusted environement, and a "proof" is delievered to the rest of the network

MaximeLandon (Thu, 29 Jun 2017 20:39:54 GMT):
seems smart

kelly_ (Thu, 29 Jun 2017 20:40:12 GMT):
this is similar to zero-knowledge proofs, but focuses on trusted hardware instead of advanced cryptography

MaximeLandon (Thu, 29 Jun 2017 20:41:11 GMT):
yes but doesn't change the problem, just adds a new one which is the need for hardware (another dictatorship from chips firms)

MaximeLandon (Thu, 29 Jun 2017 20:41:22 GMT):
I'll look at sharding

kelly_ (Thu, 29 Jun 2017 20:41:31 GMT):
there are a number of trusted hardware solutions

AlexanderGordon (Thu, 29 Jun 2017 20:41:46 GMT):
why dictatorship?

kelly_ (Thu, 29 Jun 2017 20:41:51 GMT):
ARM TrustZone, IBM CryptoCards, Intel SGX, and even some software based solutions

AlexanderGordon (Thu, 29 Jun 2017 20:42:01 GMT):
exactly

MaximeLandon (Thu, 29 Jun 2017 20:42:27 GMT):
well I missed an occasion to shut the **** up

MaximeLandon (Thu, 29 Jun 2017 20:42:34 GMT):
;)

AlexanderGordon (Thu, 29 Jun 2017 20:43:09 GMT):
vigorous questioning is good :)

MaximeLandon (Thu, 29 Jun 2017 20:43:31 GMT):
ahahah yes best weapon

GhadiShayban (Thu, 29 Jun 2017 20:44:12 GMT):
https://chat.hyperledger.org/channel/sawtooth?msg=odTE2zneSDS3vkecF

GhadiShayban (Thu, 29 Jun 2017 20:44:57 GMT):
@kelly_ are there examples or prior art of this? I have seen several SGX papers lately, was wondering about the most promising lead for this ('proof of execution/computation')

GhadiShayban (Thu, 29 Jun 2017 20:46:49 GMT):
AFAICT the other alternative to running the same transaction processors everywhere is to install bytecode in the merkle state, then have one transaction processor call `eval()` on the bytecode

GhadiShayban (Thu, 29 Jun 2017 20:47:05 GMT):
One TP to Rule Them All

jsmitchell (Thu, 29 Jun 2017 20:47:25 GMT):
@GhadiShayban sawtooth is a platform

jsmitchell (Thu, 29 Jun 2017 20:47:47 GMT):
a smart contract vm is certainly possible in a transaction processor

jsmitchell (Thu, 29 Jun 2017 20:48:27 GMT):
for example - https://github.com/hyperledger/sawtooth-core/tree/master/families/burrow_evm/src/sawtooth_burrow_evm

kelly_ (Thu, 29 Jun 2017 20:48:41 GMT):
@GhadiShayban maybe check out 'proof-of-useful-work'

kelly_ (Thu, 29 Jun 2017 20:48:53 GMT):
it's a similar concept in some ways

kelly_ (Thu, 29 Jun 2017 20:49:13 GMT):
https://eprint.iacr.org/2017/203.pdf

GhadiShayban (Thu, 29 Jun 2017 20:49:49 GMT):
cool, thanks!

GhadiShayban (Thu, 29 Jun 2017 20:50:08 GMT):
the sawtooth evm stuff is pretty exciting =)

kelly_ (Thu, 29 Jun 2017 20:50:15 GMT):
wrong link!

kelly_ (Thu, 29 Jun 2017 20:50:17 GMT):
try this - https://eprint.iacr.org/2017/179.pdf

AlexanderGordon (Thu, 29 Jun 2017 20:50:34 GMT):
:)

AlexanderGordon (Thu, 29 Jun 2017 20:50:42 GMT):
kelly are you one of the developers?

kelly_ (Thu, 29 Jun 2017 20:54:55 GMT):
I participate in the project but don't write code for it

GhadiShayban (Thu, 29 Jun 2017 20:58:24 GMT):
been mulling `wasm` or jvm bytecode in a VM transaction processor. mainly because a) their bytecodes are designed to be verified b) rich ecosystem

GhadiShayban (Thu, 29 Jun 2017 20:58:37 GMT):
*designed to be _quickly_ verified

GhadiShayban (Thu, 29 Jun 2017 20:58:44 GMT):
in the case of wasm

kelly_ (Thu, 29 Jun 2017 20:59:04 GMT):
yea, have you checked out our java transaction processor?

kelly_ (Thu, 29 Jun 2017 20:59:16 GMT):
@amundson probably could give you some details on it

GhadiShayban (Thu, 29 Jun 2017 20:59:33 GMT):
I only started looking after 0.8... is that a 0.7 thing?

jsmitchell (Thu, 29 Jun 2017 21:00:14 GMT):
https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_jvm_sc

amundson (Thu, 29 Jun 2017 21:00:22 GMT):
@GhadiShayban there is a JVM-SC transaction family in sdk/examples/intkey_jvm_sc that is a quick proof-of-concept in executing on-chain JVM bytecode

amundson (Thu, 29 Jun 2017 21:00:28 GMT):
it could use a maintainer

GhadiShayban (Thu, 29 Jun 2017 21:00:43 GMT):
oh yeah -- i forgot about that one

amundson (Thu, 29 Jun 2017 21:00:46 GMT):
which is to say, it probably works ? :)

amundson (Thu, 29 Jun 2017 21:01:47 GMT):
there are a lot of areas of work there, like trying to execute within a restricted jvm environment

GhadiShayban (Thu, 29 Jun 2017 21:02:42 GMT):
like a security manager/

GhadiShayban (Thu, 29 Jun 2017 21:02:42 GMT):
like a security manager?

GhadiShayban (Thu, 29 Jun 2017 21:02:59 GMT):
or isolated classloaders?

amundson (Thu, 29 Jun 2017 21:03:07 GMT):
well, whatever it would take to convince you that you could safely run untrusted jvm bytecode :)

GhadiShayban (Thu, 29 Jun 2017 21:04:13 GMT):
you want more trust than doing `docker pull`?

GhadiShayban (Thu, 29 Jun 2017 21:04:15 GMT):
=)

GhadiShayban (Thu, 29 Jun 2017 21:04:39 GMT):
ostensibly there'd be some governance about what bytecode is allowed to run

GhadiShayban (Thu, 29 Jun 2017 21:05:46 GMT):
as in a bytecode payload (delivery format TBD) would be proposed for members, then approved, then executed...

GhadiShayban (Thu, 29 Jun 2017 21:09:25 GMT):
I work on the clojure compiler in my copious free time - we have `eval` at the clojure level then classloading at the jvm level. wasm or EVM is definitely more self contained (don't have to worry about transitive dependencies)

GhadiShayban (Thu, 29 Jun 2017 21:11:02 GMT):
any governance scheme to do eval() from sawtooth would need to represent, sign, and approve the full transitive dep set for a program. jvm bytecode doesn't exist in isolation

GhadiShayban (Thu, 29 Jun 2017 21:11:24 GMT):
...anyways I'm rambling. Sawtooth is fricking awesome

jsmitchell (Thu, 29 Jun 2017 21:11:42 GMT):
:sunglasses:

MaximeLandon (Thu, 29 Jun 2017 21:14:29 GMT):
@boydjohnson One last question and I stop bothering you with all my questions: Is the EVM put on a transaction processor somehow a solution against the issue we discussed ?

boydjohnson (Thu, 29 Jun 2017 21:15:07 GMT):
I don't think so.

MaximeLandon (Thu, 29 Jun 2017 21:15:14 GMT):
ok

adamludvik (Thu, 29 Jun 2017 21:34:58 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=pnD6govDHH4FdpcPY) @MaximeLandon I'm not ignoring you just sidetracked. I left myself a note to circle back and read through your questions.

AlexanderGordon (Thu, 29 Jun 2017 21:41:04 GMT):
:)

AlexanderGordon (Thu, 29 Jun 2017 21:41:12 GMT):
yes its raw tech

AlexanderGordon (Thu, 29 Jun 2017 21:41:15 GMT):
so a lot to do

MaximeLandon (Thu, 29 Jun 2017 21:42:10 GMT):
@adamludvik thanks a lot for this it's very kind !

MaximeLandon (Thu, 29 Jun 2017 21:45:54 GMT):
https://chat.hyperledger.org/channel/sawtooth?msg=JvvnL6v3XYNSG6FtA

MaximeLandon (Thu, 29 Jun 2017 21:46:10 GMT):
It starts here

MaximeLandon (Thu, 29 Jun 2017 21:46:44 GMT):
the conversation is mostly between me and @boydjohnson

jsmitchell (Thu, 29 Jun 2017 21:46:54 GMT):
In answer to your question - the only person you are cheating is yourself

jsmitchell (Thu, 29 Jun 2017 21:47:25 GMT):
you will not be able to convince other validators with non-modified logic that you are correct

jsmitchell (Thu, 29 Jun 2017 21:47:38 GMT):
and so you will be on a very sad fork of your own

MaximeLandon (Thu, 29 Jun 2017 21:48:58 GMT):
ahahah yes then the conversation told me that every validator should have a transaction processor attached to it in order to fully check blocks

MaximeLandon (Thu, 29 Jun 2017 21:52:44 GMT):
But then what is the advantage of having transaction processors when you can put the code on-chain ?

MaximeLandon (Thu, 29 Jun 2017 21:53:15 GMT):
I would say it saves a bit of space because you don't need to put all the code once again each time there is an upgrade

MaximeLandon (Thu, 29 Jun 2017 21:53:36 GMT):
Would you have other reasons ?

jsmitchell (Thu, 29 Jun 2017 21:54:06 GMT):
what if you want to change the capabilities of the VM which runs the on-chain code?

jsmitchell (Thu, 29 Jun 2017 21:54:30 GMT):
what if you want to run two different types of on-chain bytecode on the same instance of the blockchain?

jsmitchell (Thu, 29 Jun 2017 21:55:16 GMT):
these ideas are _also_ implemented as transaction processors in sawtooth

jsmitchell (Thu, 29 Jun 2017 21:56:13 GMT):
so if you want on-chain code execution only, write (or wait for) a transaction processor that implements a VM with characteristics you need

jsmitchell (Thu, 29 Jun 2017 21:56:42 GMT):
the difference with sawtooth is that that piece is replaceable

jsmitchell (Thu, 29 Jun 2017 21:57:00 GMT):
and with every other system I am aware of, that piece is tightly coupled into the core of the platform

MaximeLandon (Thu, 29 Jun 2017 21:59:21 GMT):
@jsmitchell these last six lignes are gold to me

MaximeLandon (Thu, 29 Jun 2017 21:59:37 GMT):
thanks very much

jsmitchell (Thu, 29 Jun 2017 21:59:58 GMT):
:thumbsup:

MaximeLandon (Thu, 29 Jun 2017 22:00:21 GMT):
You gave me the answer I was somehow searching for since a week, night and day

MaximeLandon (Thu, 29 Jun 2017 22:00:42 GMT):
devs in my firm are going to appreciate :)

gen_el (Fri, 30 Jun 2017 14:55:12 GMT):
Has joined the channel.

gen_el (Fri, 30 Jun 2017 14:55:20 GMT):
Hi! I just looked at Sawtooth. So i am wondering, what are the limitations of Sawtooth compared to Fabric?

jsmitchell (Fri, 30 Jun 2017 14:57:24 GMT):
@gen_el Fabric provides more out of the box 'ecosystem' pieces (e.g. x500 certificate support, side-chain 'channels'). Sawtooth is focused more on the core platform concepts.

jsmitchell (Fri, 30 Jun 2017 14:58:48 GMT):
We ship with a consensus that scales like Bitcoin's proof-of-work, for example

jsmitchell (Fri, 30 Jun 2017 14:59:24 GMT):
Whereas I believe current Fabric ordering services are based on a Kafka cluster (small number of nodes)

jsmitchell (Fri, 30 Jun 2017 15:03:57 GMT):
fabric deploys go chaincode in docker containers for transaction invocation. we provide a wire protocol and sdks for transaction processor development and currently support python, java, javascript, go, and c++ transaction processor SDKs

gen_el (Fri, 30 Jun 2017 15:04:44 GMT):
@jsmitchell Let say my selection criteria are "Faster Development Time", "Scalability", "Low maintenance cost" and "modularity". Which would score higher?

jsmitchell (Fri, 30 Jun 2017 15:04:59 GMT):
all this stuff is moving fast, so I may have old knowledge. You should check with the folks in #fabric on current state

jsmitchell (Fri, 30 Jun 2017 15:05:05 GMT):
Well, I am biased. :)

zac (Fri, 30 Jun 2017 15:06:33 GMT):
I think it's worth mentioning scalability and modularity in particular

Dan (Fri, 30 Jun 2017 15:06:34 GMT):
Sawtooth will score higher ;)

zac (Fri, 30 Jun 2017 15:06:41 GMT):
IN ALL THE THINGS

zac (Fri, 30 Jun 2017 15:07:22 GMT):
Not sure what Fabric's ecosystem is like these days. They may have tools that help you get up and running with something basic faster.

gen_el (Fri, 30 Jun 2017 15:07:23 GMT):
@jsmitchell Fabric currently provides sdk (in go, javascript, java, python) for channel creation, chain code deployment, executing a function (be it a query or update)

jsmitchell (Fri, 30 Jun 2017 15:07:50 GMT):
@gen_el oh, nice!

gen_el (Fri, 30 Jun 2017 15:08:01 GMT):
@Dan @zac Ok.

zac (Fri, 30 Jun 2017 15:08:15 GMT):
We just saw a presentation on #composer for example

zac (Fri, 30 Jun 2017 15:08:18 GMT):
Impressive stuff

gen_el (Fri, 30 Jun 2017 15:08:37 GMT):
Also, how soon will Sawtooth get to v1.0?

gen_el (Fri, 30 Jun 2017 15:09:05 GMT):
Generally, the lines seem blurred to me.

zac (Fri, 30 Jun 2017 15:09:32 GMT):
Lines between versions or projects?

gen_el (Fri, 30 Jun 2017 15:09:51 GMT):
@zac Between projects

Dan (Fri, 30 Jun 2017 15:10:02 GMT):
Sawtooth targets 1.0 by end of summer. Definition of what each project means by 1.0 is probably ... blurry. :)

zac (Fri, 30 Jun 2017 15:10:30 GMT):
They solve similar problems

gen_el (Fri, 30 Jun 2017 15:10:44 GMT):
Seems like Fabric is aiming for better developer ux

Dan (Fri, 30 Jun 2017 15:10:54 GMT):
Sawtooth focuses on important concepts like state agreement, scalability / distributed arch, and making smart contracts safe.

zac (Fri, 30 Jun 2017 15:11:24 GMT):
I would say Fabric may have a head start on developer ux

zac (Fri, 30 Jun 2017 15:11:31 GMT):
But it is a goal of both projects

Dan (Fri, 30 Jun 2017 15:12:16 GMT):
There is also the question of what that UX enables.

gen_el (Fri, 30 Jun 2017 15:12:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=cZJuxmvDBk4Lrqx4L) @Dan Ok. I'll probably take a dive just to quantify the difference.

gen_el (Fri, 30 Jun 2017 15:12:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=cZJuxmvDBk4Lrqx4L) @Dan Ok. I probably take a dive just to quantify the difference.

Dan (Fri, 30 Jun 2017 15:12:51 GMT):
For sawtooth, we believe that the outcome of your development efforts is that you have a properly distributed solution.

gen_el (Fri, 30 Jun 2017 15:13:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=tQ4smX4WfoF3rWxv4) @Dan True. Critical for me.

gen_el (Fri, 30 Jun 2017 15:13:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=tQ4smX4WfoF3rWxv4) @Dan True.

zac (Fri, 30 Jun 2017 15:13:54 GMT):
You might bug `@JonathanLevi` too. He has developed for both projects, and is not directly associated with either.

gen_el (Fri, 30 Jun 2017 15:14:47 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=B4dBYoZSa4Z3ZBtyu) @zac Thanks.

jsmitchell (Fri, 30 Jun 2017 15:14:47 GMT):
heh

Dan (Fri, 30 Jun 2017 15:14:58 GMT):
well Jonathan is a Fabric maintainer.

zac (Fri, 30 Jun 2017 15:15:06 GMT):
Oh is he?

zac (Fri, 30 Jun 2017 15:15:10 GMT):
I didn't know

Dan (Fri, 30 Jun 2017 15:15:12 GMT):
I think he is very objective, but it would be incorrect to say he isn't associated. :)

zac (Fri, 30 Jun 2017 15:15:16 GMT):
Nevermind, listen to us

gen_el (Fri, 30 Jun 2017 15:15:23 GMT):
lol

zac (Fri, 30 Jun 2017 15:16:19 GMT):
I do think that Sawtooth made a number of good design decisions up front that simplify development

zac (Fri, 30 Jun 2017 15:18:44 GMT):
Everything is really nicely modularized and you can focus just on the components that are important for your use case

gen_el (Fri, 30 Jun 2017 15:20:31 GMT):
ok

gen_el (Fri, 30 Jun 2017 15:24:06 GMT):
Thanks guys. @zac @Dan @jsmitchell Definitely looks like i need to take a look. The promise of better modularity, scalability and security of smart contracts is appealing.

zac (Fri, 30 Jun 2017 15:27:58 GMT):
python3

MaximeLandon (Fri, 30 Jun 2017 17:16:19 GMT):
https://guardtime.com/

MaximeLandon (Fri, 30 Jun 2017 17:16:55 GMT):
Has someone heard of this firm ? and knows about the Keyless Signature Infrastructure (KSI) ?

kellyo (Fri, 30 Jun 2017 17:33:00 GMT):
It's a centralized time stamping service as I understand

benoit.razet (Fri, 30 Jun 2017 18:03:52 GMT):
I am trying to test the xo commands following the documentation. I am getting the following error message:```root@22b969e98db4:/# xo create game1 Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))``` Has anyone seen that before?

boydjohnson (Fri, 30 Jun 2017 18:09:21 GMT):
If you are in docker, do `xo init --url http://rest_api:8080` before the xo create.

benoit.razet (Fri, 30 Jun 2017 18:13:00 GMT):
Here is what I get now: ```~/MySawTooth/sawtooth-core$ docker exec -it sawtooth-client-default bash root@9cf984387f93:/# xo init --url http://rest_api:8080` > ^C root@9cf984387f93:/# xo init --url http://rest_api:8080 set username: root set url: http://rest_api:8080 root@9cf984387f93:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben1.priv writing file: /root/.sawtooth/keys/ben1.addr root@9cf984387f93:/# xo init --username ben2 set username: ben2 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben2.priv writing file: /root/.sawtooth/keys/ben2.addr root@9cf984387f93:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 root@9cf984387f93:/# xo create game1 Error: HTTPConnectionPool(host='http', port=80): Max retries exceeded with url: //rest_api:8080/batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))```

benoit.razet (Fri, 30 Jun 2017 18:15:56 GMT):
In contrast, intkey seems to work well

boydjohnson (Fri, 30 Jun 2017 18:16:09 GMT):
with the --url parameter to intkey?

benoit.razet (Fri, 30 Jun 2017 18:16:30 GMT):
```root@9cf984387f93:/# intkey create_batch --count 10 Writing to batches.intkey... root@9cf984387f93:/# intkey load -f batches.intkey -U http://rest_api:8080 batches: 11 batch/sec: 94.10176792605223 root@9cf984387f93:/# sawtooth block list --url http://rest_api:8080 NUM BLOCK_ID BATS TXNS SIGNER 1 08e51be610c9e9b88f588bfe2c7000991f6861118c46011b2d0bf6f9289debd04e81cd338bba35a1f7e8888b4bcbc28fb851da2ae800e2ce2ec57a41f1591205 11 205 023911... 0 d5092fa895a67edb3293756cc28964cdcf29f61c71ef30cd4014fe582533882b7a9fd1015e0abece04b5118f6925b13bc040ee860d860f6c6c022de8f31b1f0c 1 1 023911...```

benoit.razet (Fri, 30 Jun 2017 18:17:20 GMT):
It looks like it is the same, right?

boydjohnson (Fri, 30 Jun 2017 18:18:48 GMT):
Just a second, I'm going to run through some xo locally.

boydjohnson (Fri, 30 Jun 2017 18:25:00 GMT):
Hmm, `plasmon:sawtooth-core bjohnson$ docker exec -it sawtooth-client-default bash root@e54e1c98f79e:/# xo init --url http://rest_api:8080 set username: root set url: http://rest_api:8080 root@e54e1c98f79e:/# ^C root@e54e1c98f79e:/# xo init --url http://rest_api:8080` > ^C root@e54e1c98f79e:/# xo init --url http://rest_api:8080 set username: root set url: http://rest_api:8080 root@e54e1c98f79e:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben1.priv writing file: /root/.sawtooth/keys/ben1.addr root@e54e1c98f79e:/# xo init --username ben2 set username: ben2 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben2.priv writing file: /root/.sawtooth/keys/ben2.addr root@e54e1c98f79e:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 root@e54e1c98f79e:/# xo create game1 Response: { "link": "http://rest_api:8080/batch_status?id=0862a4a19337847aeece3486a4c97d39672e87378516f177038b996298e2e134178be4dbd9c830c3707e2e0edf642be0685e5090158cd78085e5c68e340de946" } `

boydjohnson (Fri, 30 Jun 2017 18:25:00 GMT):
Hmm, ```plasmon:sawtooth-core bjohnson$ docker exec -it sawtooth-client-default bash root@e54e1c98f79e:/# xo init --url http://rest_api:8080 set username: root set url: http://rest_api:8080 root@e54e1c98f79e:/# ^C root@e54e1c98f79e:/# xo init --url http://rest_api:8080` > ^C root@e54e1c98f79e:/# xo init --url http://rest_api:8080 set username: root set url: http://rest_api:8080 root@e54e1c98f79e:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben1.priv writing file: /root/.sawtooth/keys/ben1.addr root@e54e1c98f79e:/# xo init --username ben2 set username: ben2 set url: http://rest_api:8080 writing file: /root/.sawtooth/keys/ben2.priv writing file: /root/.sawtooth/keys/ben2.addr root@e54e1c98f79e:/# xo init --username ben1 set username: ben1 set url: http://rest_api:8080 root@e54e1c98f79e:/# xo create game1 Response: { "link": "http://rest_api:8080/batch_status?id=0862a4a19337847aeece3486a4c97d39672e87378516f177038b996298e2e134178be4dbd9c830c3707e2e0edf642be0685e5090158cd78085e5c68e340de946" } ```

boydjohnson (Fri, 30 Jun 2017 18:25:49 GMT):
I'm not sure. It works for me.

benoit.razet (Fri, 30 Jun 2017 18:25:57 GMT):
Hummm

boydjohnson (Fri, 30 Jun 2017 18:56:30 GMT):
The error seems like a clue. host=http and port 80 for url //rest_api:8080/batches .... Somehow the address got mangled so the protocol was interpreted as the host.

zac (Fri, 30 Jun 2017 18:57:30 GMT):
need some quotes

zac (Fri, 30 Jun 2017 18:57:44 GMT):
`:` is a significant character in the command line

zac (Fri, 30 Jun 2017 18:58:20 GMT):
`--url "http://rest_api:8080"

zac (Fri, 30 Jun 2017 18:58:20 GMT):
`--url "http://rest_api:8080"`

zac (Fri, 30 Jun 2017 18:59:41 GMT):
Hrmm I'm thinking of `&` actually

zac (Fri, 30 Jun 2017 19:00:17 GMT):
Maybe the `:` is significant for some reason in your case @benoit.razet. I'd try it with quotes

benoit.razet (Fri, 30 Jun 2017 20:39:27 GMT):
I removed the http:// and it worked :)

benoit.razet (Fri, 30 Jun 2017 20:39:44 GMT):
```root@91af4498c16f:/# xo init --url "rest_api:8080" set username: ben1 set url: rest_api:8080 root@91af4498c16f:/# xo init --username ben1 set username: ben1 set url: rest_api:8080 root@91af4498c16f:/# xo init --username ben2 set username: ben2 set url: rest_api:8080 root@91af4498c16f:/# xo create game1 Response: { "link": "http://rest_api:8080/batch_status?id=a032903523501d33625763ae99afd1fd89f174bf30863350c3a25147b9057f21397a55557605cc274551a3fe0bf7d31749e5a359863a895e2360d4ae28ac2a6e" } ```

benoit.razet (Fri, 30 Jun 2017 20:40:24 GMT):
Thanks! @boydjohnson @zac

benoit.razet (Fri, 30 Jun 2017 21:01:24 GMT):
actually I am stuck on the next step. It looks like the block was not accepted: ```sawtooth-validator-default | [20:50:45.296 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1144 bytes sawtooth-validator-default | [20:50:45.300 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'de7fa6887df545f8' sawtooth-validator-default | [20:50:45.404 INFO executor] Exception creating context: Address or namespace 5b73490e15daa1bd461b5231a033bc75105036a98dda907d24786c84421ac3b5f519bd31a6fe39accf74b9c0de9a789e789206a07e6748c0260ed955bf5ac7690342a3 listed in inputs is not valid sawtooth-validator-default | [20:50:45.405 DEBUG publisher] Batch 9d3187814921c779184828a22d8d97dad5acae79a84de031501175475cf37ef94a8fcfd41a851df876025839e9cad1a80260ce96fa86b6b4af3a493b2d4ddd43 invalid, not added to block. sawtooth-validator-default | [20:50:45.406 DEBUG publisher] Abandoning block (1, S:, P:afabb585): no batches added```

benoit.razet (Fri, 30 Jun 2017 21:02:02 GMT):
on the client side: ```root@91af4498c16f:/# xo list GAME PLAYER 1 PLAYER 2 BOARD STATE```

boydjohnson (Fri, 30 Jun 2017 21:03:49 GMT):
When did you ```docker-compose up``` first with that yaml file? Do ```docker images```.

benoit.razet (Fri, 30 Jun 2017 21:13:34 GMT):
```docker images REPOSITORY TAG IMAGE ID CREATED SIZE sawtooth-dev-javascript latest 2c04beacf43e 3 days ago 407 MB sawtooth-tp_intkey_javascript latest 2c04beacf43e 3 days ago 407 MB sawtooth-tp_xo_javascript latest 2c04beacf43e 3 days ago 407 MB sawtooth-dev-java latest 7f3a81eb2772 3 days ago 620 MB sawtooth-tp_intkey_java latest 7f3a81eb2772 3 days ago 620 MB sawtooth-tp_xo_java latest 7f3a81eb2772 3 days ago 620 MB sawtooth-dev-go latest 7956bc652829 3 days ago 689 MB sawtooth-tp_burrow_evm latest 7956bc652829 3 days ago 689 MB sawtooth-tp_intkey_go latest 7956bc652829 3 days ago 689 MB sawtooth-tp_xo_go latest 7956bc652829 3 days ago 689 MB sawtooth-dev-cxx latest bf1d16984b59 3 days ago 589 MB sawtooth-tp_validator_registry latest 883adc405289 3 days ago 734 MB sawtooth-tp_xo_python latest 883adc405289 3 days ago 734 MB sawtooth-validator latest 883adc405289 3 days ago 734 MB sawtooth-dev-python latest 883adc405289 3 days ago 734 MB sawtooth-rest_api latest 883adc405289 3 days ago 734 MB sawtooth-tp_intkey_python latest 883adc405289 3 days ago 734 MB sawtooth-tp_settings latest 883adc405289 3 days ago 734 MB sawtooth-tp_supplychain_python latest 883adc405289 3 days ago 734 MB apache-basic_auth_proxy latest 9a177041459d 4 days ago 256 MB hyperledger/sawtooth-validator latest f5dbf2fa92b3 4 days ago 168 MB hyperledger/sawtooth-tp_xo_python latest 5e6fc1a5dffb 4 days ago 166 MB hyperledger/sawtooth-tp_intkey_python latest 68a8edcf823f 4 days ago 162 MB hyperledger/sawtooth-tp_settings latest 25f39b57e9c6 4 days ago 163 MB hyperledger/sawtooth-rest_api latest e416907f35ff 4 days ago 166 MB```

benoit.razet (Fri, 30 Jun 2017 21:14:44 GMT):
the intkey commands are working fine, creating blocks and validating blocks

boydjohnson (Fri, 30 Jun 2017 21:27:32 GMT):
So I would remove the 'hyperledger/*' images since we pushed two updates 4 days ago to the docker images: https://hub.docker.com/r/hyperledger/sawtooth-tp_xo_python/tags/

benoit.razet (Fri, 30 Jun 2017 21:30:39 GMT):
ok, will do

benoit.razet (Fri, 30 Jun 2017 21:37:56 GMT):
it is a separate question but would it be possible to use local images, built from the sdk. I am thinking, if I want to modify intkey or xo, or build my own application, is there a document describing the workflow to do that?

benoit.razet (Fri, 30 Jun 2017 21:41:56 GMT):
Everything works well with xo now! I can play the game and all that! Thank you very much!

boydjohnson (Fri, 30 Jun 2017 21:49:51 GMT):
Sweet! The non hyperledger/* images that you had in the ```docker images``` output are from the ./bin/build_all script. The default for python is that the current code in the sawtooth-core repo is mounted into the container when a container based on say the sawtooth-tp-intkey image is run. To run them make a docker-compose yaml file similar to the ones in sawtooth-core/integration/sawtooth_integration/docker/*.

boydjohnson (Fri, 30 Jun 2017 21:51:34 GMT):
I'm going to take off. It was good chatting with you, and I'm glad I got you going with xo.

benoit.razet (Fri, 30 Jun 2017 21:57:33 GMT):
Thanks for your help!

mjtodd (Mon, 03 Jul 2017 14:01:22 GMT):
Has joined the channel.

tkuhrt (Mon, 03 Jul 2017 22:12:57 GMT):
Following https://intelledger.github.io/core_developers_guide/environment_setup.html. On `/project/sawtooth-core/bin/build_all` step, I get the following error: ``` # cd .; git clone https://gopkg.in/fatih/set.v0 /go/src/gopkg.in/fatih/set.v0 Cloning into '/go/src/gopkg.in/fatih/set.v0'... fatal: unable to access 'https://gopkg.in/fatih/set.v0/': Failed to connect to gopkg.in port 443: Network is unreachable package gopkg.in/fatih/set.v0: exit status 128 ```

tkuhrt (Mon, 03 Jul 2017 22:13:49 GMT):
When I go to https://gopkg.in/fatih/set.v0/, this does not seem to be the github location. Instead, when I click on the "Github Source", I am directed to: https://github.com/fatih/set/tree/v0.1.1

tkuhrt (Mon, 03 Jul 2017 22:14:28 GMT):
It also looks like we could use: ``` go get gopkg.in/fatih/set.v0 ```

dashengSun (Tue, 04 Jul 2017 07:50:59 GMT):
Has joined the channel.

mattalhonte (Tue, 04 Jul 2017 08:00:51 GMT):
If I downgraded to a previous version of Sawtooth, would I be able to run one of those cool Demos?

boydjohnson (Wed, 05 Jul 2017 01:25:09 GMT):
@mattalhonte The 0.7 branch on github has both bond and marketplace. The fish supply chain one is not open source IIRC. https://github.com/hyperledger/sawtooth-core/tree/0-7/extensions

toddojala (Wed, 05 Jul 2017 15:11:32 GMT):
@adamludvik might have some input into @tkuhrt 's issue with that Go path... ?

adamludvik (Wed, 05 Jul 2017 15:13:13 GMT):
I am already trying to reproduce it. We are already using `go get` though, which uses git under the hood I believe.

adamludvik (Wed, 05 Jul 2017 15:15:52 GMT):
@tkuhrt Do you use a proxy for HTTPS? I followed the steps above and did not reproduce the issue.

tkuhrt (Wed, 05 Jul 2017 18:47:03 GMT):
@adamludvik : no proxy

tkuhrt (Wed, 05 Jul 2017 18:47:18 GMT):
I will try to run again and see if the same happens.

tkuhrt (Wed, 05 Jul 2017 19:00:15 GMT):
Looks like it must have been a temporary glitch. This time it worked.

mattalhonte (Thu, 06 Jul 2017 03:00:52 GMT):
Hello. Trying to run one of the Demos from 0.7. Does it need to be run in the Vagrant environment? I'm running this on an AWS server so I can't use Vagrant.

Vthot4 (Thu, 06 Jul 2017 08:20:55 GMT):
Has joined the channel.

FlyingTiger (Thu, 06 Jul 2017 11:51:44 GMT):
Is there a concrete javascript example using client functionality that Javascript sdk does provide?

cianx (Thu, 06 Jul 2017 12:41:43 GMT):
@pschwarz ^

pschwarz (Thu, 06 Jul 2017 14:28:14 GMT):
@FlyingTiger checkout the example work we did with the OMI summer lab project: https://github.com/IntelLedger/omi-summer-lab

benoit.razet (Thu, 06 Jul 2017 15:00:33 GMT):
I am testing the supplychain family and run into a problem when I run the following sequence of commands. The problem arises only at the last command entered. It looks like a protobuf type error related to ApplicationAcceptPayload.timestamp

benoit.razet (Thu, 06 Jul 2017 15:00:55 GMT):
```supplychain init --username alice --url "restapi:8080" supplychain agent create alice supplychain init --username bob --url "restapi:8080" supplychain agent create bob supplychain agent list supplychain record create pizza supplychain record create bread supplychain record list supplychain init --username alice --url "restapi:8080" supplychain application create bread --type CUSTODIAN supplychain application list supplychain init --username bob --url "restapi:8080" supplychain application accept bread --applicant alice --type CUSTODIAN ```

benoit.razet (Thu, 06 Jul 2017 15:01:32 GMT):
the error message is:

benoit.razet (Thu, 06 Jul 2017 15:01:55 GMT):
```root@59e9f7f1f76f:/project/sawtooth-core# supplychain application accept bread --applicant alice --type CUSTODIAN Traceback (most recent call last): File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 524, in init setattr(self, field_name, field_value) File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 660, in field_setter new_value = type_checker.CheckValue(new_value) File "/usr/lib/python3/dist-packages/google/protobuf/internal/type_checkers.py", line 133, in CheckValue raise TypeError(message) TypeError: 1499353109.1411014 has type , but expected one of: (,) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/project/sawtooth-core/families/supplychain/python/sawtooth_supplychain/cli/main.py", line 157, in main_wrapper main(program_name, args) File "/project/sawtooth-core/families/supplychain/python/sawtooth_supplychain/cli/main.py", line 142, in main do_application(args, config) File "/project/sawtooth-core/families/supplychain/python/sawtooth_supplychain/cli/application.py", line 109, in do_application do_application_accept(args, config) File "/project/sawtooth-core/families/supplychain/python/sawtooth_supplychain/cli/application.py", line 137, in do_application_accept response = client.application_accept(record, applicant, application_type) File "/project/sawtooth-core/families/supplychain/python/sawtooth_supplychain/client.py", line 200, in application_accept timestamp=timestamp or time.time()), File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 526, in init _ReraiseTypeErrorWithFieldName(message_descriptor.name, field_name) File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 446, in _ReraiseTypeErrorWithFieldName six.reraise(type(exc), exc, sys.exc_info()[2]) File "/usr/lib/python3/dist-packages/six.py", line 685, in reraise raise value.with_traceback(tb) File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 524, in init setattr(self, field_name, field_value) File "/usr/lib/python3/dist-packages/google/protobuf/internal/python_message.py", line 660, in field_setter new_value = type_checker.CheckValue(new_value) File "/usr/lib/python3/dist-packages/google/protobuf/internal/type_checkers.py", line 133, in CheckValue raise TypeError(message) TypeError: 1499353109.1411014 has type , but expected one of: (,) for field ApplicationAcceptPayload.timestamp```

benoit.razet (Thu, 06 Jul 2017 15:03:08 GMT):
Is there anyone who could help me figure out what is the problem with this sequence of commands?

boydjohnson (Thu, 06 Jul 2017 15:05:05 GMT):
@cianx ^

tkuhrt (Thu, 06 Jul 2017 18:58:25 GMT):
I am looking for an email list for the Sawtooth maintainers. Is there a list like that anywhere? The closest I found was https://github.com/hyperledger/sawtooth-core/blob/master/COMMITTERS, but this does not contain email addresses.

tkuhrt (Thu, 06 Jul 2017 18:59:00 GMT):
Also, I would like to contact just the maintainers and not use the mailing list at lists.hyperledger.org.

Dan (Thu, 06 Jul 2017 19:26:00 GMT):
Hi Tracy, no we don't have a maintainers email list.

Dan (Thu, 06 Jul 2017 19:43:40 GMT):
@tkuhrt I'll volunteer @TomBarnes :) If you send him an email he will do a good job replying back adding the rest of the maintainers.

tkuhrt (Thu, 06 Jul 2017 19:52:24 GMT):
Thanks, @Dan

TomBarnes (Thu, 06 Jul 2017 21:01:18 GMT):
Ha!

TomBarnes (Thu, 06 Jul 2017 21:01:32 GMT):
will send that list presently...

Dan (Thu, 06 Jul 2017 21:03:25 GMT):
thx

mattalhonte (Thu, 06 Jul 2017 22:09:33 GMT):
Got the Bond UI demo running from 0.7. Well, "running" in the sense that the Figwheel server is running and I can see it. It can't talk to the server, though, for reasons unknown. I thought I had it right - I ran the Validator, Ledger Sync, Server, and Client. And tried to load in data.

mattalhonte (Thu, 06 Jul 2017 22:13:12 GMT):
specifically it says ```Unable to Load Transaction History Failed to load the transaction history due to an unknown server error. Unable to fetch organizations An unknown error occurred while attempting to fetch organizations.```

kelly_ (Thu, 06 Jul 2017 22:18:54 GMT):
that's probably a question for @pschwarz . he may be done for the day though

benoit.razet (Thu, 06 Jul 2017 22:27:53 GMT):
@boydjohnson @cianx I found the problem, it was a missing type conversion of time.time() to int in `sawtooth-core/families/supplychain/python/sawtooth_supplychain/client.py` in the function `application_accept()` the line `timestamp=timestamp or time.time()` should be `timestamp=timestamp or int(time.time())` around line 200

jjason (Thu, 06 Jul 2017 22:56:41 GMT):
Anyone seen an issue when destroying vagrant VM and re-creating it causes vagrant VM without docker installed?????????

jjason (Fri, 07 Jul 2017 03:18:27 GMT):
I seem to have gotten past the problem. After destroying the VM, I needed to delete all of the go libraries. When `install_go_tools.sh` was run it complained about locally-changed files when trying to merge with git.

FlyingTiger (Fri, 07 Jul 2017 07:11:30 GMT):
@pschwarz Thanks. :)

gcarrerat (Fri, 07 Jul 2017 10:35:53 GMT):
Has joined the channel.

pschwarz (Fri, 07 Jul 2017 13:54:16 GMT):
@mattalhonte What is the environment that you are running all of your processes?

cianx (Fri, 07 Jul 2017 14:05:03 GMT):
@benoit.razet Good find, Are you planning to submit a patch?

benoit.razet (Fri, 07 Jul 2017 14:07:27 GMT):
if you think that's worth it, I'd be happy to do so

kelly_ (Fri, 07 Jul 2017 19:49:58 GMT):
@benoit.razet thanks for the PR

benoit.razet (Fri, 07 Jul 2017 19:56:11 GMT):
I am having a good time looking into the supplychain family. Thanks!

zac (Mon, 10 Jul 2017 15:06:35 GMT):
Those who are waiting on the Sawtooth Sprint Planning meeting that was supposed to start 6 minutes ago!

zac (Mon, 10 Jul 2017 15:06:55 GMT):
We are having some technical issues with Zoom, and are switching to Uberconference

zac (Mon, 10 Jul 2017 15:07:05 GMT):
A new link will be posted here shortly

mfford (Mon, 10 Jul 2017 15:10:32 GMT):
https://www.uberconference.com/hyperledger-community

mfford (Mon, 10 Jul 2017 15:10:52 GMT):
This is for the Sprint Planning Meeting

visualops (Tue, 11 Jul 2017 07:33:10 GMT):
Has joined the channel.

visualops (Tue, 11 Jul 2017 07:40:00 GMT):
This is just a "Hi community" from myself. I'm working on a startup to build some applications on top of the blockchain (operations) and I've jumped onto sawtooth and hyperledger as a way to start. The ubuntu build was a doddle, as was the full build on my platform, OS X using the docker stuff. I also got the validator, rest-api and the python intkey and settings TP's running natively on my mac if anybody is interested (I'm sure everything else will run too). Just a few extra commands to run to install various needed things and it runs beautifully. I had to make a 1 liner change to the source of the validator to stop it creating 3 1TB files :-), but I'll work out how to correctly detect the problem (no sparse files) and I'll contribute the change back. It's only early days for me but I'm excited at how quick it's been to get a look at this. Bravo.

visualops (Tue, 11 Jul 2017 07:40:46 GMT):
I literally started this morning and I have a blockchain on my mac :-)

toddojala (Tue, 11 Jul 2017 14:06:32 GMT):
@visualops That's really cool. And welcome.

Dan (Tue, 11 Jul 2017 14:31:19 GMT):
Welcome to the sawtooth community, @visualops !

Dan (Tue, 11 Jul 2017 15:39:05 GMT):
anyone have example code for deleting a record from state?

boydjohnson (Tue, 11 Jul 2017 15:55:20 GMT):
@Dan That is an issue that might not be able to be done right now. Both the wire protocol for deletion and the actual backend/context manager doesn't support it.

Dan (Tue, 11 Jul 2017 16:00:20 GMT):
Hrmmm. I was assuming I could do something like `set(addr, None)`

Dan (Tue, 11 Jul 2017 16:01:05 GMT):
?

boydjohnson (Tue, 11 Jul 2017 16:06:26 GMT):
So protobuf has no None or null. The sdks may not be handling this. I have tasks to update the sdks for this and to update the context manager.

boydjohnson (Tue, 11 Jul 2017 16:07:17 GMT):
Try set(addr, b'') as a None for right now. It is not good at all, but may work.

Dan (Tue, 11 Jul 2017 16:32:19 GMT):
Seems like the a transaction family could define a message that was like ```verb = 'delete'; addr='abc321...'``` and then a python transaction processor can interpret that as `set('abc321...', None)`. Or at least that's what I'm planning to do for now.

boydjohnson (Tue, 11 Jul 2017 16:36:46 GMT):
Yeah, the transaction family should be able to call something on the State object that is passed in that would delete from state.

pschwarz (Tue, 11 Jul 2017 17:11:52 GMT):
Let's make sure there's a story for a proper delete

boydjohnson (Tue, 11 Jul 2017 17:14:55 GMT):
STL-399 is for updating the sdks. I can't find the context manager story but will keep on looking.

boydjohnson (Tue, 11 Jul 2017 17:20:05 GMT):
Thinking about it there are two different issues. That a value is null needs to be handled. Right now it comes back as empty bytes. And then being able to delete, which would be new methods on the sdk state objects and also functionality from the context manager.

usanyal (Tue, 11 Jul 2017 18:52:51 GMT):
Has joined the channel.

usanyal (Tue, 11 Jul 2017 18:54:25 GMT):
What are the softwares required for development in blockchain? I'm confused.

pschwarz (Tue, 11 Jul 2017 19:03:38 GMT):
Do you mean from a starting standpoint?

GhadiShayban (Tue, 11 Jul 2017 19:09:49 GMT):
Has sawtooth been tested against something > Ubuntu 16.04?

Dan (Tue, 11 Jul 2017 19:17:09 GMT):
not that I'm aware of @GhadiShayban

GhadiShayban (Tue, 11 Jul 2017 19:28:24 GMT):
thanks dan

AgustinCroce (Tue, 11 Jul 2017 19:42:37 GMT):
Has joined the channel.

AgustinCroce (Tue, 11 Jul 2017 19:43:37 GMT):
Hi i have a doubt. What storage does sawtooth use to store the state?

GhadiShayban (Tue, 11 Jul 2017 19:45:31 GMT):
From what I've seen @AgustinCroce it's LMDB

pschwarz (Tue, 11 Jul 2017 19:47:00 GMT):
Yes, it's LMDB

GhadiShayban (Tue, 11 Jul 2017 19:47:06 GMT):
But the Merkle tree could be implemented on top of just about anything. It's a minimal API surface

pschwarz (Tue, 11 Jul 2017 19:47:18 GMT):
More less, yes

pschwarz (Tue, 11 Jul 2017 19:48:13 GMT):
There are several alternative implementations left over from the early experimentation phases before settling on LMDB. None of the others are selectable, however

pschwarz (Tue, 11 Jul 2017 19:48:46 GMT):
There's is a well-defined interface for a database implementation

GhadiShayban (Tue, 11 Jul 2017 19:48:56 GMT):
(Curious, what are the old impls?)

pschwarz (Tue, 11 Jul 2017 19:50:06 GMT):
A locking LMDB implementation, an in-memory version (still used a lot for testing), and Shelf

jsmitchell (Tue, 11 Jul 2017 19:50:10 GMT):
I think we did dict, shelve (persisted dict, basically), postgresql

pschwarz (Tue, 11 Jul 2017 19:50:16 GMT):
Nope, looks like the locking one is gone

AgustinCroce (Tue, 11 Jul 2017 19:53:54 GMT):
Thx a lot, i have another question. I read in the docs that i can use --config and pass a config file to the validator. I didn't find the specifications of that file in the docs

pschwarz (Tue, 11 Jul 2017 20:54:24 GMT):
@agunde :point_up:

agunde (Tue, 11 Jul 2017 21:37:27 GMT):
@AgustinCroce What section of the doc are you referring to? There is an example validator config file for 0.8 here https://github.com/hyperledger/sawtooth-core/blob/master/validator/packaging/validator.toml.example

agunde (Tue, 11 Jul 2017 21:37:56 GMT):
This file should be placed in the config dir defined in this file https://github.com/hyperledger/sawtooth-core/blob/master/validator/packaging/path.toml.example

huizar_mx (Wed, 12 Jul 2017 00:20:29 GMT):
Has joined the channel.

huizar_mx (Wed, 12 Jul 2017 00:34:06 GMT):
Hi Everyone! I have a question, Is there a limit on the amount of information that can be stored in a single address?

jsmitchell (Wed, 12 Jul 2017 01:02:13 GMT):
I'm not aware of any specific limit

jsmitchell (Wed, 12 Jul 2017 01:02:23 GMT):
How much were you thinking?

Audrius (Wed, 12 Jul 2017 08:00:21 GMT):
Has joined the channel.

randombishop (Wed, 12 Jul 2017 10:37:53 GMT):
Has joined the channel.

randombishop (Wed, 12 Jul 2017 10:42:34 GMT):
Hi, big thanks to the team for the doc of the project, it's so instructive for a newcomer like me and the instructions actually work straight away, bravo !

randombishop (Wed, 12 Jul 2017 10:49:14 GMT):
I have questions please regarding the POET : i'd like to understand it deeper than the doc description. How does the community of validators check that the attestation of execution comes from a trusted enclave ? How to set up such an enclave ? Does it come by default with Intel processors ? Is there a standard set of trusted Intel signatures like the ones that come with the internet browsers ? How do the different nodes organize the vote to select the leader based on their different enclaves ?

randombishop (Wed, 12 Jul 2017 11:03:47 GMT):
Is there such a vote process or do validators just pick the shortest PoET after a while ? What happens if two nodes end up selecting two different leaders for the same block because the attestations of execution did't reach them in time ?

adamludvik (Wed, 12 Jul 2017 13:22:17 GMT):
@randombishop We are in the process of publishing more information regarding PoET right now. I have a PR up right now that gives a very terse overview of PoET, and I also have more information about PoET and SGX in an internal doc I am hoping to publish soon. (PR link: https://github.com/hyperledger/sawtooth-core/pull/697)

adamludvik (Wed, 12 Jul 2017 13:26:16 GMT):

Message Attachments

zac (Wed, 12 Jul 2017 14:19:43 GMT):
@randombishop Some quick answers I happen to know off the top of my head: - The SGX component is a "trusted execution environment" (i.e. enclave), and comes with most (all?) newer Intel CPUs. - The nodes don't really vote. They all agree that the node with the shortest wait time is the block winner. - If two different leaders are selected in different parts of the network, you will have a fork in the chain. There are mechanisms to resolve forks, which I don't actually know the details of, but my assumption is the leader with the shorter wait time will eventually win out if everything is working properly.

randombishop (Wed, 12 Jul 2017 16:05:44 GMT):
Thanks @zac , very clear answers !

randombishop (Wed, 12 Jul 2017 16:11:12 GMT):
Thanks @adamludvik, sweet docs, was looking for that exactly !

GhadiShayban (Wed, 12 Jul 2017 16:51:33 GMT):
@adamludvik what's the relation with PoET & SGX2? afaict SGX2 is about dynamic memory mgmt inside the enclave, and it isn't out yet. (There's a reference to SGX2 in the pdf)

GhadiShayban (Wed, 12 Jul 2017 16:55:11 GMT):
PoET clearly doesn't need SGX2, just wondering whether there was significance to the reference

adamludvik (Wed, 12 Jul 2017 16:57:26 GMT):
The SGX section of that doc is a general primer on SGX and isn't all PoET specific. I was paraphrasing the section 1.1 Overview in this doc, which references SGX2: https://software.intel.com/sites/default/files/managed/48/88/329298-002.pdf

GhadiShayban (Wed, 12 Jul 2017 16:57:38 GMT):
cool

AntonOyung (Wed, 12 Jul 2017 17:37:37 GMT):
Has joined the channel.

GhadiShayban (Wed, 12 Jul 2017 17:39:42 GMT):
speaking of SGX -- does docker need special capabilities to launch the real SGX PoET?

jsmitchell (Wed, 12 Jul 2017 17:45:02 GMT):
apparently it doesn't require anythin special other than passing the device down to the container

jsmitchell (Wed, 12 Jul 2017 17:45:02 GMT):
apparently it doesn't require anything special other than passing the device down to the container

jsmitchell (Wed, 12 Jul 2017 17:45:12 GMT):
https://github.com/tozd/docker-sgx

jsmitchell (Wed, 12 Jul 2017 17:45:25 GMT):
@rbuysse any more clues? ^

jsmitchell (Wed, 12 Jul 2017 17:45:48 GMT):
i don't think we've tried that yet

rbuysse (Wed, 12 Jul 2017 17:46:00 GMT):
I haven't tested it yet

rbuysse (Wed, 12 Jul 2017 17:47:18 GMT):
I'll try and get to it this week

GhadiShayban (Wed, 12 Jul 2017 18:12:07 GMT):
rbuysse is that https://jira.hyperledger.org/browse/STL-594 ?

Dan (Wed, 12 Jul 2017 20:01:22 GMT):
I've never tried sgx with docker. so far we've only run poet on bare metal so to speak.

Dan (Wed, 12 Jul 2017 21:30:48 GMT):
@adamludvik in order to delete a field from state I intend to write `None` to a radix address. To get that through the unit test it looks like I'll need to make a new message factory method like this one "consensus.poet.families.tests.validator_reg_message_factory.ValidatorRegistryMessageFactory#create_set_request_validator_info" that supports `None`. Before I dig a layer deeper, can you explain how the merkle store is/isn't mocked? Is it actually using the merklix object?

Dan (Wed, 12 Jul 2017 21:36:44 GMT):
Hi @FlyingTiger. Is everything well? Are you getting the right attention on your PR's?

zac (Wed, 12 Jul 2017 21:44:32 GMT):
@FlyingTiger ^

AntonOyung (Wed, 12 Jul 2017 21:45:02 GMT):
Hey all, I'm an undergraduate fairly new to blockchain. I've read through the documentation and was wondering once the rest client sends a get request, where is the request received and processed/how does it eventually interact with the DB? Thanks!

zac (Wed, 12 Jul 2017 21:46:20 GMT):
``` Client --HTTP--> REST API --ZMQ--> Validator ```

zac (Wed, 12 Jul 2017 21:46:57 GMT):
The Validator stores a copy of blockchain state in LMDB

zac (Wed, 12 Jul 2017 21:47:54 GMT):
Some clients may use ZMQ directly

AntonOyung (Wed, 12 Jul 2017 21:52:35 GMT):
This may be more of a general blockchain question, but when you say the state is stored in LMDB, are just the transactions/batches stored or is there also some sort of table that stores the balance for each user?

boydjohnson (Wed, 12 Jul 2017 21:54:30 GMT):
@AntonOyung In sawtooth, state and the block store are separate. The state is checkpointed with a merkle root that is stored in the block header.

adamludvik (Wed, 12 Jul 2017 22:00:10 GMT):
@Dan The merkle store isn't really mocked. Roughly speaking, the testing library just let's you send and receive validator messages to and from the tp. There are some extra methods that let you make assertions about the message received by constructing and providing the message yourself. The message factory and the family specific message factories that use it are there to make creating messages easier.

AntonOyung (Wed, 12 Jul 2017 22:00:42 GMT):
So I see that in the block header we are able to verify the version of the state, but are we also able to actually derive the state? Thanks for your answers!

adamludvik (Wed, 12 Jul 2017 22:01:13 GMT):
If you are trying to delete entries from state, I think there are some state delete messages too..

boydjohnson (Wed, 12 Jul 2017 22:01:34 GMT):
Yeah, the state is stored in an LMDB database and can be accessed by merkle root.

AntonOyung (Wed, 12 Jul 2017 22:12:13 GMT):
So if I'm understanding this correctly, the validator receives the get request and then directly accesses the DB?

zac (Wed, 12 Jul 2017 22:14:28 GMT):
yes

zac (Wed, 12 Jul 2017 22:14:44 GMT):
though strictly speaking it won't be a GET request once it gets to the Validator

zac (Wed, 12 Jul 2017 22:14:51 GMT):
since that is an HTTP verb

zac (Wed, 12 Jul 2017 22:14:57 GMT):
But the idea is the same

AntonOyung (Wed, 12 Jul 2017 22:15:31 GMT):
does the tp_state_handler receive/process the request?

zac (Wed, 12 Jul 2017 22:17:09 GMT):
no

zac (Wed, 12 Jul 2017 22:17:26 GMT):
look at the client request handlers

zac (Wed, 12 Jul 2017 22:17:44 GMT):
they will take the request and direct it accordingly

zac (Wed, 12 Jul 2017 22:18:18 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/state/client_handlers.py

zac (Wed, 12 Jul 2017 22:19:19 GMT):
In the case of state, they will access the Merkle trie directly, in the case of block information, the Block Store

randombishop (Wed, 12 Jul 2017 22:21:54 GMT):
I want to implement a land property database based on a sawtooth ledger. Sawtooth, its docs, and the provided examples in sawtooth-arcade are really perfect material to build it, but I have an extra general question please : how would the nodes be remunerated for participating to the blockchain ? What is the best practice ? Does it always involve creating a cryptocurrency associated with this database ? Are there any source code examples that illustrate how to implement participant nodes remuneration ?

zac (Wed, 12 Jul 2017 22:22:10 GMT):
Those are instantiated here: https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/server/core.py#L127 And here: https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/server/core.py#L147

zac (Wed, 12 Jul 2017 22:25:48 GMT):
@randombishop That's not a question Sawtooth inherently answers. You could do a cryptocurrency if you needed to. The prevailing assumption is that a blockchain like that will be managed by interested parties. The agents, real estate websites, possibly regulatory agencies. They all have an interest in it running, and thanks to PoET the costs of doing so is comparable to a DB they would have to maintain anyway, so there is no need for remuneration.

randombishop (Wed, 12 Jul 2017 22:31:21 GMT):
Thanks you @zac for free consulting :)

randombishop (Wed, 12 Jul 2017 22:33:28 GMT):
Do you know any sawtooth cryptocurrency project with node remuneration on github ?

zac (Wed, 12 Jul 2017 22:33:55 GMT):
As far as I know, no one is working on that at the moment

AkarshaMahadeva (Wed, 12 Jul 2017 22:35:04 GMT):
Has joined the channel.

AntonOyung (Wed, 12 Jul 2017 23:46:20 GMT):
@zac @boydjohnson Thanks for answering my questions, I really appreciate it! It really helped my understanding of the subject!

FlyingTiger (Thu, 13 Jul 2017 11:04:41 GMT):
@Dan Hi, everything is fine. And I'm trying to use the Javascript SDK now.

FlyingTiger (Thu, 13 Jul 2017 12:00:07 GMT):
Hi, everyone. I looked into the javascript SDK, and found 'Building and Submitting Transactions' on the web http://intelledger.github.io/_autogen/sdk_submit_tutorial_js.html. I think 'const encoder = new TransactionEncoder(privateKey, { ... inputs: ['1cf12650d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c']' is not a good example, we need to show how to calculate the inputs. What's your point?

randombishop (Thu, 13 Jul 2017 12:48:52 GMT):
Also trying to complete the Javascript SDK now. How can I start the xo transaction processor please ? (Sorry if it's already in the docs but I could not find it)

zac (Thu, 13 Jul 2017 14:13:20 GMT):
@FlyingTiger The inputs are Transaction Family specific. IntKey does it differently than Xo, etc. So that document is not the place to explain it. Though it could probably do a better job of explaining that point.

zac (Thu, 13 Jul 2017 14:15:09 GMT):
@randombishop There are CLI commands to get it running in few languages. `xo-tp-python`, and `xo-tp-javascript` for example

zac (Thu, 13 Jul 2017 14:15:45 GMT):
Note that, if you are writing a JS client, you don't need to talk to a JS TP. You could run either.

zac (Thu, 13 Jul 2017 14:16:14 GMT):
I recommend the `-vv` flag if you want to see everything that's going on too:

zac (Thu, 13 Jul 2017 14:16:32 GMT):
``` xo-tp-python -vv ```

zac (Thu, 13 Jul 2017 14:16:32 GMT):
``` $ xo-tp-python -vv ```

zac (Thu, 13 Jul 2017 14:17:04 GMT):
Not sure if that works with the JS one or not...

pschwarz (Thu, 13 Jul 2017 14:17:30 GMT):
the `-vv` options are not yet available on the xo-tp-javascript command

pschwarz (Thu, 13 Jul 2017 14:18:32 GMT):
If you are using the example docker compose file, xo-tp-python is started along with the validator, rest api, settings transaction processor and the intkey transaction family (all of which are the python variants).

randombishop (Thu, 13 Jul 2017 14:45:48 GMT):
cool, thanks a lot

mfford (Thu, 13 Jul 2017 14:46:26 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, July 13th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Agenda: 1. Introductions-Mark Ford 2. Serial & Parallel Scheduler-Boyd Johnson 3. Open Forum Using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi

Dan (Thu, 13 Jul 2017 15:11:34 GMT):
Audio ok for everyone?

Dan (Thu, 13 Jul 2017 15:12:39 GMT):
@FlyingTiger can you send @mfford some times that would work for you to join forums like this?

svasilyev (Thu, 13 Jul 2017 15:20:02 GMT):
Has joined the channel.

AkarshaMahadeva (Thu, 13 Jul 2017 15:33:51 GMT):
Hello, I have a doubt regarding the number of tables stored in the database. Is Merkle tree constructed for every block? Or one Merkle tree for the entire block chain?

C0rWin (Thu, 13 Jul 2017 15:35:05 GMT):
Has left the channel.

toddojala (Thu, 13 Jul 2017 15:54:16 GMT):
@AkarshaMahadeva There is a new Merkle trie root for each new block, but the old root still exists...

toddojala (Thu, 13 Jul 2017 15:54:58 GMT):
@AkarshaMahadeva Please read the Architecture documentation, including http://intelledger.github.io/architecture/global_state.html

AkarshaMahadeva (Thu, 13 Jul 2017 15:55:16 GMT):
Thank u so much.

jsmitchell (Thu, 13 Jul 2017 18:12:47 GMT):
@FlyingTiger what's the status of https://github.com/hyperledger/sawtooth-core/pull/644

jsmitchell (Thu, 13 Jul 2017 18:32:21 GMT):
The recordings of this morning's tech forum on serial and parallel scheduling have been uploaded: https://drive.google.com/drive/folders/0B_NJV6eJXAA1VnFUakRzaG1raXc

danielhex (Thu, 13 Jul 2017 23:51:42 GMT):
Has joined the channel.

FlyingTiger (Fri, 14 Jul 2017 07:05:45 GMT):
@jsmitchell I finished all installed python commands, 'sawtooth, sawtooth-validator, sawtooth-rest-api, all the TPs.'

FlyingTiger (Fri, 14 Jul 2017 08:54:44 GMT):
@Dan 10:00 Am CDT is 11:00 PM Local Time, it's ok for me. I'll join forums next time.

FlyingTiger (Fri, 14 Jul 2017 09:40:46 GMT):
@zac Yes, but '1cf12650d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c' isn't the address of 'foo' named by the example. and is different from the below example.

FlyingTiger (Fri, 14 Jul 2017 09:44:16 GMT):
And when I used the example, I got an error "Invalid Transaction Tried to get unauthorized address".

FlyingTiger (Fri, 14 Jul 2017 09:46:14 GMT):
That example is user-unfriendly.

ssaddem (Fri, 14 Jul 2017 09:54:45 GMT):
Has joined the channel.

zac (Fri, 14 Jul 2017 14:50:22 GMT):
ah

zac (Fri, 14 Jul 2017 14:50:28 GMT):
that's a typo then

zac (Fri, 14 Jul 2017 14:50:39 GMT):
It _should_ be the address for 'foo'

zac (Fri, 14 Jul 2017 14:51:05 GMT):
Pretty sure it used to be

zac (Fri, 14 Jul 2017 14:53:12 GMT):
Ah, I see, it was changed for one example but not another

zac (Fri, 14 Jul 2017 14:54:12 GMT):
For these example it would make more sense if they were different . . .

zac (Fri, 14 Jul 2017 14:54:45 GMT):
@jsmitchell Does address wildcarding work for inputs/outputs at this point?

zac (Fri, 14 Jul 2017 14:55:59 GMT):
Can you set inputs to `['1cf126']` to access all of the IntKey namespace for example?

boydjohnson (Fri, 14 Jul 2017 14:59:41 GMT):
Wildcarding does work.

zac (Fri, 14 Jul 2017 15:01:43 GMT):
kewl

zac (Fri, 14 Jul 2017 15:02:30 GMT):
I'll use the wildcard for one example, full address for the other, and add a note about addressing generally with links to the relevant documents

zac (Fri, 14 Jul 2017 15:03:05 GMT):
@boydjohnson Is there an official warning about the downsides of wildcarding?

zac (Fri, 14 Jul 2017 15:03:22 GMT):
I get the sense it is generally not encouraged, even if it is possible.

boydjohnson (Fri, 14 Jul 2017 15:03:48 GMT):
It will reduce parallelism when using the parallel scheduler, but it should still be correct.

zac (Fri, 14 Jul 2017 16:25:38 GMT):
@FlyingTiger @boydjohnson https://github.com/hyperledger/sawtooth-core/pull/713

trojan295 (Fri, 14 Jul 2017 18:29:25 GMT):
Has joined the channel.

trojan295 (Fri, 14 Jul 2017 18:33:29 GMT):
hey, I have a question about the transaction processors. Let's say I have an app, which is storing in the global state some data. Now a client sends a transaction, that he wants to store something under an address, but he would like to make this address only editable by himself (eg. only by the client, that uses the same private key, that was used for the initial write)

trojan295 (Fri, 14 Jul 2017 18:35:09 GMT):
OK, I can write a processor, what does this check and denies not authorized transactions, but what's, if someone runs a malicious processor, which allows such to action?

trojan295 (Fri, 14 Jul 2017 18:36:28 GMT):
Will this be somehow checked by other processor (that follow the protocol) or would someone need to check the whole blockchain for the history?

pschwarz (Fri, 14 Jul 2017 18:37:16 GMT):
That malicious processor would result in a different state root hash in the block (if it were to claim the block). The remainder of the network would find the block to be invalid and drop them.

pschwarz (Fri, 14 Jul 2017 18:37:16 GMT):
That malicious processor would result in a different state root hash in the block (if it were to claim the block). The remainder of the network would find the block to be invalid and drop it.

pschwarz (Fri, 14 Jul 2017 18:38:11 GMT):
When a block is claimed by a validator, it is sent to the rest of the network, where it is validated by it's peers.

pschwarz (Fri, 14 Jul 2017 18:39:24 GMT):
You can manage the authorization by using the transaction signer's public key (which is part of the header), which you would probably want to story with the data you are initially writing at the address

pschwarz (Fri, 14 Jul 2017 18:39:24 GMT):
You can manage the authorization by using the transaction signer's public key (which is part of the header), which you would probably want to store with the data you are initially writing at the address

trojan295 (Fri, 14 Jul 2017 18:44:59 GMT):
so simply, if such malicious processor would process a block, then the other peer's would see, that it's wasn't processed the way it should and would drop the block?

napapu (Fri, 14 Jul 2017 18:45:53 GMT):
Has joined the channel.

napapu (Fri, 14 Jul 2017 18:51:58 GMT):
Hi all, I have a question about submitting transactions to the chain. I'm a Java developer and I'm essentially trying to replicate sawtooth-core/sdk/examples/xo_python/sawtooth_xo/xo_client.py in Java. However, on setting everything up and making a POST I get the error *signature_verifier] batch failed signature validation*. I'm assuming I'm going wrong somewhere around creating TransactionHeader and BatchHeader signatures. I was wondering if there are any examples of this being done so I can take a gander at? I'm currently using the org.bitcoinj libraries for key creation and signing. I'm not sure how to go from the libraries's ECDSASignature class to something that the validator will accept. Thanks in advance!

kelly_ (Fri, 14 Jul 2017 18:52:38 GMT):
@trojan295 yes that is correct

kelly_ (Fri, 14 Jul 2017 18:53:28 GMT):
@Dan is there information on how to construct the signature for the block header?

trojan295 (Fri, 14 Jul 2017 18:53:58 GMT):
@pschwarz @kelly_ thx!

kelly_ (Fri, 14 Jul 2017 18:57:48 GMT):
@napapu have you seen this - http://intelledger.github.io/architecture/transactions_and_batches.html

kelly_ (Fri, 14 Jul 2017 18:58:40 GMT):
and/or this: http://intelledger.github.io/_autogen/sdk_TP_tutorial_java.html

kelly_ (Fri, 14 Jul 2017 18:59:01 GMT):
I assume yes, I think the issue is that the signature encoding with bitcoinj may be different than the one that we use

Dan (Fri, 14 Jul 2017 18:59:17 GMT):
@kelly_ @napapu This might help: http://intelledger.github.io/_autogen/txn_submit_tutorial.html

napapu (Fri, 14 Jul 2017 18:59:47 GMT):
@kelly_ Yes I have. Yes, my question is more around the submission side not the TP side

Dan (Fri, 14 Jul 2017 18:59:54 GMT):
signatures are notoriously difficult to get right the first time. you have to be bit for bit exact with what is expected.

kelly_ (Fri, 14 Jul 2017 19:00:31 GMT):
@dan should we add a specification for the signature?

napapu (Fri, 14 Jul 2017 19:00:38 GMT):
@Dan I have as well. I have read the strict criteria on the signature but haven't been able to produce it. I'll dig around further

kelly_ (Fri, 14 Jul 2017 19:00:51 GMT):
e.g. how key_handler.ecdsa_sign differ from the sign function in bitcoinj?

kelly_ (Fri, 14 Jul 2017 19:01:09 GMT):
i know there are different encodings, so may be good to specify that

Dan (Fri, 14 Jul 2017 19:01:45 GMT):
I'll have to look at what bicoinj is likely to give you. Do you have a link?

napapu (Fri, 14 Jul 2017 19:01:51 GMT):
@Dan @kelly_ There is more on the signature on http://intelledger.github.io/0.8/core_developers_guide/signing_transactions.html but people might assume that they aren't core developers and wouldn't try to look

kelly_ (Fri, 14 Jul 2017 19:02:10 GMT):
https://github.com/bitcoinj/bitcoinj/blob/master/core/src/main/java/org/bitcoinj/crypto/TransactionSignature.java

kelly_ (Fri, 14 Jul 2017 19:03:04 GMT):
bitcoin uses DER encoding @Dan

Dan (Fri, 14 Jul 2017 19:03:22 GMT):
well won't that be fun

zac (Fri, 14 Jul 2017 19:03:33 GMT):
@trojan295 It's difficult because every language is going to have their own idiosyncrasies. I would read the document @Dan linekd to if you haven't already (http://intelledger.github.io/_autogen/txn_submit_tutorial.html). It goes through the process manually, and should cover most of the specifications.

kelly_ (Fri, 14 Jul 2017 19:03:41 GMT):
Bitcoin encoding is DER signature + sighash byte.

zac (Fri, 14 Jul 2017 19:04:02 GMT):
It is written around Python signatures, so you will have to do some translating.

zac (Fri, 14 Jul 2017 19:04:57 GMT):
Definitely let us know if there are any aspects of Java signing that the document misses. The goal is for that document to be as generic as possible, and to help people in exactly your situation regardless of what language they are using.

kelly_ (Fri, 14 Jul 2017 19:06:02 GMT):
@Dan I would think since we are using SECP256k1 that the signing woudl be the same in bitcoinj as they are both for bitcoin

kelly_ (Fri, 14 Jul 2017 19:06:18 GMT):
or are we using the library functions before the der encoding

Dan (Fri, 14 Jul 2017 19:07:14 GMT):
@napapu can you link me to the library you are using or link me to a code snippet you are using? We use 'compact encoding'. I'm not sure if what it says is DER is actually DER without looking at their code and I want to make sure I'm looking at the same code you are.

zac (Fri, 14 Jul 2017 19:07:21 GMT):
Did any write any actual Java clients?

zac (Fri, 14 Jul 2017 19:07:21 GMT):
Did anyone write any actual Java clients?

zac (Fri, 14 Jul 2017 19:07:39 GMT):
Or is all the example code Transaction Processors?

kelly_ (Fri, 14 Jul 2017 19:09:33 GMT):

Message Attachments

kelly_ (Fri, 14 Jul 2017 19:09:39 GMT):
@Dan ^ that is bitcoin's

napapu (Fri, 14 Jul 2017 19:12:16 GMT):
@Dan https://github.com/bitcoinj/bitcoinj/blob/master/core/src/main/java/org/bitcoinj/core/ECKey.java line 633. I'm using the *sign* method to takes the SHA256 hash of the header byteArray and returns the ECDSASignature object, then I'm using the hash512 method on the SDK Utils on the DER. That last step I think is certainly wrong but not sure what to do instead

zac (Fri, 14 Jul 2017 19:13:38 GMT):
can you get just the bytes for the ECDSASignature object?

Dan (Fri, 14 Jul 2017 19:13:47 GMT):
@kelly_ where does bitcoin use compact, since it was them that defined "compact" in the first place?

zac (Fri, 14 Jul 2017 19:14:04 GMT):
Off the top of my head, you just want to take those and format them in a hex string

zac (Fri, 14 Jul 2017 19:14:24 GMT):
Er yes, compact bytes

zac (Fri, 14 Jul 2017 19:14:24 GMT):
Er yes, raw bytes for the "compact" signature

zac (Fri, 14 Jul 2017 19:15:02 GMT):
But you definitely don't want to hash it again or anything

napapu (Fri, 14 Jul 2017 19:16:14 GMT):
@zac that class doesn't expose the raw bytes

kelly_ (Fri, 14 Jul 2017 19:17:29 GMT):
@Dan it looks like what @napapu is using returns the r and s values, do those just get concatenated for a 'compact' signature?

napapu (Fri, 14 Jul 2017 19:18:25 GMT):
@kelly_ that's what http://intelledger.github.io/core_developers_guide/signing_transactions.html says, so I can give that a try

kelly_ (Fri, 14 Jul 2017 19:19:23 GMT):
that seems right to be, but i'm neither a programmer nor a crypto expert :x

Dan (Fri, 14 Jul 2017 19:19:25 GMT):
be aware you might be given bigint objects rather than byte strings of those r, s values

Dan (Fri, 14 Jul 2017 19:19:33 GMT):
``` BigInteger[] components = signer.generateSignature(input.getBytes()); return new ECDSASignature(components[0], components[1]).toCanonicalised();```

kelly_ (Fri, 14 Jul 2017 19:19:48 GMT):
ah yes, @Dan it does say that in the bitcoin j library

kelly_ (Fri, 14 Jul 2017 19:22:12 GMT):
@Dan would line #87 here be better to use for java signing? - https://github.com/bitcoin-core/secp256k1/blob/master/src/java/org/bitcoin/NativeSecp256k1.java

Dan (Fri, 14 Jul 2017 19:23:24 GMT):
yeah that might be a better path @kelly_

kelly_ (Fri, 14 Jul 2017 19:23:43 GMT):
I don't think that is doing the encoding either, but could be wrong

zac (Fri, 14 Jul 2017 19:26:44 GMT):
I think you should be able to convert the _r_ and _s_ big ints to their hex byte representation and concatenate them

zac (Fri, 14 Jul 2017 19:27:04 GMT):
That is the impression I get from a quick googling anyway

Dan (Fri, 14 Jul 2017 19:27:31 GMT):
yes there are different biginteger methods to do that, but that could get messy.

zac (Fri, 14 Jul 2017 19:27:43 GMT):
If NativeSecp256k1.java can just spit out the compact sig bytes on its own, that would certainly be easier

Dan (Fri, 14 Jul 2017 19:28:56 GMT):
@napapu do you want to give that path a shot? use that bitcoin core library instead of bitcoinj. Your goal is to get a byte array for r and s values of the signature and no fancy encoding.

Dan (Fri, 14 Jul 2017 19:30:09 GMT):
In the sawtooth core we are using the same underlying library that bitcoin core is relying on so I'd wager the format of that byte array coming out of the bitcoin core java class is probably going to be the same format we are expecting.

napapu (Fri, 14 Jul 2017 19:30:28 GMT):
@Dan will do, thank you

zac (Fri, 14 Jul 2017 19:30:50 GMT):
Might be worth adding something about manually encoding r and s values to that txn submit document at some point

zac (Fri, 14 Jul 2017 19:31:11 GMT):
Not sure how often that will come up

kelly_ (Fri, 14 Jul 2017 19:31:14 GMT):
@zac agreed. maybe just a quick section on crypto expectations of validator

zac (Fri, 14 Jul 2017 19:31:41 GMT):
Both the Python and JS libraries I used returned the compact sig with built in methods

kelly_ (Fri, 14 Jul 2017 19:31:58 GMT):
does the javasdk have a java library in it for signing?

Dan (Fri, 14 Jul 2017 19:32:02 GMT):
disagree. we want to update the SDKs so people don't have to do this themselves.

zac (Fri, 14 Jul 2017 19:32:16 GMT):
well, that too

kelly_ (Fri, 14 Jul 2017 19:32:20 GMT):
@Dan well more for the 'developing without a sdk' section

zac (Fri, 14 Jul 2017 19:32:31 GMT):
I don't know if we will every have 100% coverage though

zac (Fri, 14 Jul 2017 19:32:31 GMT):
I don't know if we will ever have 100% coverage though

zac (Fri, 14 Jul 2017 19:33:23 GMT):
A lot of our current SDKs are missing a signing module, and even when those get added, there will always be languages people are using that we don't have an SDK for

Dan (Fri, 14 Jul 2017 19:34:27 GMT):
Ok, it shouldn't be a big deal to add an encoding link to that choose your own adventure doc.

zac (Fri, 14 Jul 2017 19:35:58 GMT):
@kelly_ I think that txn submit document should have every relevant cryptographic detail in it. Maybe there is another place to just list them out as a reference. But for me, cryptography is so foreign I wouldn't know what to do with the information if it was just listed out. I would need to follow a guide that showed me every implementation detail.

zac (Fri, 14 Jul 2017 19:35:58 GMT):
@kelly_ I think that txn submit document should have every relevant cryptographic detail in it. Maybe there is another place to just list them out as a reference too. But for me, cryptography is so foreign I wouldn't know what to do with the information if it was just listed out. I would need to follow a guide that showed me every implementation detail.

Dan (Fri, 14 Jul 2017 19:38:12 GMT):
Maybe the advice from today is on par though, that you need to use bitcoin's secp library. We can link to the compact signature definition in so far as that is formally specified. If you use a different library or that library doesn't support your language of choice then you are in unsupported territory.

kelly_ (Fri, 14 Jul 2017 19:38:52 GMT):
@Dan secp256k1 libraries aren't available for a lot of languages though

kelly_ (Fri, 14 Jul 2017 19:39:13 GMT):
at the same time, I think many libraries include the encodings

kelly_ (Fri, 14 Jul 2017 19:39:31 GMT):
for example, i think openSSL (which was before secp256k1) did the encoding

kelly_ (Fri, 14 Jul 2017 19:39:45 GMT):
i'm not sure about other popular crypto libraries like bouncy castle

Dan (Fri, 14 Jul 2017 19:39:54 GMT):
but you'll see where in bitcoin it complains about the openssl encoding as breaking with DER

Dan (Fri, 14 Jul 2017 19:40:24 GMT):
we can't support everything. where we've indicated we have support like Java we need a clean and easy to use mechanism.

Dan (Fri, 14 Jul 2017 19:40:41 GMT):
where people want to hack in uncharted territory, that's cool, but its not something that we would support.

kelly_ (Fri, 14 Jul 2017 19:41:24 GMT):
sure, in advance of us including them in the sdk, we could also just say 'these libraries should give you the write format' and link to the ones that we know of

kelly_ (Fri, 14 Jul 2017 19:41:30 GMT):
right now that is just secp256k1

Dan (Fri, 14 Jul 2017 19:41:32 GMT):
We might also want to get make a clear division of TP SDK vs. Client SDK

Dan (Fri, 14 Jul 2017 19:42:18 GMT):
for the TP side, it's really easy because you aren't dealing with any of this signing. the difficulty comes in on the client side.

amundson (Fri, 14 Jul 2017 19:42:41 GMT):
@Dan no need to package them separately (that I've thought of yet), but the package hierarchy within the sdk should be clear

Dan (Fri, 14 Jul 2017 19:42:58 GMT):
you mean client vs. tp?

amundson (Fri, 14 Jul 2017 19:43:18 GMT):
yes, and maybe other things that aren't specifically in one of those two

Dan (Fri, 14 Jul 2017 19:44:24 GMT):
I can see wanting to write a client for an existing TP in a different language. For example, there's a bond family running on the network written in python. my company joins the network and its our preference to write our trading front end with java.

amundson (Fri, 14 Jul 2017 19:45:03 GMT):
yeah, so you pull in sawtooth-sdk.jar (or whatever it is called)

amundson (Fri, 14 Jul 2017 19:45:15 GMT):
doesn't force you to start a TP

Dan (Fri, 14 Jul 2017 19:45:20 GMT):
sure.

amundson (Fri, 14 Jul 2017 19:46:13 GMT):
(I could argue the counter point that maybe they should be separate packages, but the complexity probably isn't worth it.)

Dan (Fri, 14 Jul 2017 19:46:19 GMT):
if we felt there wasn't a big overlap in backend vs front end languages then we might want a different mix.

amundson (Fri, 14 Jul 2017 19:46:45 GMT):
yeah, JS might be a specific exception where you don't want to pull TP code into the browser

kelly_ (Fri, 14 Jul 2017 19:47:08 GMT):
looks like bouncy castle returns r and s and big integers too

kelly_ (Fri, 14 Jul 2017 19:47:35 GMT):
as bigints*

Dan (Fri, 14 Jul 2017 19:48:02 GMT):
right. the bitcoinj library looked like it was using spongycastle which appears to be an offshoot of bouncycastle.

kelly_ (Fri, 14 Jul 2017 19:48:28 GMT):
lol

kelly_ (Fri, 14 Jul 2017 19:48:53 GMT):
here from stack overflow '''The expected ECDSA signature format that the BC (and other provider) implementations work with is a DER-encoded ASN.1 sequence containing two integer values r and s. This signature format has been specified in ANSI X9.62. This is the format in the first set of data you give (note that signature is a total of 70 bytes).'''

zac (Fri, 14 Jul 2017 19:49:51 GMT):

Message Attachments

Dan (Fri, 14 Jul 2017 19:50:14 GMT):
nice

Dan (Fri, 14 Jul 2017 19:50:32 GMT):
@kelly_ if you are bored you should figure out where bitcoin uses the compact format.

zac (Fri, 14 Jul 2017 19:50:39 GMT):
I think that should be added to our docs

zac (Fri, 14 Jul 2017 19:50:45 GMT):
I will submit a PR

kelly_ (Fri, 14 Jul 2017 19:51:16 GMT):
@Dan are you sure that it does?

zac (Fri, 14 Jul 2017 19:51:27 GMT):
Also, as far as packaging TP vs client, I think there is some shared code

Dan (Fri, 14 Jul 2017 19:51:46 GMT):
no. but they bothered to put it in the secp library so I figured there was a good chance someone had a use for it.

zac (Fri, 14 Jul 2017 19:51:49 GMT):
It's not an entirely clean division

kelly_ (Fri, 14 Jul 2017 19:52:50 GMT):
Everything in the Bitcoin protocol, including transaction signatures and alert signatures, uses DER encoding. This results in 71 bytes signatures (on average), as there are several header bytes, and the R and S valued are variable length. For message signatures, a custom encoding is used which is more compact (and more recent) and supports public key recovery (given a message and a signature, find which public key would have created it). The code you're referring to in the question is for creating such signatures.

kelly_ (Fri, 14 Jul 2017 19:54:30 GMT):
message signatures are probably not used very often, the bitcoin client (bitcoin qt) allows you to sign and verify messages

kelly_ (Fri, 14 Jul 2017 19:54:41 GMT):
a pgp type of thing

Dan (Fri, 14 Jul 2017 20:01:27 GMT):
interesting. thanks.

GhadiShayban (Fri, 14 Jul 2017 20:19:07 GMT):
I spent an afternoon trying to make compact signatures with bitcoinj, and then validating them with python sawtooth_signing -- total fail

GhadiShayban (Fri, 14 Jul 2017 20:19:56 GMT):
A specification would certainly help... code would be even better

GhadiShayban (Fri, 14 Jul 2017 20:22:49 GMT):
personally i'd rather not have to do it through JNI with libsecp256k1

GhadiShayban (Fri, 14 Jul 2017 20:25:34 GMT):
https://jira.hyperledger.org/browse/STL-461

kelly_ (Fri, 14 Jul 2017 21:09:31 GMT):
@GhadiShayban maybe this - https://github.com/web3j/web3j/blob/master/src/main/java/org/web3j/crypto/Sign.java

kelly_ (Fri, 14 Jul 2017 21:09:32 GMT):
line 38

kelly_ (Fri, 14 Jul 2017 21:09:57 GMT):
'''

kelly_ (Fri, 14 Jul 2017 21:10:02 GMT):
''' // 1 header + 32 bytes for R + 32 bytes for S byte v = (byte) headerByte; byte[] r = Numeric.toBytesPadded(sig.r, 32); byte[] s = Numeric.toBytesPadded(sig.s, 32); '''

kelly_ (Fri, 14 Jul 2017 21:10:36 GMT):
@Dan is that the same as libsecp256k1? or does it not even do the 1 byte for the header

Dan (Fri, 14 Jul 2017 21:12:24 GMT):
you would have to trim off that v byte

kelly_ (Fri, 14 Jul 2017 21:13:04 GMT):
@Dan the other option would be to just adopt the asn.1 der encoding

kelly_ (Fri, 14 Jul 2017 21:13:12 GMT):
if that is what openssl, bouncy castle, etc do

kelly_ (Fri, 14 Jul 2017 21:13:20 GMT):
but then you can't do pub key recovery, is that right?

Dan (Fri, 14 Jul 2017 21:14:00 GMT):
I think those are separate issues

Dan (Fri, 14 Jul 2017 21:14:52 GMT):
we could adopt der, but that would be a significant change because it would break everyone else's stuff that was relying on compact sigs

kelly_ (Fri, 14 Jul 2017 21:15:35 GMT):
right

Dan (Fri, 14 Jul 2017 21:15:43 GMT):
And I'd have to look again, but there were complaints about openssl's handling of der as out of spec, so that might not be quite as broad as one would think.

kelly_ (Fri, 14 Jul 2017 21:21:28 GMT):
the other option is this - https://stackoverflow.com/questions/34063694/fixed-length-64-bytes-ec-p-256-signature-with-jce

kelly_ (Fri, 14 Jul 2017 21:21:44 GMT):
which would be providing advice on how to take a der encoded signature and parse it to create a compact sig

napapu (Fri, 14 Jul 2017 21:45:25 GMT):
@kelly_ following that last example, I seem to have got it working with bitcoinj and ECDSASignature class, trim the R and S to fit into the 64 byte array and then Hex.encode the resulting array

kelly_ (Fri, 14 Jul 2017 22:45:46 GMT):
@napapu that's awesome!

jiun-siang (Sat, 15 Jul 2017 18:37:03 GMT):
Has joined the channel.

Dan (Sun, 16 Jul 2017 23:55:42 GMT):
awesome!

cre8bidio (Mon, 17 Jul 2017 00:45:15 GMT):
Has joined the channel.

FlyingTiger (Mon, 17 Jul 2017 01:32:59 GMT):
@zac :thumbsup: https://github.com/hyperledger/sawtooth-core/pull/713

AlexGvozden (Mon, 17 Jul 2017 06:44:19 GMT):
Has joined the channel.

usanyal (Mon, 17 Jul 2017 17:23:11 GMT):
hi

usanyal (Mon, 17 Jul 2017 17:23:50 GMT):
Can someone help?

usanyal (Mon, 17 Jul 2017 17:27:54 GMT):
$ sudo apt-get install -y sawtooth -- I'm getting an error: Unable to locate package

jsmitchell (Mon, 17 Jul 2017 17:28:36 GMT):
@rbuysse @adamludvik ^

rbuysse (Mon, 17 Jul 2017 17:30:27 GMT):
Have you already added the repository?

rbuysse (Mon, 17 Jul 2017 17:32:26 GMT):
try rerunning these to make sure they succeeded.

rbuysse (Mon, 17 Jul 2017 17:32:34 GMT):
```

rbuysse (Mon, 17 Jul 2017 17:32:38 GMT):
```$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8AA7AF1F1091A5FD $ sudo add-apt-repository 'deb http://repo.sawtooth.me/ubuntu/0.8/stable xenial universe' $ sudo apt-get update```

usanyal (Mon, 17 Jul 2017 17:35:47 GMT):
yes

usanyal (Mon, 17 Jul 2017 17:41:55 GMT):
Is the package present in this repository?

Dan (Mon, 17 Jul 2017 17:46:29 GMT):
sometimes I've had proxy issues where I cannot reach the key server and I do not notice that error.

usanyal (Mon, 17 Jul 2017 17:47:50 GMT):
There maybe a proxy issue. Could you tell me how to overcome?

usanyal (Mon, 17 Jul 2017 17:50:52 GMT):
i could fetch key server,

usanyal (Mon, 17 Jul 2017 17:51:26 GMT):
but do I cannot use $ sudo apt-get update

usanyal (Mon, 17 Jul 2017 17:51:48 GMT):
there are error: -5 host name cannot be resolved

Dan (Mon, 17 Jul 2017 17:53:22 GMT):
This is what it looks like on my system... ```ubuntu@ubuntu-xenial:/project/sawtooth-core$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8AA7AF1F1091A5FD Executing: /tmp/tmp.6QFq8kQbbR/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8AA7AF1F1091A5FD gpg: requesting key 1091A5FD from hkp server keyserver.ubuntu.com gpg: key 1091A5FD: "Hyperledger Sawtooth Signing Key " not changed gpg: Total number processed: 1 gpg: unchanged: 1 ubuntu@ubuntu-xenial:/project/sawtooth-core$ sudo add-apt-repository 'deb http://repo.sawtooth.me/ubuntu/0.8/stable xenial universe' ubuntu@ubuntu-xenial:/project/sawtooth-core$ sudo apt-get update Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB] Hit:3 http://repo.sawtooth.me/ubuntu/ci xenial InRelease Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB] Hit:5 https://deb.nodesource.com/node_6.x xenial InRelease Hit:6 https://apt.dockerproject.org/repo ubuntu-xenial InRelease Get:7 http://repo.sawtooth.me/ubuntu/0.8/stable xenial InRelease [3,272 B] Get:8 http://repo.sawtooth.me/ubuntu/0.8/stable xenial/universe amd64 Packages [27.2 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main Sources [259 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [163 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [578 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [504 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial-updates/universe Translation-en [196 kB] Fetched 2,038 kB in 5s (360 kB/s) Reading package lists... Done ubuntu@ubuntu-xenial:/project/sawtooth-core$ ```

Dan (Mon, 17 Jul 2017 17:54:11 GMT):
If you are getting a host name error that could be a couple issues including proxy.

Dan (Mon, 17 Jul 2017 17:54:30 GMT):
I think we have some proxy hints in our docs... let me look ...

Dan (Mon, 17 Jul 2017 17:56:24 GMT):
There's a couple places, but let me get you pointed to the right ones.

Dan (Mon, 17 Jul 2017 17:56:46 GMT):
Are you following the app developers guide or core developers guide? or what is it you are trying to follow?

usanyal (Mon, 17 Jul 2017 18:07:55 GMT):
app developers guide

usanyal (Mon, 17 Jul 2017 18:09:09 GMT):
sudo apt-get update is not working properly

usanyal (Mon, 17 Jul 2017 18:09:38 GMT):
my network is failing

usanyal (Mon, 17 Jul 2017 18:09:43 GMT):
I think that is the issue

Dan (Mon, 17 Jul 2017 18:09:48 GMT):
ok, we might be missing some help on proxy in that doc, but what you probably want to do is set environment variables for `http_proxy` and `https_proxy`

Dan (Mon, 17 Jul 2017 18:10:40 GMT):
I'm assuming you are using the ubuntu section of the app dev guide? http://intelledger.github.io/app_developers_guide/ubuntu.html

Dan (Mon, 17 Jul 2017 18:11:57 GMT):
if so you'll want to set the variables something like this: `export http_proxy=http://your.proxy.server:123`

Dan (Mon, 17 Jul 2017 18:12:10 GMT):
and replace 123 with the actual proxy port.

usanyal (Mon, 17 Jul 2017 18:12:47 GMT):
yes

usanyal (Mon, 17 Jul 2017 18:12:49 GMT):
I have tried this though

Dan (Mon, 17 Jul 2017 18:19:24 GMT):
can you reach other sites? Like what does this do? `curl https://www.yahoo.com/ | head`

usanyal (Mon, 17 Jul 2017 18:20:26 GMT):
I'll have to check it tomm

usanyal (Mon, 17 Jul 2017 18:20:39 GMT):
i am using it in my office desktop

e-johnson (Tue, 18 Jul 2017 01:24:32 GMT):
Has joined the channel.

haridhakshini (Tue, 18 Jul 2017 14:37:51 GMT):
Hi! I was going through the intkey_python transaction processor code. I don't seem to understand the usage of CBOR in it. It would be great if someone can throw some light on this. Thanks!

Dan (Tue, 18 Jul 2017 14:48:11 GMT):
@toddojala ^

toddojala (Tue, 18 Jul 2017 14:51:51 GMT):
@haridhakshini Hello there... Let's see if I can help you. FYI I have a computer hardware issue, so may be delayed in responding at times.

toddojala (Tue, 18 Jul 2017 14:52:19 GMT):
@haridhakshini Basically, the encoding used for the stored data in the ledger is arbitrary, and can be anything.

toddojala (Tue, 18 Jul 2017 14:53:33 GMT):
@haridhakshini CBOR is one way of serializing data, and is based on JSON. Other transaction families, such as XO, use different formats to serialize & store the data.

toddojala (Tue, 18 Jul 2017 14:54:25 GMT):
@haridhakshini The important thing is that the way the data is stored should be deterministic - that is, the same intkey key-value pairs are always stored the exact same way. Does that help?

toddojala (Tue, 18 Jul 2017 15:00:24 GMT):
@haridhakshini A different example is XO (tic-tac-toe), which simply uses a CSV utf-8 encoded string to store the data in state: https://github.com/ojalatodd/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/processor/handler.py

haridhakshini (Tue, 18 Jul 2017 15:03:50 GMT):
@toddojala Ohh yea! Got that. I will look into the use of CSV in the xo processor as well. Thanks a lot! :)

toddojala (Tue, 18 Jul 2017 15:04:33 GMT):
@haridhakshini You are welcome. Keep the questions coming. If I can't answer them, someone else surely can.

haridhakshini (Tue, 18 Jul 2017 15:05:18 GMT):
Sure! Thank you!

AntonOyung (Tue, 18 Jul 2017 18:33:05 GMT):
If I'd like to import a python package to use where do I need to update the dependencies to ensure it's imported properly? I'm looking at install_packaging_deps but it doesn't seem to be working.

kelly_ (Tue, 18 Jul 2017 18:34:10 GMT):
@rbuysse

kelly_ (Tue, 18 Jul 2017 18:34:24 GMT):
may know

pschwarz (Tue, 18 Jul 2017 19:07:55 GMT):
@AntonOyung What are you trying to do? There are possibly a lot of answers to that question, so it might help narrow it down

kelly_ (Tue, 18 Jul 2017 22:23:22 GMT):
@AkarshaMahadeva hey!

haridhakshini (Wed, 19 Jul 2017 08:28:58 GMT):
Can someone explain the role of populate.py and generate.py from the client_cli in the intkey processor? Why is this needed when create_batch.py exists? Thank You!

haridhakshini (Wed, 19 Jul 2017 12:40:30 GMT):
^Just saw that a similar question was posted before. Got it. Please ignore. Thanks!

Dan (Wed, 19 Jul 2017 14:49:51 GMT):
After speaking with @haridhakshini I'm looking at the thread with jjason on June 26th. It looks like there's some overlap between create_batch, populate, and generate. And maybe @toddojala is the man with the answers :) ? if create_batch supplants populate and generate can those be removed? More generally what is our example for introducing a new user to make a very simple client / transaction submission? I gather most of our docs talk about the transaction processor, the server-side part of transaction families.

toddojala (Wed, 19 Jul 2017 14:51:44 GMT):
create_batch was meant to simplify things and combine the "populate" and "generate" functions, as I recall. Unless particular use cases require doing populate and generate separately, I would suggest that they can be removed.

toddojala (Wed, 19 Jul 2017 14:54:46 GMT):
@Dan In this doc/section we show how to create Intkey transactions and submit them with "intkey load," and we go into more a more complete description of the whole process in the "Intro to the XO Transaction Family. "

toddojala (Wed, 19 Jul 2017 14:54:46 GMT):
@Dan In this doc/section we show how to create Intkey transactions and submit them with "intkey load": http://intelledger.github.io/app_developers_guide/docker.html#using-the-cli-commands

toddojala (Wed, 19 Jul 2017 14:54:46 GMT):
@Dan In this doc/section we show how to create Intkey transactions and submit them with "intkey loadz and we go into more a more complete description of the whole process in the "Intro to the XO Transaction Family. "

toddojala (Wed, 19 Jul 2017 14:54:46 GMT):
@Dan In this doc/section we show how to create Intkey transactions and submit them with "intkey load": http://intelledger.github.io/app_developers_guide/docker.html#using-the-cli-commands and we go into more a more complete description of the whole process in the "Intro to the XO Transaction Family. "

Dan (Wed, 19 Jul 2017 14:58:58 GMT):
"This doc"? Were you sending a link?

toddojala (Wed, 19 Jul 2017 14:59:16 GMT):
I tried. Let's try that again.

toddojala (Wed, 19 Jul 2017 15:00:56 GMT):
and we go into more a more complete description of the whole process in the "Intro to the XO Transaction Family. "

tim-d-blue (Wed, 19 Jul 2017 15:03:26 GMT):
Has joined the channel.

Dan (Wed, 19 Jul 2017 15:27:21 GMT):
@haridhakshini you'll see in create_batch.py the protobufs we talked about. They are like envelopes. There's one for the batch. And the batch wraps a protobuf for the transaction(s). Within the transaction there is a payload. In this case the payload is serialized using cbor, but the concept is similar to using protobuf. Both the client and the server processes have the same way to interpret the data sent over the wire.

haridhakshini (Wed, 19 Jul 2017 16:18:39 GMT):
@Dan ^That makes it clear. Thank you! :)

GhadiShayban (Wed, 19 Jul 2017 16:55:10 GMT):
``` (ns sawtooth-signing (:import org.bitcoinj.core.ECKey org.bitcoinj.core.DumpedPrivateKey org.bitcoinj.core.Sha256Hash org.bitcoinj.core.Utils org.bitcoinj.params.MainNetParams)) (def ^{:doc "generates an in-memory priv key representation from the .wif"} wif->key (let [MAINNET (MainNetParams/get)] (fn [^String s] (-> (DumpedPrivateKey/fromBase58 MAINNET s) (.getKey))))) ;; https://bitcoin.stackexchange.com/a/19539 (defn priv->pub "Returns the compressed format public key (65 bytes) from the uncompressed hex (130 bytes)" [^ECKey private-key] (let [uncompressed (.getPublicKeyAsHex private-key)] (str "03" (subs uncompressed 2 66)))) (defn sign "sign a byte array and return a hex representation of the bitcoin 'compact signature'" [^ECKey pk ^bytes data] (let [h (Sha256Hash/of data) sig (.sign pk h) arr (byte-array 64)] (System/arraycopy (Utils/bigIntegerToBytes (.-r sig) 32) 0 arr 0 32) (System/arraycopy (Utils/bigIntegerToBytes (.-s sig) 32) 0 arr 32 32) (.encode Utils/HEX arr))) ```

GhadiShayban (Wed, 19 Jul 2017 16:55:29 GMT):
example clojure code to sign transactions ^. I'll transliterate to straight up Java and make a PR =)

jsmitchell (Wed, 19 Jul 2017 16:55:39 GMT):
heh, thanks!

zac (Wed, 19 Jul 2017 17:15:07 GMT):
@GhadiShayban Nice.

AkarshaMahadeva (Wed, 19 Jul 2017 18:25:34 GMT):
Hello, If I need to commit a transaction to genesis block once the block chain has further blocks ahead of it is it possible? For instance I need to maintain an hierarchical db. Where in a few transactions come into existence later in time. Is it still possible to do so?

GhadiShayban (Wed, 19 Jul 2017 18:48:06 GMT):
@Dan https://github.com/hyperledger/sawtooth-core/pull/720 prelim

toddojala (Wed, 19 Jul 2017 18:51:44 GMT):
@AkarshaMahadeva Once a block has been committed to the block chain, it won't be possible to "update" it. However, you could store and update objects/data in state, which would be reflected in the blockchain in later blocks.

AkarshaMahadeva (Wed, 19 Jul 2017 18:52:38 GMT):
Thank you

AkarshaMahadeva (Wed, 19 Jul 2017 18:59:17 GMT):
If we consider a use case where in one transaction is dependent on other but happens in other time period wide apart. What would be the best way to maintain relation between them. Such that using the most recent transaction , a very old transaction can be tracked.

usanyal (Wed, 19 Jul 2017 19:06:47 GMT):
What is the difference between a block and batch?

jsmitchell (Wed, 19 Jul 2017 19:07:59 GMT):
@AkarshaMahadeva what do you mean by 'tracked'?

jsmitchell (Wed, 19 Jul 2017 19:08:35 GMT):
@usanyal blocks contain an ordered list of batches. batches contain an ordered list of transactions.

usanyal (Wed, 19 Jul 2017 19:09:27 GMT):
Ok, thank you

jsmitchell (Wed, 19 Jul 2017 19:10:46 GMT):
all the transactions in a batch must succeed in order, otherwise the batch is considered invalid. If the batch is invalid none of the transactions are applied. If the batch is invalid during block publishing, then the batch will not be included in the block. If the batch is invalid during block validation, then the whole block will be considered invalid.

usanyal (Wed, 19 Jul 2017 19:12:01 GMT):
ok, i understand

usanyal (Wed, 19 Jul 2017 19:12:26 GMT):
How is this implemented in Java? Is there a simpler code than the tic-tac-toe?

jsmitchell (Wed, 19 Jul 2017 19:21:58 GMT):
the tic-tac-toe transaction processor code is only determining whether a given transaction is valid and then changes the global state. The concerns of block publishing and block validation are in the core validator code (Python).

jsmitchell (Wed, 19 Jul 2017 19:22:20 GMT):
If you want to see a simpler transaction family than tic-tac-toe, take a look at intkey

usanyal (Wed, 19 Jul 2017 19:30:09 GMT):
There is no code which does the entire work? creation of transaction and validation and then updation for Java?

usanyal (Wed, 19 Jul 2017 19:30:29 GMT):
*updation of global state

zac (Wed, 19 Jul 2017 19:39:16 GMT):
@usanyal What is your use case? The concerns have been separated here. Validating of blocks, batches, and transactions is generalized and all happens in the core code. Validating of the _payload_ in an individual transaction, and applying the necessary state changes, is handled by transaction processors like _IntKey_ and the tic-tac-toe family.

zac (Wed, 19 Jul 2017 19:49:37 GMT):
So for a specific blockchain, you should not have to modify the core code at all. You will only need to write code that handles transaction payloads.

zac (Wed, 19 Jul 2017 19:49:37 GMT):
So for a specific blockchain application, you should not have to modify the core code at all. You will only need to write code that handles transaction payloads.

usanyal (Wed, 19 Jul 2017 19:50:10 GMT):
Such as the intKey one?

zac (Wed, 19 Jul 2017 19:51:59 GMT):
Yes. The IntKey "Transaction Family" is made up primarily of a _Transaction Processor_ which does the actual work of reading payloads and modifying state.

zac (Wed, 19 Jul 2017 19:52:50 GMT):
You could also say the family includes some concepts like namespacing state, or the CLI clients that know how to build an IntKey payload properly.

zac (Wed, 19 Jul 2017 19:53:32 GMT):
But the Transaction Processor is the major thing you will need to build for a specific application.

usanyal (Wed, 19 Jul 2017 19:54:58 GMT):
Transaction processor for IntKey is not provided in the documentation?

zac (Wed, 19 Jul 2017 19:59:08 GMT):
Well, the processor the processor is a piece of example code. It is not included in the documentation in its entirety, but is [publicly available](https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_java).

zac (Wed, 19 Jul 2017 19:59:08 GMT):
Well, the processor is a piece of example code. It is not included in the documentation in its entirety, but is [publicly available](https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_java).

usanyal (Wed, 19 Jul 2017 20:00:17 GMT):
ok, thank you

zac (Wed, 19 Jul 2017 20:00:25 GMT):
But you might be more interested in either the [IntKey Transaction Family Specification](http://intelledger.github.io/transaction_family_specifications/integerkey_transaction_family.html) or the [Java Transaction Processor Tutorial](http://intelledger.github.io/_autogen/sdk_TP_tutorial_java.html)

usanyal (Wed, 19 Jul 2017 20:01:51 GMT):
Ok, I will go through these

GhadiShayban (Thu, 20 Jul 2017 20:37:29 GMT):
Currently the Java SDK does not contain any tests, nor test framework. I'd like to add some as part of a PR. Does anyone have strong opinions on what testing framework or just KISS with JUnit?

jordan.k.miles (Thu, 20 Jul 2017 20:41:35 GMT):
Has joined the channel.

jordan.k.miles (Thu, 20 Jul 2017 20:42:23 GMT):
hi guys. I'm looking at several different hyperledger projects. I've been looking at fabric for a while and now sawtooth. is it fair to say that sawtooth "Transaction Handlers" are similar to smart contracts?

zac (Thu, 20 Jul 2017 20:47:41 GMT):
The term "smart contract" gets thrown around a lot

zac (Thu, 20 Jul 2017 20:47:51 GMT):
I'm not sure there is a really clearly definition

zac (Thu, 20 Jul 2017 20:48:25 GMT):
A Transaction Handler would be what executed the logic of your smart contracts

zac (Thu, 20 Jul 2017 20:49:10 GMT):
It is not itself one contract

zac (Thu, 20 Jul 2017 20:49:23 GMT):
More like an application that can run contracts

pschwarz (Thu, 20 Jul 2017 21:05:09 GMT):
@GhadiShayban It is tested tangentially, via integration tests that are written in python, but you are correct that there are no unit tests per se. I'd be happy with JUnit, personally (though a more recent version, or course)

jordan.k.miles (Thu, 20 Jul 2017 21:23:04 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=hYQMpLHxpQF5SNziZ) @zac I get how sawtooth is an application that can run contracts. but is the transaction handler itself designed to operate like chaincode? it looks to me like it is.

zac (Thu, 20 Jul 2017 21:24:01 GMT):
You can think of the Transaction Handler as an application

zac (Thu, 20 Jul 2017 21:24:10 GMT):
Though obviously it can't be run outside of Sawtooth

zac (Thu, 20 Jul 2017 21:24:56 GMT):
But it will take in each Transaction payload submitted

zac (Thu, 20 Jul 2017 21:25:12 GMT):
And then can run whatever logic on that payload you need, including modifying the blockchain state

zac (Thu, 20 Jul 2017 21:26:08 GMT):
So say you want a "smart contract" that stipulates people should be able to send each other money, but only if they have that money in their account

jordan.k.miles (Thu, 20 Jul 2017 21:26:11 GMT):
ahh ok. so the handler takes everything and the logic determines what/if it should do anything.

zac (Thu, 20 Jul 2017 21:27:04 GMT):
youwould send a payload that looks something like: ``` { action: send from: Bob to: Jane amount: 1000 } ```

zac (Thu, 20 Jul 2017 21:27:28 GMT):
(this is arbitrary pseudocode, you could define it however you like)

zac (Thu, 20 Jul 2017 21:28:32 GMT):
The handler would look at that code, see that it is a "send" action, check that Bob has 1000 funds, and if so, remove 1000 from Bob's account, and add 1000 to Jane's

zac (Thu, 20 Jul 2017 21:28:32 GMT):
The handler would look at that payload, see that it is a "send" action, check that Bob has 1000 funds, and if so, remove 1000 from Bob's account, and add 1000 to Jane's

jordan.k.miles (Thu, 20 Jul 2017 21:29:08 GMT):
Ok. I think I'm with you now.

jordan.k.miles (Thu, 20 Jul 2017 21:29:35 GMT):
but you can partition these handlers by namespace, correct?

zac (Thu, 20 Jul 2017 21:29:43 GMT):
Yes

zac (Thu, 20 Jul 2017 21:31:25 GMT):
You could also define more robust Transaction payloads that include code to be executed. The Handler would then be the interpreter for that payload code. This is closer to what people are usually talking about when they refer to "smart contracts"

zac (Thu, 20 Jul 2017 21:31:59 GMT):
The Sawtooth Burrow does this using EVM synbtax

zac (Thu, 20 Jul 2017 21:31:59 GMT):
Sawtooth Burrow does this using EVM syntax

zac (Thu, 20 Jul 2017 21:32:44 GMT):
For a lot of use cases though, it would be faster and more secure to let the logic be fixed and live in the Transaction Processor

jordan.k.miles (Thu, 20 Jul 2017 21:33:16 GMT):
cool. I started out looking at fabric and chaincode, so it can be confusing trying to figure out what, exactly, people are referring to.

jordan.k.miles (Thu, 20 Jul 2017 21:33:22 GMT):
a lot of abstract terms.

zac (Thu, 20 Jul 2017 21:33:29 GMT):
yes

zac (Thu, 20 Jul 2017 21:33:53 GMT):
chaincode is not exactly analogous to anything in Sawtooth, but does perform some of the same functions as Transaction Processors

zac (Thu, 20 Jul 2017 21:34:58 GMT):
The Sawtooth documentation isn't quite complete yet, I don't think there is just an overview for Transaction Processors

zac (Thu, 20 Jul 2017 21:35:19 GMT):
But there is a tutorial for writing one, which should cover a lot of the concepts

zac (Thu, 20 Jul 2017 21:35:35 GMT):
http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html

jordan.k.miles (Thu, 20 Jul 2017 21:35:40 GMT):
yeah, I'm just playing around with it right now. I noticed the SDK isn't in maven central yet.

jordan.k.miles (Thu, 20 Jul 2017 21:35:56 GMT):
yep, went through the Java tutorial.

zac (Thu, 20 Jul 2017 21:36:03 GMT):
ah, cool

jordan.k.miles (Thu, 20 Jul 2017 21:36:43 GMT):
but yeah. thanks for the info. I'm going to keep playing around with it.

zac (Thu, 20 Jul 2017 21:37:30 GMT):
no problem

Dan (Fri, 21 Jul 2017 13:01:31 GMT):
@jordan.k.miles you might glean something from this post: https://www.hyperledger.org/blog/2017/06/22/whats-a-transaction-family

Dan (Fri, 21 Jul 2017 13:02:35 GMT):
as far as terms Transaction Family is the concept of related transaction types that get deployed together. The embodiment in server-side code is Transaction Processors. The handler is the heart of the Transaction Processor that will interpret the guts of the transaction.

AkarshaMahadeva (Fri, 21 Jul 2017 15:54:56 GMT):
Hello, Whenever a new user is created in the xo game using xo init --username x, an address and a link is generated. What does this address indicate and what does the link point to

zac (Fri, 21 Jul 2017 16:26:18 GMT):
Good you post some example output?

boydjohnson (Fri, 21 Jul 2017 16:36:48 GMT):
The url generated points to the rest api. So in docker it needs to be set to rest_api:8080 or if your rest api container is named rest_api.

jaredcorduan (Fri, 21 Jul 2017 19:33:46 GMT):
can you currently use the settings transaction family to control allowable versions of the other transaction families, or is that an upcoming feature? if so, what is the key name for the proposal?

boydjohnson (Fri, 21 Jul 2017 19:38:35 GMT):
`sawtooth.validator.transaction_families` I'll get you some docs on that.

jaredcorduan (Fri, 21 Jul 2017 19:39:29 GMT):
thank you!

jaredcorduan (Fri, 21 Jul 2017 19:41:10 GMT):
ah yea, I see it in `sawtooth_validator/execution/executor.py`, I'm gtg, thanks again

boydjohnson (Fri, 21 Jul 2017 19:41:25 GMT):
http://intelledger.github.io/app_developers_guide/docker.html?highlight=sawtooth%20validator%20transaction_families#settings-transaction-family-usage Here is an example.

ponle (Sat, 22 Jul 2017 03:12:32 GMT):
Has joined the channel.

ponle (Sat, 22 Jul 2017 03:12:44 GMT):
Please can anyone explain the difference between Hyperledger Fabric and Hyper ledger Sawtooth. And for a beginner which of the two options will be better for starting out with simple blockchain

jordan.k.miles (Sat, 22 Jul 2017 15:58:44 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Qhbzy6hajKqDHatTL) @Dan Thanks! I'll check it out.

byscuellar (Mon, 24 Jul 2017 04:02:24 GMT):
Has joined the channel.

zac (Mon, 24 Jul 2017 13:34:05 GMT):
@ponle I haven't used Fabric a ton, but most of the differences I know of are somewhat technical. At the broad level, they both seek to solve the same problem: creating a general purpose, scalable, enterprise blockchain, which is highly modular and secure.

zac (Mon, 24 Jul 2017 13:34:05 GMT):
@ponle I haven't used Fabric a ton. Most of the differences I know of are somewhat specific implementation details. At the broad level, they both seek to solve the same problem: creating a general purpose, scalable, enterprise blockchain, which is highly modular and secure.

zac (Mon, 24 Jul 2017 13:36:16 GMT):
In my opinion, Sawtooth does a better job at solving this problem. It is less opinionated than Fabric, so you have more freedom to implement whatever you need your blockchain app to do. It also isolates logic better, which should be both more secure and more performant.

zac (Mon, 24 Jul 2017 13:39:04 GMT):
I also think a lot of those modular design choices have also had the consequence of making development easier. The concerns are better separated, so you mostly only have to worry about the mechanics of your use case.

zac (Mon, 24 Jul 2017 13:39:17 GMT):
BUT, I would talk to the #fabric folks too. See what they have to say.

zac (Mon, 24 Jul 2017 13:39:31 GMT):
I am a _little_ biased.

Dan (Mon, 24 Jul 2017 13:42:00 GMT):
@ponle Sawtooth provides global state agreement. I do not believe that is supported by Fabric. http://intelledger.github.io/architecture/global_state.html

jordan.k.miles (Mon, 24 Jul 2017 23:05:04 GMT):
does the SDK provide a way to create a 64-bit signature for EC? I'm having trouble finding a way to do it. Using java BouncyCastle with the ECDSA algorithm and secp256k1 curve.

jordan.k.miles (Mon, 24 Jul 2017 23:05:46 GMT):
I'm seeing in the docs the `key_handler.ecdsa_serialize_compact(batch_signature)` but bouncycastle doesn't have anything like that that I've seen.

Dan (Mon, 24 Jul 2017 23:10:17 GMT):
hey @jordan.k.miles, @GhadiShayban just put up a PR to add java signing support

Dan (Mon, 24 Jul 2017 23:10:57 GMT):
And @jsmitchell just merged it.. https://github.com/hyperledger/sawtooth-core/pull/720

Dan (Mon, 24 Jul 2017 23:11:44 GMT):
if you are working with the published builds you won't see this immediately. If you are building everything from source though, it should be in a core pull.

jordan.k.miles (Mon, 24 Jul 2017 23:18:35 GMT):
cool! I'll pull it and try it out. thanks!

randombishop (Tue, 25 Jul 2017 10:25:54 GMT):
Hi, a general question please because I couldn't google it : if I use simple python dicts as payloads in my transaction processor, with cbor encoding, will cbor.dumps() always generate the same bytes consistently accross different python versions/platforms/etc. ? Is that somehow guaranteed by cbor format ? And if not, what is the way to achieve this condition ? Tks !

Dan (Tue, 25 Jul 2017 13:44:09 GMT):
@amundson ^

amundson (Tue, 25 Jul 2017 14:16:45 GMT):
@randombishop we have stayed away from cbor in payloads for the most part because of the differences in language bindings (languages can add tags, and thus produce serialized bytes that are not the same). We instead use protobuf more often; in protobuf, you can't use the map type as it is unordered, so we instead use a list of key, value pairs. There is an example of that here - https://github.com/hyperledger/sawtooth-core/blob/master/protos/setting.proto . If you want to stick with cbor, the 0.7 branch has some code for serializing that might be helpful to look at. See https://github.com/hyperledger/sawtooth-core/blob/0-7/validator/gossip/common.py, "dict2cbor". The sort_keys=True options will cause the dict() to be ordered prior to serialization

amundson (Tue, 25 Jul 2017 14:19:00 GMT):
Not sure if the unicode/ascii stuff is interesting (seems bad to me). I think that was a workaround for a cross-language compatibility issue at the time.

randombishop (Tue, 25 Jul 2017 14:25:38 GMT):
Thanks a lot @amundson

pschwarz (Tue, 25 Jul 2017 14:46:59 GMT):
There were also some issues with floats, particularly if coming from JavaScript

pschwarz (Tue, 25 Jul 2017 14:47:15 GMT):
Though, avoid those too :)

GhadiShayban (Tue, 25 Jul 2017 15:00:17 GMT):
@amundson @randombishop I've been modifying the python cbor2 library to support what CBOR calls "canonical mode" -- byte-for-byte equivalence. having extensible tags is a huge advantage of CBOR and similar formats

GhadiShayban (Tue, 25 Jul 2017 15:00:54 GMT):
I agree that all the existing cbor language bindings suck in some one respect or another.

GhadiShayban (Tue, 25 Jul 2017 15:03:40 GMT):
If you have a fixed domain model or somewhat of a closed system, protobufs are a decent option (heeding the map ordering caveat above). neither Cap'n, FlatBuffers, nor thrift, nor protobufs natively have the equivalence property that sawtooth demands

GhadiShayban (Tue, 25 Jul 2017 15:05:07 GMT):
if you're using a language like go for transaction processors, you'll run into this problem really fast: hash maps in go have the hash function seeded _per hashmap instance_

GhadiShayban (Tue, 25 Jul 2017 15:05:07 GMT):
if you're using a language like go for transaction processors, you'll run into this problem really fast: hash maps in go have the hash function seeded differently _per hashmap instance_

amundson (Tue, 25 Jul 2017 15:21:31 GMT):
@GhadiShayban cool. the primary reason that the validator treats that data as opaque, instead of marshalling it as it did in 0.7, is so you can pick what works best for you. (we are liking protobuf, but no reason to force it on anyone). of course, the trade-off is you can shoot yourself in the foot if you don't use something deterministic.

AkarshaMahadeva (Tue, 25 Jul 2017 19:30:38 GMT):
Whenver a transaction is committed in XO there is an address generated. What does that signify? Can the address be used to refer to the history of transactions committed by that person

zac (Tue, 25 Jul 2017 19:32:20 GMT):
Looks like the address is generated from the game name: http://intelledger.github.io/transaction_family_specifications/xo_transaction_family.html#addressing

zac (Tue, 25 Jul 2017 19:32:52 GMT):
Also, every Sawtooth transaction family I know uses some sort of hashing scheme to generate addresses

zac (Tue, 25 Jul 2017 19:33:00 GMT):
Which means there is no way to derive meaning from them

zac (Tue, 25 Jul 2017 19:33:30 GMT):
It's a one way process: `game name --> hashed address`

zac (Tue, 25 Jul 2017 19:34:18 GMT):
I don't know enough about merkle addresses to say whether or not that is a requirement though

zac (Tue, 25 Jul 2017 19:34:53 GMT):
Maybe you could write a transaction family with addresses that tell you something about the data?

AkarshaMahadeva (Tue, 25 Jul 2017 19:34:59 GMT):
then what can be used to refer back to an item? If we are trying to link transactions? If Product A and B are related and I need to be able to refer to A and the link should be given by B

zac (Tue, 25 Jul 2017 19:35:53 GMT):
Why not `A`

zac (Tue, 25 Jul 2017 19:35:55 GMT):
?

zac (Tue, 25 Jul 2017 19:36:11 GMT):
Store that in B

zac (Tue, 25 Jul 2017 19:36:15 GMT):
You can go one way

zac (Tue, 25 Jul 2017 19:36:24 GMT):
`A --> hashed address`

zac (Tue, 25 Jul 2017 19:36:47 GMT):
You just can't start with the address and pull out what was originally used to generate it

boydjohnson (Tue, 25 Jul 2017 19:39:00 GMT):
You could store in a central location in State, all records of a type. So if A and B are the same type, there would be some address that contains the address of A and the address of B. Then when transaction B is looking for transaction A, it would query the central address of all transactions of that type.

zac (Tue, 25 Jul 2017 19:40:19 GMT):
(This is the same way hash-maps/dictionaries/objects work under the hood by the way. You never deal with the hashed index, because why would you, just the keys used to generate them, but if you happened to have the hashed index, you would not be able to derive the origin key from it)

zac (Tue, 25 Jul 2017 19:40:19 GMT):
(This is the same way hash-maps/dictionaries/objects work under the hood by the way. You never deal with the hashed index, because why would you, just the keys used to generate them, but if you happened to have the hashed index, you would not be able to derive the original key from it.)

zac (Tue, 25 Jul 2017 19:41:25 GMT):
@boydjohnson Is there any concern about the merkle tree becoming imbalanced or something? Is that way hashed addresses are generally used?

zac (Tue, 25 Jul 2017 19:41:25 GMT):
@boydjohnson Is there any concern about the merkle tree becoming imbalanced or something? Is that why hashed addresses are generally used?

boydjohnson (Tue, 25 Jul 2017 19:43:00 GMT):
I think the thing to worry about there is a whole bunch of transactions all referencing the same address and slowing things down.

GhadiShayban (Tue, 25 Jul 2017 19:56:29 GMT):
@dplumb Where can I find out the design for STL-445 stat collection library? We'd like to implement prometheus pull metrics instead of influx.

dplumb (Tue, 25 Jul 2017 20:03:36 GMT):
I did not end up creating a design document for stat collection. Instead of creating our own stat collection library, we are going to be using PyFormance

dplumb (Tue, 25 Jul 2017 20:03:54 GMT):
https://github.com/omergertel/pyformance

dplumb (Tue, 25 Jul 2017 20:04:32 GMT):
I've done some PoCs but we're still working on how this will be implemented

GhadiShayban (Tue, 25 Jul 2017 20:07:26 GMT):
ok -- looking at that library it's probably feasible to make a reporter/proxy to expose an endpoint for prometheus

dplumb (Tue, 25 Jul 2017 20:09:13 GMT):
Yes, I don't have much experience with Prometheus but I believe that should be fairly straightforward

kelly_ (Tue, 25 Jul 2017 20:22:46 GMT):
@GhadiShayban I believe @TomBarnes has been working on this

AkarshaMahadeva (Tue, 25 Jul 2017 23:24:59 GMT):
Whenever xo commands are run(xo_tp_python ) how which function calls the apply function in the handler

boydjohnson (Wed, 26 Jul 2017 00:38:15 GMT):
@AkarshaMahadeva The apply function in the handler is triggered by a ZeroMQ message being sent from the validator process to the transaction processor process. The message is a TP_PROCESS_REQUEST.

jordan.k.miles (Wed, 26 Jul 2017 00:44:49 GMT):
hey guys, been working with the java sdk and pulled down the Signing addition today. Wrestled with not having a valid signature for a while before I noticed that the public key is being generated with `return return "03" + privateKey.getPublicKeyAsHex()` I removed the `"03" + ` and the signature was validated successfully.

jordan.k.miles (Wed, 26 Jul 2017 00:45:47 GMT):
didn't know who should know that or where I should post it.

boydjohnson (Wed, 26 Jul 2017 00:46:47 GMT):
@jordan.k.miles This is a good spot. I'll take a look tomorrow morning.

AkarshaMahadeva (Wed, 26 Jul 2017 03:53:40 GMT):
Thank you so much Johnson

cooljackal (Wed, 26 Jul 2017 03:57:57 GMT):
Has joined the channel.

Otherside (Wed, 26 Jul 2017 07:58:55 GMT):
Has joined the channel.

Otherside (Wed, 26 Jul 2017 09:35:51 GMT):
Hi, anyone installed successfully sawtooth on raspberry pi?

Otherside (Wed, 26 Jul 2017 09:35:51 GMT):
Hi, has anyone installed successfully sawtooth on raspberry pi and could share how to do it?

toddojala (Wed, 26 Jul 2017 14:32:30 GMT):
@Otherside It should be possible, but I don't know of anyone who has done it yet. There may be dependencies that are missing on the OS you use on raspberry pi that may have to be manually built or installed. Maybe someone else here has experimented with Raspberry Pis and Sawtooth?

zac (Wed, 26 Jul 2017 15:04:32 GMT):
A big missing feature would probably be SGX. So you wouldn't be able to use PoET consensus.

zac (Wed, 26 Jul 2017 15:05:38 GMT):
The rest of the it would probably work fine if you went with a different consensus module.

zac (Wed, 26 Jul 2017 15:05:50 GMT):
Not sure about performance.

pschwarz (Wed, 26 Jul 2017 15:09:03 GMT):
You wouldn't be able to use PoET SGX. You could, at the moment, use Simulated PoET on a Raspberry Pi (assuming all the rest of the dependency are available for the Pi).

boydjohnson (Wed, 26 Jul 2017 15:34:37 GMT):
@jordan.k.miles Here is the pull request fixing that java signing issue you found. https://github.com/hyperledger/sawtooth-core/pull/724 Thanks!

meiguosg (Wed, 26 Jul 2017 15:54:01 GMT):
Has joined the channel.

meiguosg (Wed, 26 Jul 2017 15:56:35 GMT):
Hi Zac/everyone, if I understand correctly, {{sawtooth cli}} is using the REST API to fetch the data in the sawtooth blockchain, right? i.e: 'sawtooth block list' will call the REST API to view the blocks stored by the state.

Dan (Wed, 26 Jul 2017 16:22:54 GMT):
@toddojala do we have any docs describing how to use your custom TP. e.g. register the TP to settings, run the TP process and connect to the validator? I took a quick look in docs but what I found for xo mentioned mocks. I think @AkarshaMahadeva will need that kind of info as a next step.

pschwarz (Wed, 26 Jul 2017 16:32:30 GMT):
@meiguosg that is correct

meiguosg (Wed, 26 Jul 2017 16:33:01 GMT):
@pschwarz Thanks

toddojala (Wed, 26 Jul 2017 16:36:49 GMT):
@Dan I think we may need to flesh out these details with new documentation. Noted, and I will discuss those items with some people after reviewing the current docs, looking at the XO example code, etc. We will create stories based on findings!

toddojala (Wed, 26 Jul 2017 16:37:56 GMT):
@Dan Is is necessary to register a new "custom" TP using the Settings TP in order to use it, or will it just work if all defaults are used?

AkarshaMahadeva (Wed, 26 Jul 2017 17:11:54 GMT):
Error: no such image: sawtooth-ct-tp-python:: invalid reference format. When I tried to execute the yaml test file as guided in intkey transaction family

AkarshaMahadeva (Wed, 26 Jul 2017 17:12:30 GMT):
How can I add a new transaction family defined in example to the docker?

Dan (Wed, 26 Jul 2017 17:18:37 GMT):
@toddojala it's my understanding you have to register a TP in the settings family. that tells the network of all validators what families the network supports and tells each validator individually what it needs online to start validating txns. @amundson can correct me though.

jordan.k.miles (Wed, 26 Jul 2017 18:47:14 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=MrzhmiEQGnec3TasC) @boydjohnson Not a problem. Thanks!

Dan (Wed, 26 Jul 2017 18:55:21 GMT):
I was DM'ing with @AkarshaMahadeva and want to double check I'm not going down the wrong path... If you are using the app dev guide using docker it appears you need to do some additional steps to get a shell that has all the pythonpath and other env stuff set correctly At least based on the warning box here: http://intelledger.github.io/app_developers_guide/docker.html#logging-into-the-client-container

Dan (Wed, 26 Jul 2017 18:55:41 GMT):
Can someone who devs with the docker env verify or correct?

boydjohnson (Wed, 26 Jul 2017 18:59:20 GMT):
Yeah, that is true, @Dan

mfford (Wed, 26 Jul 2017 21:06:42 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, July 27th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, July 27th Time: 10-11am CDT We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi Agenda: 1. Introductions-Mark Ford 2. State Delta Subscriber-Peter Schwarz 3. Open Forum

Siciliano (Thu, 27 Jul 2017 09:31:14 GMT):
Has joined the channel.

smagne (Thu, 27 Jul 2017 11:29:05 GMT):
Has joined the channel.

smagne (Thu, 27 Jul 2017 11:29:35 GMT):
Hello, I'm trying to setup a validator into a different docker instance and also change the database is that possible? I found this: https://github.com/hyperledger/sawtooth-core/tree/master/validator/packaging but I don't know how to continue from there

toddojala (Thu, 27 Jul 2017 14:36:50 GMT):
^ @adamludvik

toddojala (Thu, 27 Jul 2017 14:37:19 GMT):
@smagne We provide a docker container running a validator. What do you mean by "different instance"?

smagne (Thu, 27 Jul 2017 14:37:45 GMT):
I mean a different docker container

adamludvik (Thu, 27 Jul 2017 14:39:02 GMT):
If you would like to create your own docker image, you will want to start with the ubuntu:xenial image and use the steps here as reference when writing your Dockerfile: http://intelledger.github.io/app_developers_guide/ubuntu.html

adamludvik (Thu, 27 Jul 2017 14:39:40 GMT):
If you only want the validator in the image, you can just install "python3-sawtooth-validator"

adamludvik (Thu, 27 Jul 2017 14:40:08 GMT):
This is an example of what such a Dockerfile might look like: https://github.com/hyperledger/sawtooth-core/blob/master/ci/sawtooth-validator

smagne (Thu, 27 Jul 2017 15:36:57 GMT):
Great Thanks @adamludvik

Dan (Thu, 27 Jul 2017 15:41:40 GMT):
great presentation @pschwarz on state delta subscriptions @mfford can you ensure we have a jira story to get the sphinx doc out?

AkarshaMahadeva (Thu, 27 Jul 2017 16:11:17 GMT):
ERROR: repository hyperledger/sawtooth-tp_ct_python not found: does not exist or no pull access

AkarshaMahadeva (Thu, 27 Jul 2017 16:11:53 GMT):
Error generated when I created my own transaction family and added it to sawtooth-default-yaml file

adamludvik (Thu, 27 Jul 2017 16:17:17 GMT):
This means you do not gave a docker image tagged `hyperledger/sawtooth-tp_ct_python`

adamludvik (Thu, 27 Jul 2017 16:17:58 GMT):
You will need to create a new Dockerfile for that image, build it, and tag it with that name.

smagne (Thu, 27 Jul 2017 16:20:50 GMT):
Hey @adamludvik, thanks for your help I have some questions I will give you more context of what we need. We want to use sawtooth and we need the following structure: - One container with the database files - One container with sawtooth-validator that will depend on the database container - One container with sawtooth-rest-api Just let me know if this is possible and what would be the best approach to achieve this

AntonOyung (Thu, 27 Jul 2017 17:53:29 GMT):
What is happening when ParseFromStrings is called? Is this related to the proto buffer?

toddojala (Thu, 27 Jul 2017 18:41:39 GMT):
@AntonOyung Which class or file or part of the codebase is this in?

AntonOyung (Thu, 27 Jul 2017 19:08:23 GMT):
@toddojala I believe it's used in multiple places but the one I'm most interested in is _decode_block line 192 in block_store.py which is called after fetching a value with _get_block

Dan (Thu, 27 Jul 2017 19:53:44 GMT):
@mfford is there a replay link of today's Sawtooth Tech Forum?

zac (Thu, 27 Jul 2017 21:30:06 GMT):
@AntonOyung Yes, that is from the python Protobuf library: https://developers.google.com/protocol-buffers/docs/pythontutorial

zac (Thu, 27 Jul 2017 21:34:13 GMT):
Basically the lifespan looks like this: ``` msg = ProtoMessage(foo='bar') print(msg.foo) # 'bar' msg_bytes = msg.SerializeToString() print(msg_bytes) # b'\x12\x03bar'

zac (Thu, 27 Jul 2017 21:36:30 GMT):
Basically the lifespan looks like this: ``` msg = ProtoMessage(foo='bar') print(msg.foo) # 'bar' msg_bytes = msg.SerializeToString() print(msg_bytes) # b'\x12\x03bar' new_msg = ProtoMessage() new_msg.ParseFromString(msg_bytes) print(new_msg.foo) # 'bar' ```

zac (Thu, 27 Jul 2017 21:36:30 GMT):
Basically the lifespan looks like this: ``` msg = SomeMessage(foo='bar') print(msg.foo) # 'bar' msg_bytes = msg.SerializeToString() print(msg_bytes) # b'\x12\x03bar' new_msg = SomeMessage() new_msg.ParseFromString(msg_bytes) print(new_msg.foo) # 'bar' ```

zac (Thu, 27 Jul 2017 21:37:48 GMT):
``` Message Instance --> bytes --> Message Instance ```

zac (Thu, 27 Jul 2017 21:37:48 GMT):
``` Message instance --> bytes --> Message instance ```

zac (Thu, 27 Jul 2017 21:37:48 GMT):
``` Message instance --> bytes --> Message instance ```

GhadiShayban (Fri, 28 Jul 2017 01:11:26 GMT):
Was today's tech session recorded?

Dan (Fri, 28 Jul 2017 01:42:34 GMT):
@mfford ^

mfford (Fri, 28 Jul 2017 12:32:40 GMT):
The sessions are automatically recorded. Let me track down the link and put it up.

AntonOyung (Fri, 28 Jul 2017 16:24:38 GMT):
@zac when inserting into LMDB it seems they serialize and deserialize it again using CBOR loads and dumps, is there any reason for serializing it multiple times?

zac (Fri, 28 Jul 2017 17:05:34 GMT):
That I don't know. I'm not familiar with that particular code. It could be a holdover from some older design, or perhaps it has to do with how LMDB operates.

AntonOyung (Fri, 28 Jul 2017 17:07:10 GMT):
When starting up a local validator in vagrant using "sawtooth-validator -vv" does it use preexisting data/files or reference an old instance to set up? It appears that after running the command a few times, the databases are initialized with a few entries in them already and don't follow the same protocol.

AntonOyung (Fri, 28 Jul 2017 17:07:55 GMT):
@zac I see, thanks for your help!

zac (Fri, 28 Jul 2017 17:08:59 GMT):
there are data files that will persist validator state

zac (Fri, 28 Jul 2017 17:09:13 GMT):
I believe they are in `~/sawtooth/`

AntonOyung (Fri, 28 Jul 2017 17:09:35 GMT):
if I delete them will it start the validator clean?

zac (Fri, 28 Jul 2017 17:09:58 GMT):
yes, though there are a few other steps to bootstrap clean state

zac (Fri, 28 Jul 2017 17:10:18 GMT):
let me run through it once real quick to make sure I don't miss anything...

zac (Fri, 28 Jul 2017 17:14:03 GMT):
``` $ rm -rf ~/sawtooth/data/* $ sawtooth admin genesis ```

zac (Fri, 28 Jul 2017 17:14:29 GMT):
That will wipe and re-setup your validator

zac (Fri, 28 Jul 2017 17:15:00 GMT):
you should also know how to generate new keys, in case you have to go completely from scratch

zac (Fri, 28 Jul 2017 17:15:23 GMT):
``` $ rm -rf ~/sawtooth/keys/* $ sawtooth admin keygen ```

zac (Fri, 28 Jul 2017 17:15:48 GMT):
you mostly shouldn't need to do that though

jordan.k.miles (Fri, 28 Jul 2017 18:06:47 GMT):
is there any documentation for setting up PoET? I'm a little confused as to if I need to configure it myself, use Intel SGX, or if it's included. Also, I see things like the "ValidatorInfo" class for python. Will these be available for java at some point?

Dan (Fri, 28 Jul 2017 18:07:21 GMT):
you don't need sgx.

Dan (Fri, 28 Jul 2017 18:07:48 GMT):
there's 2 flavors of poet. one has an sgx implementation and the other just uses pure python.

Dan (Fri, 28 Jul 2017 18:08:33 GMT):
all the instructions cover the pure python one (sometimes called poet simulator or just poet)

Dan (Fri, 28 Jul 2017 18:09:43 GMT):
As far as a port to java, there are no plans for that component.

Dan (Fri, 28 Jul 2017 18:10:35 GMT):
Poet has a couple aspects. There's the consensus algorithm and then there's network policies. We capture the network policies as a transaction family called ValidatorRegistry.

Dan (Fri, 28 Jul 2017 18:11:31 GMT):
Poet will check the validator registry to see if another validator is registered on the network and is publishing blocks within the rules. It's part of a defense in depth design.

Dan (Fri, 28 Jul 2017 18:11:49 GMT):
does that help?

jordan.k.miles (Fri, 28 Jul 2017 18:15:09 GMT):
yeah, somewhat. so how does a new validator, say from a remote client, register and then get access to the distributed ledger? is that exposed as a rest endpoint?

Dan (Fri, 28 Jul 2017 18:41:17 GMT):
more or less. it happens as a transactio

Dan (Fri, 28 Jul 2017 18:41:17 GMT):
more or less. it happens as a transaction

Dan (Fri, 28 Jul 2017 18:43:01 GMT):
if you are trying to run a few nodes on the same system - like you are just testing sawtooth or using it for developing some transaction logic etc - there's one way you'd run a bunch of nodes on the same machine.

Dan (Fri, 28 Jul 2017 18:43:33 GMT):
if you are trying to setup a real physical network where each computer is a separate node on the system, then there's a slightly different mechanic.

Dan (Fri, 28 Jul 2017 18:43:51 GMT):
it's the same code and transactions under the hood, but I think we have different helper scripts

AntonOyung (Fri, 28 Jul 2017 19:07:35 GMT):
Are you supposed to be able to index the database by both key and value to return their counterpart (call get(value) -> returns key and get(key) -> returns value) ?

boydjohnson (Fri, 28 Jul 2017 19:09:04 GMT):
@AntonOyung If you are talking about the blockstore, blocks are indexed by transaction so you can get a block_id by the transaction_id.

Dan (Fri, 28 Jul 2017 19:13:33 GMT):
@AntonOyung if you want to learn/change/etc. the inside of sawtooth you are looking at the right stuff. If you want to write transactions for sawtooth, we can point you to the outter interfaces for working with state / working with the underlying data.

AntonOyung (Fri, 28 Jul 2017 19:15:04 GMT):
@Dan I'd like to change the insides of sawtooth so I think I'm in the right place

jordan.k.miles (Fri, 28 Jul 2017 19:32:52 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jv9299mKzB5Zy9obd) @Dan Ah ok. Do you know of any docs on that aspect (adding peers, etc.). They may be around and I overlooked them. I have the dev Docker file and found the poet_smoke.yaml file, but I'm not seeing anything related to actually building up a network of nodes.

Dan (Fri, 28 Jul 2017 19:37:09 GMT):
@jordan.k.miles you probably didn't miss anything. do you want to setup multiple nodes on your dev machine or are you looking to setup separate individual machines?

jordan.k.miles (Fri, 28 Jul 2017 19:41:23 GMT):
probably locally for now and then try multiple machines.

Dan (Fri, 28 Jul 2017 19:49:41 GMT):
@adamludvik what's the best way to launch a network on a single machine? Do we have that documented somewhere?

boydjohnson (Fri, 28 Jul 2017 19:54:59 GMT):
adamlidvik is unavailable, so I am answering. I would use docker and docker-compose and have a docker-compose yaml file similar to test_poet_smoke: https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_smoke.yaml

boydjohnson (Fri, 28 Jul 2017 19:54:59 GMT):
adamludvik is unavailable, so I am answering. I would use docker and docker-compose and have a docker-compose yaml file similar to test_poet_smoke: https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_smoke.yaml

jordan.k.miles (Fri, 28 Jul 2017 19:56:09 GMT):
nice. that's actually the example I was looking at :)

jordan.k.miles (Fri, 28 Jul 2017 19:56:24 GMT):
I'll play around with it and see what happens.

boydjohnson (Fri, 28 Jul 2017 19:56:36 GMT):
Cool, sounds good.

adamludvik (Fri, 28 Jul 2017 20:01:51 GMT):
I second @boydjohnson's recommendation

pancake (Mon, 31 Jul 2017 07:51:56 GMT):
Since a blockchain is built by one block record it's previous block id, how to make sure if a block is end of a blockchain?

zac (Mon, 31 Jul 2017 13:38:30 GMT):
you need to rely on the validator to tell you what the end of the chain is, you can't figure it out just from the blocks

zac (Mon, 31 Jul 2017 13:39:35 GMT):
If you are working as a client, an HTTP GET request to `/blocks` (among other endpoints) will include a property called `head` which is the id of the current chain head

zac (Mon, 31 Jul 2017 13:39:55 GMT):
or rather, the id of the chain head used in that request

zac (Mon, 31 Jul 2017 13:40:03 GMT):
but the default is the most current

zac (Mon, 31 Jul 2017 13:41:48 GMT):
If you are working directly with the validator, the `chain_head` property on the `BlockStore` holds the id of the current chain head

plee (Mon, 31 Jul 2017 16:49:58 GMT):
Has joined the channel.

AkarshaMahadeva (Mon, 31 Jul 2017 18:12:56 GMT):
ubuntu@ubuntu-xenial:/project/sawtooth-core$ xo create game99 Error: HTTPConnectionPool(host='rest_api', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))

AkarshaMahadeva (Mon, 31 Jul 2017 18:13:17 GMT):
Error generated while trying to do a game creation

zac (Mon, 31 Jul 2017 18:33:00 GMT):
What happens when you `curl rest_api:8080/blocks`?

AkarshaMahadeva (Mon, 31 Jul 2017 18:35:08 GMT):
ubuntu@ubuntu-xenial:/project/sawtooth-core$ curl rest_api:8080/blocks curl: (6) Could not resolve host: rest_api ubuntu@ubuntu-xenial:/project/sawtooth-core$ curl rest-api:8080/blocks curl: (6) Could not resolve host: rest-api

zac (Mon, 31 Jul 2017 18:37:26 GMT):
Well there's your problem

zac (Mon, 31 Jul 2017 18:37:39 GMT):
I am not as familiar with all of the Docker workings

zac (Mon, 31 Jul 2017 18:37:51 GMT):
I'm usually running things out of Ubuntu

zac (Mon, 31 Jul 2017 18:38:09 GMT):
I don't know if someone more familiar with running through Docker can jump in

zac (Mon, 31 Jul 2017 18:38:33 GMT):
But the broad version is, the REST API is down, or not at the configured URL

zac (Mon, 31 Jul 2017 18:39:02 GMT):
I would make sure it is running, and that you are running that command from within the client Docker image

zac (Mon, 31 Jul 2017 19:34:22 GMT):
So it looks like the `xo` command is defaulting to `http://rest_api:8080` for the REST API url

zac (Mon, 31 Jul 2017 19:34:46 GMT):
So anyone not running it on Docker needs to go through the extra step of setting the url to localhost

zac (Mon, 31 Jul 2017 19:35:01 GMT):
Is that handled in a more clever way for `intkey`?

zac (Mon, 31 Jul 2017 19:35:21 GMT):
So neither Ubuntu or Docker users need to manually set the URL?

zac (Mon, 31 Jul 2017 19:37:03 GMT):
Or does `intkey` just default to the Ubuntu URL?

pschwarz (Mon, 31 Jul 2017 20:22:15 GMT):
That xo default seems like a bug

pschwarz (Mon, 31 Jul 2017 20:22:27 GMT):
It should share the same default as other commands

zac (Mon, 31 Jul 2017 20:51:41 GMT):
yes, this is mostly my thinking

zac (Mon, 31 Jul 2017 20:52:18 GMT):
though if `intkey` is just using Ubuntu defaults and making Docker users go through an extra step, then maybe `intkey` is the one with the bug

zac (Mon, 31 Jul 2017 20:52:58 GMT):
ideally both would default to the default REST API url in whatever environment you are using

zac (Mon, 31 Jul 2017 20:53:04 GMT):
but they should all match regardless

pschwarz (Mon, 31 Jul 2017 20:53:18 GMT):
No, the `sawtooth` and `sawtooth-rest-api` cli tools also default to localhost

JamesKempf (Mon, 31 Jul 2017 20:55:29 GMT):
Has joined the channel.

JamesKempf (Mon, 31 Jul 2017 20:56:58 GMT):
I'm using seth with the burrow-evm-tp, trying to create an account. seth requires initialization to a URL as follows:

JamesKempf (Mon, 31 Jul 2017 20:57:06 GMT):
seth initialize

JamesKempf (Mon, 31 Jul 2017 20:58:18 GMT):
but there is nothing about where that URL should point. Is it the burrow-evm-tp URL? The burrow-evm-tp CLI reference has nothing in it about how to set the URL, nor does one get printed out when I start it with the --verbose flag.

JamesKempf (Mon, 31 Jul 2017 20:59:02 GMT):
Has anybody used seth and burrow-evm-tp to successfully set up an account and add a compiled Solidity contract?

boydjohnson (Mon, 31 Jul 2017 21:19:42 GMT):
@JamesKempf That URL is the rest api url.

JamesKempf (Mon, 31 Jul 2017 21:34:23 GMT):
@boydjohnson I tried that but iI get the following error message from seth:

JamesKempf (Mon, 31 Jul 2017 21:34:31 GMT):
Error: Problem submitting account creation transaction: Couldn't send transaction: Post tcp://127.0.0.1:8800/batches: unsupported protocol scheme "tcp" ubuntu@blockchain01:~/hyperledger/sawtooth-core

JamesKempf (Mon, 31 Jul 2017 21:34:31 GMT):
Error: Problem submitting account creation transaction: Couldn't send transaction: Post tcp://127.0.0.1:8800/batches: unsupported protocol scheme "

JamesKempf (Mon, 31 Jul 2017 21:34:37 GMT):
But then when I try:

JamesKempf (Mon, 31 Jul 2017 21:34:47 GMT):
seth account list

JamesKempf (Mon, 31 Jul 2017 21:34:50 GMT):
I get:

JamesKempf (Mon, 31 Jul 2017 21:35:33 GMT):
player01: 93ba86c118af79cd4b37cd87bf7229031c3c33f0

JamesKempf (Mon, 31 Jul 2017 21:35:53 GMT):
so it seems to be creating the account even though it complains. Thanx.

boydjohnson (Mon, 31 Jul 2017 21:36:14 GMT):
The protocol should be `http` and the port of the rest api is by default `8080`.

JamesKempf (Mon, 31 Jul 2017 21:36:54 GMT):
Thanx

boydjohnson (Mon, 31 Jul 2017 21:37:03 GMT):
No problem.

AkarshaMahadeva (Mon, 31 Jul 2017 23:00:49 GMT):
am having a problem serializing data for my transaction family. When I am decoding and printing it I am able to see the data. But when it decodes and splits and assigns to variable in _unpack_transaction function it is creating problemsubuntu@ubuntu-xenial:/project/sawtooth-core$ ct-tp-python -vv [22:51:55.224 INFO core] register attempt: OK [22:52:05.026 DEBUG core] received message of type: TP_PROCESS_REQUEST product_name, pxty5,create, [22:52:05.028 WARNING core] Invalid Transaction Invalid payload serialization I donot have any idea as how to solve this

AntonOyung (Mon, 31 Jul 2017 23:04:57 GMT):
Is every node in a merkle tree exactly one block?

zac (Tue, 01 Aug 2017 00:26:12 GMT):
@AkarshaMahadeva That error comes from the Transaction Processor. It is typically thrown when it tries to deserialize a transaction payload and fails. Are you working with your own modified Transaction Processor, or are you using an existing one?

zac (Tue, 01 Aug 2017 00:29:25 GMT):
@AntonOyung Blocks and state are stored separately. A transaction can modify one or more nodes in the merkle trie depending on the payload and the logic of its transaction processor.

zac (Tue, 01 Aug 2017 00:30:14 GMT):
For example, IntKey stores one key/value pair at each node.

zac (Tue, 01 Aug 2017 00:30:45 GMT):
But Xo stores all the information for an entire tic-tac-toe game at a single node.

FlyingTiger (Tue, 01 Aug 2017 10:50:54 GMT):
Is there a 'Docker Compose File' that deploying multiple validators?

FlyingTiger (Tue, 01 Aug 2017 10:51:08 GMT):
Thanks.

rbuysse (Tue, 01 Aug 2017 13:53:34 GMT):
@FlyingTiger Sorry, we don't have anything like that right now.

Dan (Tue, 01 Aug 2017 14:32:47 GMT):
@FlyingTiger above, @boydjohnson recommended to someone else using https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_smoke.yaml as a starting point.

Dan (Tue, 01 Aug 2017 14:33:45 GMT):
We removed the cli 'cluster' command a few months ago in favor of docker compose and other tools (terraform?).

jwcoates (Tue, 01 Aug 2017 16:18:29 GMT):
Has joined the channel.

smagne (Tue, 01 Aug 2017 17:17:19 GMT):
hello, I'm getting error 15: The validator has no genesis block, and is not yet ready to be queried. Try your request again later. using docker compose file

zac (Tue, 01 Aug 2017 17:20:03 GMT):
Did you `sawtooth admin keygen` before starting up your validator?

zac (Tue, 01 Aug 2017 17:20:03 GMT):
Did you `sawtooth admin genesis` before starting up your validator?

zac (Tue, 01 Aug 2017 17:20:15 GMT):
Also Docker or Ubuntu?

smagne (Tue, 01 Aug 2017 17:35:15 GMT):
@zac I don't know what you mean, I'm new with sawtooth I've just run the docker compose sample

smagne (Tue, 01 Aug 2017 17:35:15 GMT):
@zac thanks for your reply. I don't know what you mean, I'm new with sawtooth I've just run the docker compose sample

drozd (Tue, 01 Aug 2017 18:01:20 GMT):
@FlyingTiger @Dan manually changing those compose files is difficult and unpleasant, especially when playing with different parameters, so I wrote a little suite of functions to generate sawtooth commands (basically a more flexible version of cluster): https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/tests/node_controller.py

drozd (Tue, 01 Aug 2017 18:01:43 GMT):
I don't think it would be very difficult to use that to quickly generate new compose files

JamesKempf (Tue, 01 Aug 2017 18:02:33 GMT):
Hi, I'm using burrow-evn-tp with seth. Is there any way to get compiled Solidity bytecodes into seth other than through a command line argument? Like reading from stdin?

pschwarz (Tue, 01 Aug 2017 18:53:58 GMT):
@smagne Is it the docker compose file mentioned in the docs?

Dan (Tue, 01 Aug 2017 19:01:57 GMT):
@drozd cool. can you mention that in the sawtooth email list (hyperledger-stl@lists.hyperledger.org)? It's easier for people to find these stray gems searching the email archive than here (I doubt anyone searches chat history).

Dan (Tue, 01 Aug 2017 19:02:42 GMT):
And @drozd for that matter add a help-wanted story to Jira to make such a compose file?

smagne (Tue, 01 Aug 2017 19:12:42 GMT):
@pschwarz this is my docker compose file

smagne (Tue, 01 Aug 2017 19:14:10 GMT):

Message Attachments

pschwarz (Tue, 01 Aug 2017 21:16:58 GMT):
@smagne You need to add an entry to start the sawtooth settings transaction processor. Something like: ``` settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator entrypoint: settings-tp -vv tcp://validator:4004 ```

pschwarz (Tue, 01 Aug 2017 21:17:30 GMT):
Your validator is probably blocked waiting to process the genesis block, which has some on-chain settings in it.

smagne (Tue, 01 Aug 2017 21:27:12 GMT):
Okay I will try that, thanks!

smagne (Tue, 01 Aug 2017 21:33:06 GMT):
That way works great

pschwarz (Tue, 01 Aug 2017 21:40:40 GMT):
:thumbsup:

adamludvik (Wed, 02 Aug 2017 13:39:32 GMT):
@JamesKempf Currently, smart contract deployment is only supported by passing a blob of data on the command line to `seth contract create`. In the future we are planning to support more standard methods for contract deployment. I also see you were having some difficulty with getting `seth` to talk to the REST API. Were you able to resolve that issue?

GhadiShayban (Wed, 02 Aug 2017 14:31:35 GMT):
How long is a transaction with declared dependencies 'held' until its dependencies are satisfied?

GhadiShayban (Wed, 02 Aug 2017 14:31:57 GMT):
Or is it nack'ed immediately?

agunde (Wed, 02 Aug 2017 14:36:51 GMT):
@GhadiShayban The Completer will hold the the transaction/batch in a TimedCache, where if the transaction/batch is not referenced for some time (default is currently 30 seconds) and the dependencies were not received, it will be purged. https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/journal/completer.py

GhadiShayban (Wed, 02 Aug 2017 14:37:22 GMT):
thanks!

JamesKempf (Wed, 02 Aug 2017 15:00:19 GMT):
@adamludvik, yes I got seth to talk with the REST API, thanx. The problem I'm having now is that after I create a contract through the command line, the code does not show up when I do seth show even though the transaction is listed in sawtooth. I get the message "(No Storage Set)" after the account contents are printed out with seth show.

adamludvik (Wed, 02 Aug 2017 15:15:52 GMT):
There are two types of accounts in Ethereum, Externally Owned Accounts and Contract Accounts and we have adopted that model as well. When you run `seth account create` you are initializing a new externally owned account at an address derived from the private key you imported. When you create a new contract with `seth create contract`, you are creating a new contract account at an address derived from the address of your externally owned account and the current nonce of that account. When you deploy the contract, it should print the address of the new contract account out. To see that the contract has been successfully deployed, you would need to do `seth show ` not `seth show `.

adamludvik (Wed, 02 Aug 2017 15:17:05 GMT):
It is also worth noting that only contract accounts can have code deployed to them.

benoit.razet (Wed, 02 Aug 2017 15:45:25 GMT):
Hi, I am playing with a transaction family with a specific prefix, say ‘000001’. I was assuming that transactions from this transaction family would not be allowed to modify the merkle tree at an address with a different prefix than ‘000001’. After running some test, I found that the transaction is allowed to modify the merkle tree at an address with a different prefix than ‘000001’. Is this normal?

benoit.razet (Wed, 02 Aug 2017 15:58:13 GMT):
by "prefix", I mean "namespace prefix"

jsmitchell (Wed, 02 Aug 2017 15:58:51 GMT):
yeah, there is no enforcement of that yet. It's coming soon.

benoit.razet (Wed, 02 Aug 2017 16:05:48 GMT):
Ok. So I should still assume that the addresses with a specific namespace can be modified by transaction families registered with this namespace. I was not completely sure because I could not find this explicitly mentioned in the documentation, even if that was my understanding.

jsmitchell (Wed, 02 Aug 2017 16:06:39 GMT):
yes, we will be adding support which allows explicit permissioning between transaction families and namespaces

jsmitchell (Wed, 02 Aug 2017 16:06:44 GMT):
the config will be on chain

benoit.razet (Wed, 02 Aug 2017 16:13:06 GMT):
Oh! Very interesting! Just to make sure I understand: there will be a mechanism to allow a transaction family A to modify the addresses reserved to transaction family B

jsmitchell (Wed, 02 Aug 2017 16:13:34 GMT):
think about the namespace definition as separate from the transaction family implementations

jsmitchell (Wed, 02 Aug 2017 16:13:52 GMT):
where there is a potential many-to-many mapping

benoit.razet (Wed, 02 Aug 2017 16:17:43 GMT):
Yes! Thanks!

AntonOyung (Wed, 02 Aug 2017 16:35:49 GMT):
In the Xo example when you first create a game, what information is stored in the merkle database? I see a hashed K-V pair is inputed but I'm having a hard time figuring out what each entry actually represents

kelly_ (Wed, 02 Aug 2017 16:49:04 GMT):
@AntonOyung have you looked at this - http://intelledger.github.io/transaction_family_specifications/xo_transaction_family.html

kelly_ (Wed, 02 Aug 2017 16:49:30 GMT):
'''

kelly_ (Wed, 02 Aug 2017 16:49:41 GMT):
''' An XO state entry consists of the UTF-8 encoding of a string with exactly four commas formatted as follows: ,,,, where is a nonempty string not containing |, is a string of length 9 containing only O, X, or -, is one of the following: P1-NEXT, P2-NEXT, P1-WIN, P2-WIN, or TIE, and and are the (possibly empty) public keys associated with the game’s players. '''

AntonOyung (Wed, 02 Aug 2017 16:51:45 GMT):
I have looked at that however I put some print statements in the LMDB file to print the length of the merkle DB each time i set a value

AntonOyung (Wed, 02 Aug 2017 16:52:27 GMT):
and the length of the database goes from 1 to 37 instantly after doing a "xo create game1" without entering 37 entries @kelly_

pschwarz (Wed, 02 Aug 2017 16:53:38 GMT):
In LmdbNoLockDatabase?

pschwarz (Wed, 02 Aug 2017 16:54:01 GMT):
That is used by a number of things - block store, merkle tree and state deltas

pschwarz (Wed, 02 Aug 2017 16:54:42 GMT):
So across all of those stores, I could see there being many writes

jsmitchell (Wed, 02 Aug 2017 16:54:47 GMT):
you are at the wrong level of abstraction @AntonOyung

jsmitchell (Wed, 02 Aug 2017 16:55:36 GMT):
no, that is the instance of the lmdb underlying the merkle trie, and it's the expected behavior. There is a key-value pair stored for every node in the merkle trie at a key location identified by the node's hash

jsmitchell (Wed, 02 Aug 2017 16:56:12 GMT):
what the XO transaction processor cares about is the merkle radix address -> value mapping, which is a layer up

AntonOyung (Wed, 02 Aug 2017 16:56:24 GMT):
Yes so I was wondering how there are suddenly so many nodes in the merkle trie after only creating a game

jsmitchell (Wed, 02 Aug 2017 16:56:53 GMT):
because it's a radix trie and the data is stored in a leaf node

jsmitchell (Wed, 02 Aug 2017 16:57:49 GMT):
there are some optimizations I'm planning to add that will make that more efficient

AntonOyung (Wed, 02 Aug 2017 17:02:24 GMT):
if there are 37 elements in the trie, i'm assuming there is more than 1 leaf node after creating a game is that correct? If so what would the data in the other leaf nodes be?

jsmitchell (Wed, 02 Aug 2017 17:04:06 GMT):
no, it is a path of nodes to the leaf node

AntonOyung (Wed, 02 Aug 2017 17:04:30 GMT):
so it's a path of nodes with 1 child down to the leaf?

jsmitchell (Wed, 02 Aug 2017 17:04:50 GMT):
yes, and as data gets added along that address path, you will have more leafs

AntonOyung (Wed, 02 Aug 2017 17:05:18 GMT):
do the leaves get added in the same way or do the existing nodes gain more children?

jsmitchell (Wed, 02 Aug 2017 17:05:29 GMT):
I plan to collapse the degenerate 1 child->1 child case in an upcoming enhancement

jsmitchell (Wed, 02 Aug 2017 17:05:41 GMT):
it's copy-on-write

jsmitchell (Wed, 02 Aug 2017 17:06:38 GMT):
a new copy of the parent node gets created with a pointer to the two children and the merkle hash is calculated and then new nodes are calculated up the tree to the new merkle root

AntonOyung (Wed, 02 Aug 2017 17:09:54 GMT):
Root | o | leaf

AntonOyung (Wed, 02 Aug 2017 17:10:02 GMT):
so it starts something like this ^

AntonOyung (Wed, 02 Aug 2017 17:10:15 GMT):
and then goes to something like this when a new element is added?

AntonOyung (Wed, 02 Aug 2017 17:10:31 GMT):
Root(new hashed val) | o / \ Leaf Leaf

jsmitchell (Wed, 02 Aug 2017 17:13:28 GMT):
yeah, except o is a new node too with a new hashed value

AntonOyung (Wed, 02 Aug 2017 17:15:28 GMT):

Message Attachments

AntonOyung (Wed, 02 Aug 2017 17:16:03 GMT):
So i'm looking at this image now and I'm a little confused. Are all the old nodes on the left deleted (except for the node that's referenced by both)

jsmitchell (Wed, 02 Aug 2017 17:16:10 GMT):
nope

jsmitchell (Wed, 02 Aug 2017 17:16:14 GMT):
it's copy on write

jsmitchell (Wed, 02 Aug 2017 17:16:27 GMT):
you can still refer to the prior versions of the tree based on the root hash

AntonOyung (Wed, 02 Aug 2017 17:17:11 GMT):
Does this mean that there are multiple roots to the tree ?

jsmitchell (Wed, 02 Aug 2017 17:17:24 GMT):
yes, one for each block typically

AntonOyung (Wed, 02 Aug 2017 17:20:41 GMT):
I'm having a hard time visualizing what that would look like is there another image that I could search up that would help me understand ?

jsmitchell (Wed, 02 Aug 2017 17:20:53 GMT):
hmm, not really

AntonOyung (Wed, 02 Aug 2017 17:21:34 GMT):

Message Attachments

AntonOyung (Wed, 02 Aug 2017 17:21:40 GMT):
Does this work ^

jsmitchell (Wed, 02 Aug 2017 17:22:04 GMT):
the underlying key-value store is a forest of trees identified by the state root hash

jsmitchell (Wed, 02 Aug 2017 17:22:29 GMT):
values in any version of a tree are identified by a consistent merkle tree address

jsmitchell (Wed, 02 Aug 2017 17:24:35 GMT):
yeah, it's kind of like that. I like my drawing better :)

AntonOyung (Wed, 02 Aug 2017 17:24:48 GMT):
does the merkle tree address need to be decoded from the hashed key?

AntonOyung (Wed, 02 Aug 2017 17:24:58 GMT):
in the Key-value store

jsmitchell (Wed, 02 Aug 2017 17:26:07 GMT):
no, there is no relationship

jsmitchell (Wed, 02 Aug 2017 17:26:17 GMT):
the hash is the hash of the node structure

AntonOyung (Wed, 02 Aug 2017 17:26:55 GMT):
so then in the value, you can decode it and find what exactly ?

jsmitchell (Wed, 02 Aug 2017 17:26:57 GMT):
the merkle tree address specifies the name of the parent->child pointers

jsmitchell (Wed, 02 Aug 2017 17:27:22 GMT):
at the location of the merkle address in the merkle trie?

jsmitchell (Wed, 02 Aug 2017 17:27:34 GMT):
it's whatever encoding the transaction family puts at that location

jsmitchell (Wed, 02 Aug 2017 17:27:39 GMT):
just a bytearray

AntonOyung (Wed, 02 Aug 2017 17:28:43 GMT):
Ok I'm sorry I'm getting a little confused, could you elaborate on what you mean by "the hash is the hash of the node structure" ?

jsmitchell (Wed, 02 Aug 2017 17:29:20 GMT):
This is not something that it's necessary to understand in order to write a transaction processor

AntonOyung (Wed, 02 Aug 2017 17:30:17 GMT):
I understand, I'm just interested in learning about these components

jsmitchell (Wed, 02 Aug 2017 17:32:04 GMT):
ok, the merkle tree's world is addresses and values that are specified by the transaction family

jsmitchell (Wed, 02 Aug 2017 17:32:25 GMT):
the merkle tree uses a key-value store underneath as its internal store

jsmitchell (Wed, 02 Aug 2017 17:33:24 GMT):
that implementation uses the hashes of node content as the key in the key-value store. The value is the serialized content of the node

AntonOyung (Wed, 02 Aug 2017 17:35:45 GMT):
so the key is the hash of the node and the value is serialized node?

jsmitchell (Wed, 02 Aug 2017 17:36:00 GMT):
at what level?

jsmitchell (Wed, 02 Aug 2017 17:36:05 GMT):
in the underlying key-value store?

jsmitchell (Wed, 02 Aug 2017 17:36:07 GMT):
yes.

jsmitchell (Wed, 02 Aug 2017 17:36:37 GMT):
that is an implementation detail of the merkle tree though. A user of the merkle tree doesn't need to know anything about that

AntonOyung (Wed, 02 Aug 2017 17:38:00 GMT):
then by deserializing the node you're able to actually construct the trie

AntonOyung (Wed, 02 Aug 2017 17:38:00 GMT):
?

AntonOyung (Wed, 02 Aug 2017 17:38:06 GMT):
nodes*

jsmitchell (Wed, 02 Aug 2017 17:41:53 GMT):
the merkle tree does that

AntonOyung (Wed, 02 Aug 2017 17:43:23 GMT):
Is there any reason why the key and value are just different representations of the same thing?

jsmitchell (Wed, 02 Aug 2017 17:44:31 GMT):
I don't know what you mean

jsmitchell (Wed, 02 Aug 2017 17:44:48 GMT):
the node content is possibly huge

jsmitchell (Wed, 02 Aug 2017 17:44:55 GMT):
a hash of that content is a known size

AntonOyung (Wed, 02 Aug 2017 17:46:17 GMT):
you agreed that in the key-value store, the key is the hashed node and the value is the serialized node

AntonOyung (Wed, 02 Aug 2017 17:47:06 GMT):
So the key is a hashed representation of the node and the value is a serialized representation of the node

jsmitchell (Wed, 02 Aug 2017 17:47:26 GMT):
yes, in the underlying lmdb

AntonOyung (Wed, 02 Aug 2017 17:47:48 GMT):
yes so I was wondering if there's any purpose to that ?

jsmitchell (Wed, 02 Aug 2017 17:48:11 GMT):
yes, the hashes are stored as pointers in the parent node

AntonOyung (Wed, 02 Aug 2017 17:48:48 GMT):
and then the serialized version is actually used to interpret the node ?

jsmitchell (Wed, 02 Aug 2017 17:49:18 GMT):
yes

jsmitchell (Wed, 02 Aug 2017 17:49:26 GMT):
the hash is not reversable

jsmitchell (Wed, 02 Aug 2017 17:49:27 GMT):
...

AntonOyung (Wed, 02 Aug 2017 17:50:29 GMT):
ok thank you that clarifies a lot, I appreciate your help!

jsmitchell (Wed, 02 Aug 2017 17:50:36 GMT):
of course!

AntonOyung (Wed, 02 Aug 2017 21:26:04 GMT):
What is the state delta store's purpose? It seems like it's just used for state delta subscriptions which gives updates on what transactions occurred. However from my understanding of the block store, storing this information seems redundant, since the block store already stores all transactions, batches, and blocks

kelly_ (Wed, 02 Aug 2017 21:43:32 GMT):
@pschwarz

pschwarz (Wed, 02 Aug 2017 21:45:35 GMT):
Finding the difference between changes in state that happen from one block to the next is an expensive operation, so we chose to cache it (since user may need to get old deltas, catch up to current state, request specific deltas for a block, etc)

pschwarz (Wed, 02 Aug 2017 21:46:24 GMT):
It's not a source of truth, but more of a persistent cache. In theory, that store could be rebuilt based on the block chain

FlyingTiger (Thu, 03 Aug 2017 06:55:33 GMT):
@drozd thanks. And how could I use the node_controller to generate new compose files?

FlyingTiger (Thu, 03 Aug 2017 07:06:24 GMT):
@Dan Thanks. I'll try to use it.

psnmissaka (Thu, 03 Aug 2017 08:58:34 GMT):
Has joined the channel.

psnmissaka (Thu, 03 Aug 2017 09:01:35 GMT):
Hi I'm quite new to hyperledger and I'm kind of confused as to what kind of use cases the hyperledger fabric and sawtooth deals with. I feel like they are used for similar use cases. can someone explain it to me in simple way?

psnmissaka (Thu, 03 Aug 2017 09:08:47 GMT):
Will be posting this question in #general

ymonk (Thu, 03 Aug 2017 11:20:18 GMT):
Has joined the channel.

ymonk (Thu, 03 Aug 2017 11:23:38 GMT):
Hello all, my name is Yan Meng. I work for CSDN, the largest Chinese-speaking developer network. I would like to write an introductory article about Sawtooth Lake, and would ask some questions to the creator(s) of Sawtooth Lake. Who should I interview? Please kindly advise. Thanks in advance!

adamludvik (Thu, 03 Aug 2017 13:52:34 GMT):
@ymonk, @Dan Is the best person to contact for this.

AntonOyung (Thu, 03 Aug 2017 16:45:44 GMT):
How do you set up a validator network on separate machines? Do you use the -p and -s flags?

Dan (Thu, 03 Aug 2017 17:55:03 GMT):
@ymonk Delighted to help. I'll DM you my contact info.

Dan (Thu, 03 Aug 2017 18:08:11 GMT):
@AntonOyung asked about running on multiple machines. specifically asking about the rest API.... we would do better to call the REST API a REST Service or REST Process in this deployment context. The idea is that you run a validator process on each machine. ... And on each machine you connect one or more transaction processors (exactly those TPs that are required by the network) and a rest service to that validator process. (You could run a validator process without a Rest process but then there would be no way to submit queries or transactions to that validator. It would still participate on gossip though and receive transactions submitted to other validators.)

Dan (Thu, 03 Aug 2017 18:10:07 GMT):
To create a network of validators... Start one validator (and it's TPs, and Rest service). Then start the other machines & processes and point those validators at the first host.

Dan (Thu, 03 Aug 2017 18:10:38 GMT):
To point the other validators at the first host (or later at any current host), what is the setting?

rbuysse (Thu, 03 Aug 2017 18:26:26 GMT):
you have to set the peering mode and then then either a peer list or seed list

rbuysse (Thu, 03 Aug 2017 18:26:30 GMT):
`-P dynamic --seeds tcp://:`

rbuysse (Thu, 03 Aug 2017 18:26:30 GMT):
`-P static --peers tcp://:`

rbuysse (Thu, 03 Aug 2017 18:27:15 GMT):
`-P dynamic --seeds tcp://:`

Dan (Thu, 03 Aug 2017 18:50:23 GMT):
thanks @rbuysse . Is that clear @AntonOyung ?

AntonOyung (Thu, 03 Aug 2017 18:52:00 GMT):
I'm trying it out I'll let you know how it goes! Thanks!

adamludvik (Thu, 03 Aug 2017 19:06:08 GMT):
I am also helping @AntonOyung out in a dm

zac (Fri, 04 Aug 2017 03:17:49 GMT):
@Dan Technically clients could communicate with a validator without a REST API/service

zac (Fri, 04 Aug 2017 03:18:34 GMT):
The ZMQ client handlers the REST API is built on would work just fine

zac (Fri, 04 Aug 2017 03:18:58 GMT):
They are generally less documented and not as streamlined though

Dan (Fri, 04 Aug 2017 04:04:15 GMT):
No one likes a know-it-all, @zac :stuck_out_tongue_winking_eye:

wbsmith (Fri, 04 Aug 2017 06:00:58 GMT):
Has joined the channel.

ymonk (Fri, 04 Aug 2017 09:54:21 GMT):
@Dan @adamludvik Thank you so much!

zac (Fri, 04 Aug 2017 13:50:07 GMT):
:point_right: :astonished:

tommling (Fri, 04 Aug 2017 20:13:13 GMT):
Has joined the channel.

tommling (Fri, 04 Aug 2017 20:13:34 GMT):
Hi guys

tommling (Fri, 04 Aug 2017 20:13:40 GMT):
Happy friday /saturday

tommling (Fri, 04 Aug 2017 20:14:06 GMT):
Have a question about unit testing the transaction processor using the mock validator

tommling (Fri, 04 Aug 2017 20:14:06 GMT):
Have a question about unit testing the transaction processor using the mock validator. I get this wicked error when I try to setup a fixture

tommling (Fri, 04 Aug 2017 20:14:55 GMT):
I followed the guide pretty closely, but when I run the unit tests, (or even a single really simple test on IntKey), the process hangs.

tommling (Fri, 04 Aug 2017 20:15:44 GMT):
class TransactionProcessorTestCase(unittest.TestCase): @classmethod def setUpClass(cls): url = 'et0:4004' cls.validator = MockValidator() cls.validator.listen(url) if not cls.validator.register_processor(): raise Exception('Failed to register processor') cls.factory = None @classmethod def tearDownClass(cls): try: cls.validator.close() except AttributeError: pass

tommling (Fri, 04 Aug 2017 20:15:44 GMT):
```class TransactionProcessorTestCase(unittest.TestCase): @classmethod def setUpClass(cls): url = 'et0:4004' cls.validator = MockValidator() cls.validator.listen(url) if not cls.validator.register_processor(): raise Exception('Failed to register processor') cls.factory = None @classmethod def tearDownClass(cls): try: cls.validator.close() except AttributeError: pass ```

tommling (Fri, 04 Aug 2017 20:15:44 GMT):
```class TransactionProcessorTestCase(unittest.TestCase): @classmethod def setUpClass(cls): url = 'eth0:4004' cls.validator = MockValidator() cls.validator.listen(url) if not cls.validator.register_processor(): raise Exception('Failed to register processor') cls.factory = None @classmethod def tearDownClass(cls): try: cls.validator.close() except AttributeError: pass ```

tommling (Fri, 04 Aug 2017 20:16:09 GMT):
Where it says URL = 'eth0:4004' (i know there is a typo, haha i fixxed that). same problem

tommling (Fri, 04 Aug 2017 20:16:09 GMT):
Where it says `url= 'eth0:4004'` (i know there is a typo, haha i fixxed that). same problem

tommling (Fri, 04 Aug 2017 20:16:09 GMT):
Where it says `url= 'eth0:4004'`

tommling (Fri, 04 Aug 2017 20:19:58 GMT):
It throws back a wicked error from zmq/backend/cython/socket.pyx

tommling (Fri, 04 Aug 2017 20:20:07 GMT):
zmq.error.ZMQError: Invalid argument

tommling (Fri, 04 Aug 2017 20:20:07 GMT):
```

tommling (Fri, 04 Aug 2017 20:20:07 GMT):
```====================================================================== ERROR: setUpClass (tests.tests_intkey.TestIntkey) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/thomas/Documents/core/tests/tests_intkey.py", line 24, in setUpClass super().setUpClass() File "/home/thomas/Documents/core/tests/test_case_tp.py", line 12, in setUpClass cls.validator.listen(url) File "/home/thomas/Documents/core/venv/lib/python3.5/site-packages/sawtooth_processor_test/mock_validator.py", line 90, in listen self._socket.bind(self._url) File "zmq/backend/cython/socket.pyx", line 495, in zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5653) File "zmq/backend/cython/checkrc.pxd", line 25, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:10014) zmq.error.ZMQError: Invalid argument ```

tommling (Fri, 04 Aug 2017 20:20:36 GMT):
When I change it to url = 'tcp://127.0.0.1:4004'

tommling (Fri, 04 Aug 2017 20:20:42 GMT):
the process hangs

tommling (Fri, 04 Aug 2017 20:20:52 GMT):
Any ideas??

tommling (Fri, 04 Aug 2017 20:21:59 GMT):
Sorry if this is the wrong place to bring it up, I would submit an issue, but that might be unnecessary if its something simple like not running zmq in the background or somethign ;3

chrisconway (Fri, 04 Aug 2017 20:38:38 GMT):
where are the instructions on how to deploy a custom transaction family to a custom transaction processor?

tommling (Fri, 04 Aug 2017 20:41:24 GMT):
http://intelledger.github.io/app_developers_guide/testing.html#

tommling (Fri, 04 Aug 2017 20:42:28 GMT):
Albeit, I have since devolved into getting the stock tests to work, in this case the intkey family ones

boydjohnson (Fri, 04 Aug 2017 21:46:30 GMT):
Hi @tommling This is definitely the right place to ask. Just so I understand, you are running this in docker?

smagne (Fri, 04 Aug 2017 23:53:35 GMT):
Hello I want to override the sawtooth transaction validator

smagne (Sat, 05 Aug 2017 00:41:45 GMT):
I need to override the transaction family

Arun.S.M (Sat, 05 Aug 2017 18:20:44 GMT):
Has joined the channel.

randombishop (Mon, 07 Aug 2017 11:02:58 GMT):
Hi, a general question please : Would sawtooth be suitable to implement a cryptocurrency with PoET consensus and what would be potential vulnerabilities of PoET in comparison with PoW if money is at stake ?

smagne (Mon, 07 Aug 2017 11:56:52 GMT):
Hello, I need to override the transaction processor is that possible? Could you give me steps to do it?

zac (Mon, 07 Aug 2017 12:52:52 GMT):
@smagne What does "override" mean?

zac (Mon, 07 Aug 2017 12:54:15 GMT):
@randombishop I can't think of any reason you wouldn't be able to build a cryptocurrency on Sawtooth. That said, I don't think anyone has done much research into that particular use case.

zac (Mon, 07 Aug 2017 12:56:38 GMT):
One thing to keep in mind is that "mining" gets very cheap with PoET, so you would probably need to come up with a new concept for distributing the currency. I don't know of any particular vulnerabilities, but I am not very familiar with the internals of PoET.

zac (Mon, 07 Aug 2017 12:58:22 GMT):
@chrisconway http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html

zac (Mon, 07 Aug 2017 12:58:45 GMT):
That is the tutorial for writing a Tutorial in Python using the SDK

zac (Mon, 07 Aug 2017 12:58:45 GMT):
That is the tutorial for writing a Transaction Processor in Python using the SDK

zac (Mon, 07 Aug 2017 13:00:27 GMT):
There are similar tutorials in Java and JavaScript. There are also Go and C++ SDKs, but no tutorials written yet.

smagne (Mon, 07 Aug 2017 13:04:52 GMT):
Hey, @zac thanks for the answer. I want to define a custom transaction processor if that's possible

smagne (Mon, 07 Aug 2017 13:05:31 GMT):
I was reviewing this links but I don't find how to change it http://intelledger.github.io/app_developers_guide/docker.html#settings-transaction-family-usage http://intelledger.github.io/transaction_family_specifications/settings_transaction_family.html

zac (Mon, 07 Aug 2017 13:07:58 GMT):
You are probably going to want the same link I gave to Chris above (http://intelledger.github.io/_autogen/sdk_TP_tutorial_python.html)

zac (Mon, 07 Aug 2017 13:08:53 GMT):
The expectation is that many app developers will be writing their own Transaction Processors, so you don't have to overwrite any existing ones, unless you are looking for a starting point.

zac (Mon, 07 Aug 2017 13:10:59 GMT):
If you do want to start by mucking about with an existing TP, probably IntKey is more appropriate than Settings. It's a simple example TP designed exactly for developers to muck about. http://intelledger.github.io/transaction_family_specifications/integerkey_transaction_family.html https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_python

zac (Mon, 07 Aug 2017 13:11:48 GMT):
(There are examples of IntKey in all of our SDK languages as well, and TP tutorials in Java and JavaScript as well as Python)

smagne (Mon, 07 Aug 2017 13:14:54 GMT):
Great thanks @zac and how I change or set the transaction processor in my docker instance? what commands should I use to change the transaction processor

zac (Mon, 07 Aug 2017 13:30:51 GMT):
I don't know enough about messing around with Docker. @adamludvik ?

Dan (Mon, 07 Aug 2017 14:09:30 GMT):
I declare "White Wine Spritzer" by this Ned Flanders tribute band to be the song of the week: https://www.youtube.com/watch?v=2BEvh6HSQc0

boydjohnson (Mon, 07 Aug 2017 14:36:39 GMT):
@smagne Once you have a running container it is impossible to change the command. Which docker image are you using? I would suggest using docker-compose and a docker-compose.yaml file.

smagne (Mon, 07 Aug 2017 15:03:09 GMT):
Hi @boydjohnson I'm using a custom docker-compose file so I'm able to change settings if needed.

tommling (Mon, 07 Aug 2017 15:29:40 GMT):
@boydjohnson No I am on ubuntu right now, but I have the docker setup installed along side

boydjohnson (Mon, 07 Aug 2017 15:51:45 GMT):
@tommling I would use a docker-compose setup to use the mock validator like in https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_intkey_smoke_python.yaml

boydjohnson (Mon, 07 Aug 2017 15:52:29 GMT):
@smagne With the custom docker-compose file, change the `entrypoint:` value.

tommling (Mon, 07 Aug 2017 16:36:40 GMT):
@boydjohnson Thanks for that, when I run the integration test it asks for an `ISOLATION_ID` and `SAWTOOTH_CORE` environment variables

tommling (Mon, 07 Aug 2017 16:37:06 GMT):
docker-compose cannot find the sawtooth-validator image

tommling (Mon, 07 Aug 2017 16:37:26 GMT):
Sort of confused where to point it

boydjohnson (Mon, 07 Aug 2017 16:38:34 GMT):
there is a `bin/run_docker_test` script in the sawtooth-core directory. The tests that we run using docker-compose rely on `bin/build_all -l python` being run first (if you are only using python components).

boydjohnson (Mon, 07 Aug 2017 16:39:09 GMT):
the `run_docker_test` script sets up `ISOLATION_ID` and `SAWTOOTH_CORE`.

randombishop (Mon, 07 Aug 2017 16:40:18 GMT):
@zac Thanks again for your answers

tommling (Mon, 07 Aug 2017 16:48:53 GMT):
Thanks @boydjohnson ^^

boydjohnson (Mon, 07 Aug 2017 16:49:08 GMT):
No problem, @tommling

mavstronaut (Mon, 07 Aug 2017 19:36:54 GMT):
Has joined the channel.

smagne (Mon, 07 Aug 2017 22:36:04 GMT):
Hi @boydjohnson I don't understand how should I changed the entrypoint value

EmilianoDAvack (Tue, 08 Aug 2017 07:09:34 GMT):
Has joined the channel.

smagne (Tue, 08 Aug 2017 16:11:01 GMT):
Hello channel, I'm still trying to set a custom transaction processor to my docker environment

smagne (Tue, 08 Aug 2017 16:11:01 GMT):
Hello channel, I'm still trying to set a custom transaction processor to my docker environment. I'm using Javascript SDK and I have custom XO and intkey files

AntonOyung (Tue, 08 Aug 2017 16:44:21 GMT):
Could someone explain the purpose of the javascript XO tp? Could it be used to create a simple web UI to play the game?

zac (Tue, 08 Aug 2017 16:46:49 GMT):
The purpose is just to be an example of how to write a TP in JavaScript for something a little more complex than IntKey

zac (Tue, 08 Aug 2017 16:47:00 GMT):
The Xo CLI client can use it

zac (Tue, 08 Aug 2017 16:47:11 GMT):
You could potentially build a web front-end if you wanted

zac (Tue, 08 Aug 2017 16:47:20 GMT):
But you could do that with any of the Xo TPs

pschwarz (Tue, 08 Aug 2017 19:17:11 GMT):
@smagne are you using the XO and intkey files as starting points?

smagne (Tue, 08 Aug 2017 19:50:55 GMT):
Hi @pschwarz yes I'm using the XO and intKey as starting points, but I want to know how to set my transaction processor

pschwarz (Tue, 08 Aug 2017 19:51:20 GMT):
How are you launching your validator? With the example docker compose file?

smagne (Tue, 08 Aug 2017 20:08:10 GMT):

Message Attachments

smagne (Tue, 08 Aug 2017 20:08:10 GMT):

Message Attachments

smagne (Tue, 08 Aug 2017 20:08:10 GMT):

Message Attachments

smagne (Tue, 08 Aug 2017 20:08:10 GMT):

Message Attachments

pschwarz (Tue, 08 Aug 2017 20:31:28 GMT):
So, it looks like the component port for the validator is exposed, so on your local machine, you should be able to start your modified transaction processor and point it at `tcp://localhost:4004`

pschwarz (Tue, 08 Aug 2017 20:31:59 GMT):
After having done a `docker-compose -f up`, of course

mfford (Wed, 09 Aug 2017 16:16:44 GMT):
The Hyperledger Sawtooth Technical Forum for Thursday, August 10th will be cancelled this week

Dan (Wed, 09 Aug 2017 18:32:24 GMT):
User User_1 added by Dan.

maurosabi (Wed, 09 Aug 2017 19:19:47 GMT):
Has joined the channel.

maurosabi (Wed, 09 Aug 2017 19:20:20 GMT):
Hi guys, I'm doing some research about consensus algorithms for a University topic I'm working on. Do you know where can I find the basics of Sawtooth algorithm? I'm not talking about the code, just a detailed description on how it works

boydjohnson (Wed, 09 Aug 2017 19:25:39 GMT):
Hi @maurosabi sawtooth uses PoET consensus. Check out these docs: http://intelledger.github.io/0.8/architecture/poet.html

rock_martin (Thu, 10 Aug 2017 04:09:13 GMT):
Has joined the channel.

GongZhang (Thu, 10 Aug 2017 07:12:36 GMT):
Has joined the channel.

randombishop (Thu, 10 Aug 2017 11:10:08 GMT):
Hi, two questions please :

randombishop (Thu, 10 Aug 2017 11:12:43 GMT):
1. After installing sawtooth on ubuntu, the REST API works fine when called from localhost, but seems unaccessible from outside the machine, even though port 8080 is open, is this the expected behaviour ? And is there a way to configure it to accept connections from anywhere ?

randombishop (Thu, 10 Aug 2017 11:14:57 GMT):
2. I installed apache reverse proxy to fix this problem, which works fine now, but strangely, from time to time, I get "Failed to load resource: the server responded with a status of 504 (Gateway Timeout)" ? Has anyone already experienced such problem ?

randombishop (Thu, 10 Aug 2017 11:15:02 GMT):
Thanks in advance !

rock_martin (Thu, 10 Aug 2017 12:23:18 GMT):
can anyone help me out for sawtooth as I want to see the supply chain demo under sawtooth. Where are the chaincodes and how to set it for same use case. I read the docs related that. Thanks in advance

mtgran (Thu, 10 Aug 2017 13:50:27 GMT):
Has joined the channel.

pschwarz (Thu, 10 Aug 2017 14:16:58 GMT):
@randombishop you need to call it with the bind parameter: `--bind 0.0.0.0:8080`, otherwise, it only responds to requests from localhost.

zac (Thu, 10 Aug 2017 14:19:58 GMT):
@randombishop When I was working on setting up an Apache proxy for auth purposes, I ran into the same 504 error

zac (Thu, 10 Aug 2017 14:20:22 GMT):
It only popped occasionally, and only when I first started up the proxy

zac (Thu, 10 Aug 2017 14:20:40 GMT):
After sending a few requests it would go away and not come back until the next restart

zac (Thu, 10 Aug 2017 14:21:06 GMT):
It was easy enough to ignore, and I wasn't confident in my Apache config, so I never got to the bottom of it

Dan (Thu, 10 Aug 2017 14:43:40 GMT):
Hi @rock_martin, that code was against a much earlier version of sawtooth, so we elected not to commit it to the repo. Instead we have a newer supplychain transaction family. You can find docs/code on that in the repo: ```./docs/source/examples/supplychain ./docs/source/examples/supplychain/supplychain_transaction_family.rst ./families/supplychain```

randombishop (Thu, 10 Aug 2017 17:18:19 GMT):
i=7 ; @zac thanks for help number i ; i++

randombishop (Thu, 10 Aug 2017 17:18:43 GMT):
thanks to @pschwarz as well !

zac (Thu, 10 Aug 2017 17:19:32 GMT):
Not sure I helped much. I am curious if it is something with the REST API that is causing that 504. Let me know if you get to the bottom of it.

zac (Thu, 10 Aug 2017 18:25:59 GMT):
So @AkarshaMahadeva was asking me about switching his custom Transaction Processor from `"csv-utf8"` to `"json"`, and what was involved in that

zac (Thu, 10 Aug 2017 18:26:09 GMT):
Figured we'd take the conversation public

zac (Thu, 10 Aug 2017 18:27:54 GMT):
The first thing is just that that `payload_encoding` string in the `TransactionHeader` is effectively arbitray

zac (Thu, 10 Aug 2017 18:28:23 GMT):
It's something that your Transaction Processor will use to determine which handler should handle the payload

zac (Thu, 10 Aug 2017 18:29:04 GMT):
So you could have both a CSV handler, and a JSON handler in the same processor, and the validator will send payloads to the appropriate one

zac (Thu, 10 Aug 2017 18:30:16 GMT):
In terms of the mechanics of the actual decoding, you can use JSON

zac (Thu, 10 Aug 2017 18:30:16 GMT):
In terms of the mechanics of the actual encoding/decoding, you can use JSON

zac (Thu, 10 Aug 2017 18:31:13 GMT):
I'm wrote a simple JS transaction handler which uses JSON.

zac (Thu, 10 Aug 2017 18:31:36 GMT):
Just `json.dumps` before you save it, and `json.loads` after you fetch it

zac (Thu, 10 Aug 2017 18:32:41 GMT):
You should sort the keys though. Make sure the `json.dumps` output is always identical.

AkarshaMahadeva (Thu, 10 Aug 2017 18:57:20 GMT):
So that essentially means I donot need to change my encoding scheme in the handler? and payload encoding of client?

zac (Thu, 10 Aug 2017 18:58:32 GMT):
You don't _need_ to change the `payload_encoding`, no

zac (Thu, 10 Aug 2017 18:58:41 GMT):
You probably should, just to avoid confusion

zac (Thu, 10 Aug 2017 18:59:27 GMT):
But the `payload_encoding` could be `"foobar"`, and as long as you had a handler to handle it, it would work fine, regardless of what the actual encoding was

zac (Thu, 10 Aug 2017 19:00:44 GMT):
what is really important is that the the handler will be able to correctly _decode_ what the client _encoded_

zac (Thu, 10 Aug 2017 19:03:55 GMT):
so if your client is sending _csv_ and your handler tries to `json.dumps` it, it won't work obviously

AkarshaMahadeva (Thu, 10 Aug 2017 19:04:54 GMT):
So the data in payload should be json

AkarshaMahadeva (Thu, 10 Aug 2017 19:05:06 GMT):
?

zac (Thu, 10 Aug 2017 19:05:29 GMT):
yes

zac (Thu, 10 Aug 2017 19:05:38 GMT):
(byte-encoded JSON)

zac (Thu, 10 Aug 2017 19:08:37 GMT):
I believe Python's `json.loads` and `json.dumps` will automatically byte encode/decode it though

zac (Thu, 10 Aug 2017 19:09:00 GMT):
In JavaScript you have to convert it from a string to raw bytes

pschwarz (Thu, 10 Aug 2017 19:34:31 GMT):
I think you still need to call `.encode()` on the output of `json.dumps`. I pretty sure it produces a string, not bytes

zac (Thu, 10 Aug 2017 19:41:07 GMT):
_dammit_

zac (Thu, 10 Aug 2017 19:41:15 GMT):
well do the thing that makes bytes

zac (Thu, 10 Aug 2017 19:43:00 GMT):
I guess you don't need to worry about sorting the keys either

zac (Thu, 10 Aug 2017 19:43:17 GMT):
as far as transaction payloads go at least

AntonOyung (Thu, 10 Aug 2017 20:33:29 GMT):
in xo_client.py, they create a TransactionHeader() and Transaction() object. If I'm trying to do the equivalent but in javascript as a web app that makes the http requests, would I use the encoders.js TransactionEncoder to create the equivalent transaction headers/ transactions?

zac (Thu, 10 Aug 2017 20:36:15 GMT):
yes

zac (Thu, 10 Aug 2017 20:36:32 GMT):
you don't have to manually make the header with encoders.js though

zac (Thu, 10 Aug 2017 20:36:37 GMT):
that is handled automatically

AntonOyung (Thu, 10 Aug 2017 20:38:20 GMT):
Could you elaborate?

AntonOyung (Thu, 10 Aug 2017 20:38:37 GMT):
in xo_client they make it manually right?

zac (Thu, 10 Aug 2017 20:39:09 GMT):
probably

zac (Thu, 10 Aug 2017 20:39:45 GMT):
the equivalent Python functionality was only merged pretty recently

zac (Thu, 10 Aug 2017 20:39:52 GMT):
the xo client predates it

zac (Thu, 10 Aug 2017 20:40:21 GMT):
yes, just checked, it is done manually

zac (Thu, 10 Aug 2017 20:41:05 GMT):
`encoders.js` (and more recently, `encoding.py`) are conveniences

zac (Thu, 10 Aug 2017 20:41:22 GMT):
you _could_ do it manually in either language

AntonOyung (Thu, 10 Aug 2017 20:42:13 GMT):
what is the alternative?

zac (Thu, 10 Aug 2017 20:43:19 GMT):
basically, there are two steps with the encoders: 1. Create a `TransactionEncoder` with your private key and any header values you want to use on every Transaction 2. User `create` with your Transaction payload to make a fully finished Transaction

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encode = obj => Buffer.from(JSON.stringify(obj, Object.keys(obj).sort())) const encoderSettings = { batcherPubkey: SUE.pub, inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { BatchEncoder, TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encode = obj => Buffer.from(JSON.stringify(obj, Object.keys(obj).sort())) const encoderSettings = { batcherPubkey: SUE.pub, inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { BatchEncoder, TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encode = obj => Buffer.from(JSON.stringify(obj, Object.keys(obj).sort())) const encoderSettings = { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { BatchEncoder, TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encode = obj => Buffer.from(JSON.stringify(obj)) const encoderSettings = { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { BatchEncoder, TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encoderSettings = { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode = obj => Buffer.from(JSON.stringify(obj)) } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encoderSettings = { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode = obj => Buffer.from(JSON.stringify(obj)) } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn = sueEncoder.create({action: 'create', record: 'foo'}) ```

zac (Thu, 10 Aug 2017 20:45:28 GMT):
I recently did this for a test script in JS. It looks like this: ``` const { TransactionEncoder } = require('sawtooth-sdk') const FAMILY = 'transfer-chain' const PREFIX = '19d832' const SUE = { priv: 'c0c375e09a2451a6b1caba020833514b733d9e074e8c3a4a8ccfcaa0006c0329', pub: '0214245560fcf64eeed0686c9c287daef114c97d646339f71c9029d4dd11ef9e3d' } const encoderSettings = { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: '0.0', payloadEncoding: 'application/json', payloadEncoder: encode = obj => Buffer.from(JSON.stringify(obj)) } const sueEncoder = new TransactionEncoder(SUE.priv, encoderSettings) const sueTxn1 = sueEncoder.create({action: 'create', record: 'foo'}) const sueTxn2 = sueEncoder.create({action: 'create', record: 'bar'}) ```

AntonOyung (Thu, 10 Aug 2017 20:46:39 GMT):
So this is what I _should_ do?

zac (Thu, 10 Aug 2017 20:47:38 GMT):
The best example of doing it manually, is just the SDK itself: https://github.com/hyperledger/sawtooth-core/blob/master/sdk/javascript/client/encoders.js#L111

zac (Thu, 10 Aug 2017 20:48:55 GMT):
There is a fair amount of boiler plate in the example I posted

zac (Thu, 10 Aug 2017 20:49:02 GMT):
But that is all one time set up

zac (Thu, 10 Aug 2017 20:49:31 GMT):
from here on out I can just bang on that `create` message and build as many Transactions as I like

zac (Thu, 10 Aug 2017 20:49:31 GMT):
from here on out I can just bang on that `create` method and build as many Transactions as I like

zac (Thu, 10 Aug 2017 20:51:06 GMT):
Doing the same thing manually would require about as much work as you see there _for every Transaction_

zac (Thu, 10 Aug 2017 20:51:37 GMT):
I also don't have to worry about how to use Protobufs, or hash my payload, or generate a public key.

zac (Thu, 10 Aug 2017 20:52:01 GMT):
**I** would prefer the SDK.

AntonOyung (Thu, 10 Aug 2017 20:59:40 GMT):
so in my send_xo_txn equivalent I would first create and Transactionencoder outside and then call create in my send_xo_txn and then send that

AntonOyung (Thu, 10 Aug 2017 21:00:23 GMT):
as my data in my ajax post

AntonOyung (Thu, 10 Aug 2017 21:08:13 GMT):
?

zac (Fri, 11 Aug 2017 10:33:03 GMT):
The way the `XoClient` is written, it gets instantiated once per request essentially

zac (Fri, 11 Aug 2017 10:34:21 GMT):
So, you could build your encoder during `__init__` and save it to `_encoder` or something, but I don't think it will actually make much of a difference in this case.

zac (Fri, 11 Aug 2017 10:45:40 GMT):
So you could do it all in `_send_xo_txn` too. Something like: ``` transaction = TransactionEncoder( self._private_key, inputs=[address], outputs=[address], family_name='xo', family_version='1.0', payload_encoding='csv-utf8' ).create(payload) batcher = BatchEncoder(self._private_key) batch = batcher.create(transaction) batch_id = batch.header_signature batch_list = batcher.encode(batch) ```

zac (Fri, 11 Aug 2017 10:46:10 GMT):
(Not that in the above example, batch_list is already serialized as bytes)

zac (Fri, 11 Aug 2017 10:46:10 GMT):
(Note that in the above example, batch_list is already serialized as bytes)

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, batch_list is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, `batch_list` is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, unlike in _xo_client.py_, `batch_list` is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, unlike in `xo_client.py`, `batch_list` is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, unlike in _xo\_client.py_, `batch_list` is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:46:10 GMT):
_(Note that in the above example, unlike in `xo_client.py`, `batch_list` is already serialized as bytes)_

zac (Fri, 11 Aug 2017 10:49:58 GMT):
In this particular case, since you can reuse the encoder, it's only saving you about 10 lines of code, but more importantly you never have to touch a protobuf, sign or hash anything, or generate a public key

zac (Fri, 11 Aug 2017 10:49:58 GMT):
In this particular case, since you can't reuse the encoder, it's only saving you about 10 lines of code, but more importantly you never have to touch a protobuf, sign or hash anything, or generate a public key

zac (Fri, 11 Aug 2017 10:49:58 GMT):
In this particular case, since you can't reuse the encoder, it's only saving you about 10 lines of code. But more important than line count, using the encoder means you never have to touch a protobuf, sign or hash anything, or generate a public key.

Dan (Fri, 11 Aug 2017 16:13:36 GMT):
@FlyingTiger looks like you are all set on https://github.com/hyperledger/sawtooth-core/pull/729

Dan (Fri, 11 Aug 2017 19:49:17 GMT):
Need one more review on https://github.com/hyperledger/sawtooth-core/pull/748

Dan (Fri, 11 Aug 2017 19:50:21 GMT):
@zac @boydjohnson @jsmitchell @FlyingTiger @cianx ^

zac (Fri, 11 Aug 2017 19:57:34 GMT):
@pschwarz Approved

AntonOyung (Fri, 11 Aug 2017 21:27:17 GMT):
does anyone know how I can come up with the address zac was mentioning ?

pschwarz (Fri, 11 Aug 2017 21:33:55 GMT):
For XO, you'll find it here: https://intelledger.github.io/transaction_family_specifications/xo_transaction_family.html#addressing

AntonOyung (Fri, 11 Aug 2017 21:35:06 GMT):
is there a javascript equivalent ?

Dan (Sat, 12 Aug 2017 14:18:56 GMT):
@AntonOyung would you mind writing up everything that was unclear or difficult so we can make some improvements?

zac (Sat, 12 Aug 2017 17:06:05 GMT):
@AntonOyung The `address` in the `xo_client.py` code I modified is set earlier in that file here: https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/xo_python/sawtooth_xo/xo_client.py#L153

zac (Sat, 12 Aug 2017 17:08:02 GMT):
In terms of how you come up with an address generally, it is specific to the transaction family. Peter linked to where Xo's addressing scheme is explained.

zac (Sat, 12 Aug 2017 17:14:11 GMT):
A JavaScript example for generating the address for "mygame" from the `node` REPL would look like this: ``` > const { createHash } = require('crypto') undefined > createHash('sha512').update('xo').digest('hex').slice(0, 6) + ... createHash('sha512').update('mygame').digest('hex').slice(0, 64) '5b7349700e158b598043efd6d7610345a75a00b22ac14c9278db53f586179a92b72fbd' ```

zac (Sat, 12 Aug 2017 17:18:13 GMT):
Notice how it produces the exact same address as the Python example. What's really important here is the steps: ``` 1. Create a SHA-512 hash of the string "xo" 1b. Format that hash as a hex string 1c. Take the first 6 characters of that string 2. Create a SHA-512 hash of the string "mygame" 2b. Format that hash as a hex string 2c. Take the first 64 characters of that string 3. Concatenate these to strings into one 70 character address ```

zac (Sat, 12 Aug 2017 17:18:13 GMT):
Notice how it produces the exact same address as the Python example. What's really important here is the steps: ``` 1. Create a SHA-512 hash of the string "xo" 1b. Format that hash as a hex string 1c. Take the first 6 characters of that string 2. Create a SHA-512 hash of the string "mygame" 2b. Format that hash as a hex string 2c. Take the first 64 characters of that string 3. Concatenate these two strings into one 70 character address ```

zac (Sat, 12 Aug 2017 17:18:13 GMT):
Notice how it produces the exact same address as the Python example. What's really important here is the steps: ``` 1. Create a SHA-512 hash of the string "xo" 1b. Format that hash as a hex string 1c. Take the first 6 characters of that string 2. Create a SHA-512 hash of the string "mygame" 2b. Format that hash as a hex string 2c. Take the first 64 characters of that string 3. Concatenate these two strings into one 70 character hex address ```

zac (Sat, 12 Aug 2017 17:21:00 GMT):
Transaction Families can use any addressing scheme they like, so long as it produces 70 character hex addresses, and the first six characters are a prefix specific to the transaction family.

zac (Sat, 12 Aug 2017 17:23:17 GMT):
(Also, you should only "break up" the address in even-number chunks. Don't worry about the reasons why right now, but there is a reason the transaction family prefix is 6 characters, and not 5 or 7)

zac (Sat, 12 Aug 2017 17:23:17 GMT):
(Also, you should only "break up" the address in even-number chunks. Don't worry about why right now, but there is a reason the transaction family prefix is 6 characters, and not 5 or 7)

zac (Sat, 12 Aug 2017 17:23:45 GMT):
These are the rules for addressing in the Xo family though. And they work well for Xo's purposes.

zac (Sat, 12 Aug 2017 17:23:45 GMT):
What I listed above are the rules for addressing the Xo family happens to use, and they work well for Xo's purposes.

randombishop (Sun, 13 Aug 2017 23:44:35 GMT):
Hi all ! Question of the day please : When looking at debug messages in my transaction processor, i noticed that "apply" function is being called twice for every transaction. I guess it is normal behaviour because it actually works fine and state is only changed once, but I just wanted to know why and maybe understand more about this "apply" function. Tks !

Dan (Mon, 14 Aug 2017 14:45:16 GMT):
@zac can you see if your review comments are addressed for https://github.com/hyperledger/sawtooth-core/pull/718? I'd like to get this PR merged soon. Between vacations and different volunteer owners this PR has been _maturing_ for longer than typical.

zac (Mon, 14 Aug 2017 14:50:39 GMT):
Taking a look . . .

Dan (Mon, 14 Aug 2017 14:56:08 GMT):
muchas gracias

AntonOyung (Mon, 14 Aug 2017 16:51:44 GMT):
Thanks @zac for explaining how to write the address! @Dan I would be happy to compile a list of things that I found difficult to understand

AntonOyung (Mon, 14 Aug 2017 16:55:19 GMT):
For the payload, xo_client.py does `payload = ",".join([name, action, str(space)]).encode()` where they join and then encode, however if I am using the Encoder.js `createEncoded(payload)` method, do I still need to input the payload encoded already? or is `var payload = name + "," + action + "," + space;` sufficient?

agunde (Mon, 14 Aug 2017 17:03:01 GMT):
@randombishop The first apply is on block publishing. And then it happens again on block validation. So yes, two "apply"s are normal.

randombishop (Mon, 14 Aug 2017 17:09:03 GMT):
Tks @agunde Makes sense

zac (Mon, 14 Aug 2017 17:14:41 GMT):
@AntonOyung Lots of things are being encoded here

AntonOyung (Mon, 14 Aug 2017 17:15:30 GMT):
```_send_xo_txn: function(name, action, space="", wait = null, auth_user = null, auth_password = null) { var payload = name + "," + action + "," + space; var address = this._get_address(name); TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, inputs=[address], outputs=[address], family_name='xo', family_version='1.0', payload_encoding='csv-utf8' ); BatchEncoder = new Encoder.BatchEncoder(this._privateKey); var transaction = TxnEncoder.createEncoded(payload); var batch = BatchEncoder.createEncoded(transaction); response = this._send_request( "batches", batch, 'application/octet-stream', auth_user = auth_user, auth_password = auth_password ); return response; } ```

zac (Mon, 14 Aug 2017 17:15:39 GMT):
The payload is encoded, the TransactionHeader is encoded, then the Transaction _may_ be encoded, or it might get wrapped in a Batch which is encoded (and also has an encoded BatchHeader)

zac (Mon, 14 Aug 2017 17:16:18 GMT):
So the answer to your question is actually dependent on how you set up your encoder

zac (Mon, 14 Aug 2017 17:16:18 GMT):
So the answer to your question is actually dependent on how you set up your TransactionEncoder

zac (Mon, 14 Aug 2017 17:16:18 GMT):
So the answer to your question is actually dependent on how you set up your `TransactionEncoder`

zac (Mon, 14 Aug 2017 17:17:18 GMT):
if you instantiated it with a `payloadEncoder`, then it could do the work of encoding the _payload_

zac (Mon, 14 Aug 2017 17:17:45 GMT):
If not, the payload must be passed into `createEncoded` as encoded bytes

zac (Mon, 14 Aug 2017 17:18:29 GMT):
But the "encoded" in `createEncoded` is referring to the _transaction_, not the payload

zac (Mon, 14 Aug 2017 17:18:47 GMT):
(or the Batch for `BatchEncoder.createEncoded`)

zac (Mon, 14 Aug 2017 17:19:40 GMT):
Make sure you review the docstrings for those methods, particularly when it comes to use of the word "encoded"

AntonOyung (Mon, 14 Aug 2017 17:26:07 GMT):
In encoder.js they do instantiate a payloadEncoder and encode the payload

AntonOyung (Mon, 14 Aug 2017 17:28:39 GMT):
so I think it is being done correctly

AntonOyung (Mon, 14 Aug 2017 17:29:05 GMT):
I just realized I am not passing in the headers into createEncoded though

zac (Mon, 14 Aug 2017 17:29:42 GMT):
You mean `x => x`?

zac (Mon, 14 Aug 2017 17:29:58 GMT):
That is just an identity function, so `create` has something to call

zac (Mon, 14 Aug 2017 17:30:05 GMT):
it won't encode anything

zac (Mon, 14 Aug 2017 17:30:14 GMT):
`x` must already be encoded

AntonOyung (Mon, 14 Aug 2017 17:32:21 GMT):
How can I encode it myself ?

zac (Mon, 14 Aug 2017 17:39:59 GMT):
However you want with the payload

zac (Mon, 14 Aug 2017 17:40:44 GMT):
A simple thing to do in Node.js is just to use `Buffer.from`

AntonOyung (Mon, 14 Aug 2017 17:45:16 GMT):
So I can jsut do payload = Buffer.from(name + "," + action + "," + space)

AntonOyung (Mon, 14 Aug 2017 17:45:19 GMT):
adn then pass it in ?

zac (Mon, 14 Aug 2017 17:53:09 GMT):
yep

zac (Mon, 14 Aug 2017 17:54:29 GMT):
also, use `TransactionEncoder.create`, not `createEncoded`. That will encode your Transaction in a TransactionList, which you only want if you are transmitting it to be batched somewhere else. http://intelledger.github.io/_autogen/sdk_submit_tutorial_js.html#optional-encode-the-transaction-s

AntonOyung (Mon, 14 Aug 2017 17:57:27 GMT):
and `BatchEncoder.create(transaction)` too i assume ?

AntonOyung (Mon, 14 Aug 2017 18:18:49 GMT):
I was able to submit a post request by doing `BatchEncoder.createEncoded(txn)` however the response I'm getting says the status of my block is "pending" instead of committed. Does this mean the format of my transaction wasn't correct?

zac (Mon, 14 Aug 2017 18:27:50 GMT):
for the Batch you want it encoded

zac (Mon, 14 Aug 2017 18:28:14 GMT):
The reason Batches and Transactions might be encoded is to transmit them, usually over HTTP

zac (Mon, 14 Aug 2017 18:28:47 GMT):
The Transaction, you are not transmitting, you are just piping directly into a Batch

zac (Mon, 14 Aug 2017 18:29:12 GMT):
The Batch you are submitting over HTTP, so that needed to be bytes

AntonOyung (Mon, 14 Aug 2017 18:29:29 GMT):
Sorry I mispoke, I am submitted a batch with my post request

zac (Mon, 14 Aug 2017 18:29:37 GMT):
headers and payloads always need to be bytes for other reasons

AntonOyung (Mon, 14 Aug 2017 18:29:55 GMT):
```request.post({ url: full_url, body: data, headers: {'Content-Type' : 'application/octet-stream'} }, (err, response) => { if (err) return console.log(err); console.log(response.body); } ```

AntonOyung (Mon, 14 Aug 2017 18:30:21 GMT):
this is my request which follows the structure from the link you posted

AntonOyung (Mon, 14 Aug 2017 19:01:25 GMT):
I am able to submit the request but the changes aren't being committed

AntonOyung (Mon, 14 Aug 2017 19:01:43 GMT):
my validator output looks like ```[18:58:32.114 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 847 bytes [18:58:32.122 DEBUG executor] no transaction processors registered for processor type : : [18:58:32.125 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'a9df596c4bb846a9' [18:58:32.126 INFO executor] Waiting for transaction processor (, , )```

AntonOyung (Mon, 14 Aug 2017 19:02:09 GMT):
does this mean the transaction processor isn't being specified properly?

boydjohnson (Mon, 14 Aug 2017 19:05:30 GMT):
Yeah, it looks like the family, version, and encoding in the TransactionHeader is not being set.

AntonOyung (Mon, 14 Aug 2017 19:13:08 GMT):
the constructor for the encoder looks liek this ```constructor (privateKey, template = {}) { this._privateKey = privateKey this._publicKey = signer.getPublicKey(privateKey) this._payloadEncoder = template.payloadEncoder || (x => x) // TransactionHeader defaults can be modified after instantiation this.batcherPubkey = template.batcherPubkey || this._publicKey this.familyName = template.familyName || '' this.familyVersion = template.familyVersion || '' this.inputs = template.inputs || [] this.outputs = template.outputs || [] this.payloadEncoding = template.payloadEncoding || '' } ```

AntonOyung (Mon, 14 Aug 2017 19:13:28 GMT):
and I'm passing in this: ```TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, inputs=[address], outputs=[address], familyName='xo', familyVersion='1.0', payloadEncoding='csv-utf8' );```

AntonOyung (Mon, 14 Aug 2017 19:14:24 GMT):
so I thought i was properly setting it

AntonOyung (Mon, 14 Aug 2017 19:17:12 GMT):
I just modified the values after instantiating it and now I'm able to submit the request however it says that the batch is invalid

AntonOyung (Mon, 14 Aug 2017 19:17:53 GMT):
```[19:15:59.840 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 860 bytes [19:15:59.846 DEBUG interconnect] ServerThread sending TP_PROCESS_REQUEST to b'5f47e73118784dde' [19:15:59.848 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'a9df596c4bb846a9' [19:15:59.853 DEBUG interconnect] ServerThread receiving TP_STATE_GET_REQUEST message: 177 bytes [19:15:59.856 DEBUG interconnect] ServerThread sending TP_STATE_GET_RESPONSE to b'5f47e73118784dde' [19:15:59.862 DEBUG interconnect] ServerThread receiving TP_PROCESS_RESPONSE message: 184 bytes [19:15:59.864 DEBUG interconnect] message round trip: TP_PROCESS_RESPONSE 0.017491817474365234 [19:15:59.948 DEBUG publisher] Batch 309cfd9e7e021c2fa63e1ccdb74b5ef4b17a56845258194d578bc445c61bdcb403b011d8c01a7c7a78baef31f25312443818b831677f2af90c5f6fcc56ae7176 invalid, not added to block. [19:15:59.949 DEBUG publisher] Abandoning block (1, S:, P:6776dcda): no batches added ```

AntonOyung (Mon, 14 Aug 2017 19:17:55 GMT):
any ideas ?

AntonOyung (Mon, 14 Aug 2017 19:19:56 GMT):
the response url gives me this message: "message": "Tried to get unauthorized address: ['5b734921409c347a3f4aa600db1fe5d1ef579bcc9c39fbf84435be1be66936133d4d6d']"

zac (Mon, 14 Aug 2017 19:27:45 GMT):
in your original code you were specifying those fields like snake-cased: ``` family_name='xo', family_version='1.0', payload_encoding='csv-utf8' ```

zac (Mon, 14 Aug 2017 19:29:01 GMT):
I believe that would set the camel-cased properties (`familyName`, etc) to empty strings, which would have caused your previous error.

AntonOyung (Mon, 14 Aug 2017 19:33:16 GMT):
@zac in regards to my current error, I am using the code you sent like this ```_get_address: function(name) { return createHash('sha512').update('xo').digest('hex').slice(0, 6) + createHash('sha512').update(name).digest('hex').slice(0, 64); },```

AntonOyung (Mon, 14 Aug 2017 19:34:49 GMT):
is that the correct format ?

zac (Mon, 14 Aug 2017 19:35:58 GMT):
Should be

zac (Mon, 14 Aug 2017 19:36:14 GMT):
I don't know if any Xo folks have insight

zac (Mon, 14 Aug 2017 19:36:27 GMT):
What is the name of the game you are getting rejected with?

AntonOyung (Mon, 14 Aug 2017 19:36:35 GMT):
"game2"

AntonOyung (Mon, 14 Aug 2017 19:37:29 GMT):
I had it log the trnsaction the handler.py received

AntonOyung (Mon, 14 Aug 2017 19:37:33 GMT):
` GAME: game2 ACTION: create SPACE: null SIGNER: 0368e2988f012531ea7d7d037e9763a62a38098d33dc98ce0fc81f849cd01bd30e`

AntonOyung (Mon, 14 Aug 2017 19:37:54 GMT):
and the logger from the tp gave me `[19:15:59.858 WARNING core] Invalid Transaction Tried to get unauthorized address: ['5b734921409c347a3f4aa600db1fe5d1ef579bcc9c39fbf84435be1be66936133d4d6d']`

boydjohnson (Mon, 14 Aug 2017 19:38:17 GMT):
It looks like the inputs were not set correctly. That was an AuthorizationException.

AntonOyung (Mon, 14 Aug 2017 19:39:38 GMT):
So I am not submitting my request properly?

boydjohnson (Mon, 14 Aug 2017 19:42:28 GMT):
Yeah the inputs in the TransactionHeader is not correct.

AntonOyung (Mon, 14 Aug 2017 19:43:49 GMT):
Do you know which inputs ?

AntonOyung (Mon, 14 Aug 2017 19:44:13 GMT):
Should I be passing in sometihng for `auth_user` and `auth_password`

boydjohnson (Mon, 14 Aug 2017 19:46:23 GMT):
It's the address, so `inputs=[address]` should do it. From your code snippets I that, but it isn't being set correctly.

zac (Mon, 14 Aug 2017 19:48:14 GMT):
I believe `['5b734921409c347a3f4aa600db1fe5d1ef579bcc9c39fbf84435be1be66936133d4d6d']` is the correct value for `inputs`, and that seems like what he is setting it to

zac (Mon, 14 Aug 2017 19:48:20 GMT):
Unless I am missing something

AntonOyung (Mon, 14 Aug 2017 19:49:11 GMT):
Yeah I believe I am giving it the correct address value wise at least

AntonOyung (Mon, 14 Aug 2017 19:51:02 GMT):
Oh I was able to fix it

AntonOyung (Mon, 14 Aug 2017 19:51:19 GMT):
I think there was some issue with reading in the settings

AntonOyung (Mon, 14 Aug 2017 19:51:34 GMT):
Instead I just assigned the values after instantiating the new TxnEncoder

AntonOyung (Mon, 14 Aug 2017 19:51:48 GMT):
like this: ``` TxnEncoder = new Encoder.TransactionEncoder( this._privateKey ); TxnEncoder.familyName = 'xo'; TxnEncoder.familyVersion = '1.0'; TxnEncoder.payloadEncoding = 'csv-utf8'; TxnEncoder.inputs=[address]; TxnEncoder.outputs=[address]; ```

AntonOyung (Mon, 14 Aug 2017 19:51:59 GMT):
this allowed me to create a new game successfully

AntonOyung (Mon, 14 Aug 2017 19:52:34 GMT):
Thanks for the help @zac and @boydjohnson !!

zac (Mon, 14 Aug 2017 19:53:23 GMT):
That is perhaps a bug

zac (Mon, 14 Aug 2017 19:53:34 GMT):
What was the code you were using that didn't work?

zac (Mon, 14 Aug 2017 19:54:05 GMT):
oh I see

zac (Mon, 14 Aug 2017 19:54:19 GMT):
JavaScript does not have named parameters like Python

zac (Mon, 14 Aug 2017 19:54:55 GMT):
This is not valid JS: ``` TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, inputs=[address], outputs=[address], family_name='xo', family_version='1.0', payload_encoding='csv-utf8' ); ```

AntonOyung (Mon, 14 Aug 2017 19:54:57 GMT):
``` TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, inputs=[address], outputs=[address], familyName = 'xo', familyVersion = '1.0', payloadEncoding = 'csv-utf8' );```

AntonOyung (Mon, 14 Aug 2017 19:55:20 GMT):
Oh I see

zac (Mon, 14 Aug 2017 19:55:28 GMT):
JS is just evaluating the assignment operators

AntonOyung (Mon, 14 Aug 2017 19:55:30 GMT):
thanks for the clarification

zac (Mon, 14 Aug 2017 19:55:57 GMT):
You are essentially calling: ``` TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, [address], [address], 'xo', '1.0', ='csv-utf8' ); ```

zac (Mon, 14 Aug 2017 19:55:57 GMT):
You are essentially calling: ``` TxnEncoder = new Encoder.TransactionEncoder( this._privateKey, [address], [address], 'xo', '1.0', 'csv-utf8' ); ```

zac (Mon, 14 Aug 2017 19:56:21 GMT):
And as TransactionEncoder only takes two parameters, most of that is thrown out.

zac (Mon, 14 Aug 2017 19:58:24 GMT):
It _should_ look like this: ``` TxnEncoder = new Encoder.TransactionEncoder(this._privateKey, { inputs: [address], outputs: [address], familyName: 'xo', familyVersion: '1.0', payloadEncoding: 'csv-utf8' }); ```

zac (Mon, 14 Aug 2017 19:59:41 GMT):
A settings object like is the way JS commonly gets named parameter behavior

zac (Mon, 14 Aug 2017 19:59:41 GMT):
A settings object like that is the way JS commonly gets named parameter behavior

Dan (Mon, 14 Aug 2017 20:27:40 GMT):
anyone have our unit coverage handy?

boydjohnson (Mon, 14 Aug 2017 20:29:16 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/master/lastSuccessfulBuild/artifact/coverage/html/index.html This was from last successful master build.

Dan (Mon, 14 Aug 2017 21:09:34 GMT):
ahh thanks @boydjohnson . forgot I could get them there.

Dan (Mon, 14 Aug 2017 21:09:52 GMT):
@kelly_ 86%

boydjohnson (Mon, 14 Aug 2017 21:10:02 GMT):
No problem.

smagne (Tue, 15 Aug 2017 19:52:32 GMT):
Hello, I write my own transaction processor using the javascript sdk framework and I want to write unit test to test my processor, is that possible? Which could the the best approach?

smagne (Tue, 15 Aug 2017 19:52:32 GMT):
Hello, I write my own transaction processor using the javascript sdk framework and I want to write unit test to test my processor, is that possible? Which could the best approach?

kelly_ (Tue, 15 Aug 2017 20:53:24 GMT):
Have you seen this link :/- http/intelledger.github.io/app_developers_guide/testing.html

kelly_ (Tue, 15 Aug 2017 20:54:22 GMT):
http://intelledger.github.io/app_developers_guide/testing.html

smagne (Tue, 15 Aug 2017 20:57:45 GMT):
Thanks @kelly_ Yes, but that's in python, I tried to replicate the idea with no luck :(

pschwarz (Tue, 15 Aug 2017 21:15:11 GMT):
Right now, that testing suite is only available in python, but it essentially creates a mock validator via the ZMQ protocol

pschwarz (Tue, 15 Aug 2017 21:15:26 GMT):
So it doesn't directly call your code.

pschwarz (Tue, 15 Aug 2017 21:16:03 GMT):
For example, we have tests implemented using that framework for the Intkey family, which are run against all implementations, JS included.

pschwarz (Tue, 15 Aug 2017 21:16:17 GMT):
Write one set of tests -> use against any implementation

pschwarz (Tue, 15 Aug 2017 21:16:38 GMT):
Look around the intkey tests to get a better idea of how that works

Dan (Tue, 15 Aug 2017 22:14:48 GMT):
I'm trying for a very simple layman's high level statement for sawtooth for the HL architecture deck. "Sawtooth is designed to allow companies to securely update and read the same virtual database without paying a central authority."

AntonOyung (Tue, 15 Aug 2017 22:42:04 GMT):
When I GET the data back it returns a JSON object where all the entries are Strings. However the payload is an encoded representation of the string. Is there a way to convert that string back to a Buffer and then convert the buffer back into the readable String?

zac (Wed, 16 Aug 2017 02:11:53 GMT):
JSON is all strings

zac (Wed, 16 Aug 2017 02:12:40 GMT):
It is typical represent binary data as a base64 strings within JSON

zac (Wed, 16 Aug 2017 02:15:17 GMT):
``` Buffer.from('eyJmb28iOiJiYXIifQ==', 'base64') ```

zac (Wed, 16 Aug 2017 02:15:17 GMT):
``` Buffer.from('eyJmb28iOiJiYXIifQ==', 'base64').toString() ```

FlyingTiger (Thu, 17 Aug 2017 06:58:49 GMT):
@zac I got a 'name' state data for intkey family, b"\xa1naccount35913_0\x19'\x10"", account35913_0 is the value, but what do b"\xa1n and \x19'\x10 mean?

Riussi (Thu, 17 Aug 2017 13:01:32 GMT):
Has joined the channel.

agunde (Thu, 17 Aug 2017 13:57:38 GMT):
@FlyingTiger b"\xa1naccount35913_0\x19'\x10" is the cbor encoded data. When decoded it is {'account35913_0': 10000}

zac (Thu, 17 Aug 2017 14:04:43 GMT):
^

zac (Thu, 17 Aug 2017 14:05:26 GMT):
:point_up:

zac (Thu, 17 Aug 2017 15:21:16 GMT):
http://intelledger.github.io/transaction_family_specifications/integerkey_transaction_family.html#state

MikeMayori (Thu, 17 Aug 2017 15:57:36 GMT):
Has joined the channel.

FlyingTiger (Fri, 18 Aug 2017 06:15:33 GMT):
@agunde Thanks!

berserkr (Fri, 18 Aug 2017 16:53:21 GMT):
Has joined the channel.

AkarshaMahadeva (Fri, 18 Aug 2017 17:00:23 GMT):
AntonOyung 9:59 AM Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /state?address=5b7349 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',)). Hello Folks I am getting this error. I am not sure if it is from Vagrant machine or connection problem

jachin (Fri, 18 Aug 2017 20:29:39 GMT):
Has joined the channel.

roundthecorner (Mon, 21 Aug 2017 06:03:10 GMT):
Has joined the channel.

randombishop (Mon, 21 Aug 2017 09:45:18 GMT):
Hello hello ! General question today please : I'd like to implement a transaction which will update the current date/time in a blockchain address state. How can the blockchain achieve consensus on such date ? Is there any standard practice regarding blockchain and "current date/time" concept ?

randombishop (Mon, 21 Aug 2017 09:48:40 GMT):
(I thought one way to do it is to have the sender of the transaction specify the current date, then the transaction processor just check if it is in a reasonable range from its own clock.)

pschwarz (Mon, 21 Aug 2017 18:40:23 GMT):
That's a pretty reasonable way of doing it. We have a design forthcoming that covers this kind of use case, in order to support the EVM transaction processor.

pschwarz (Mon, 21 Aug 2017 18:41:08 GMT):
It's handle in a similar way.

pschwarz (Mon, 21 Aug 2017 18:41:08 GMT):
It's handledin a similar way.

pschwarz (Mon, 21 Aug 2017 18:41:08 GMT):
It's handled in a similar way.

kelly_ (Mon, 21 Aug 2017 19:00:50 GMT):
@randombishop we have an example of this in the bond trading sample in the .7 branch

kelly_ (Mon, 21 Aug 2017 19:01:32 GMT):
@amundson was the mastermind behind that

kelly_ (Mon, 21 Aug 2017 19:01:44 GMT):
I believe the transaction was called update clock

randombishop (Mon, 21 Aug 2017 19:20:00 GMT):
Thank you @pschwarz and @kelly_ interesting code indeed.

boydjohnson (Mon, 21 Aug 2017 20:14:08 GMT):
@GhadiShayban I made some updates to the sawtooth java sdk Signing class to fix a package name issue, add some license headers, and return compressed keys from the getPublicKey method. Since you originally contributed that class I would appreciated if you would take a look when ever you have time. https://github.com/hyperledger/sawtooth-core/pull/724

iccaro (Wed, 23 Aug 2017 01:25:41 GMT):
Has joined the channel.

champbronc2 (Wed, 23 Aug 2017 13:01:57 GMT):
Has joined the channel.

ksachdeva (Wed, 23 Aug 2017 17:07:08 GMT):
Has joined the channel.

smagne (Wed, 23 Aug 2017 19:10:17 GMT):
Hello I'm working with the sawtooth's javascript sdk

smagne (Wed, 23 Aug 2017 19:10:28 GMT):
using a custom transaction encoder

smagne (Wed, 23 Aug 2017 19:11:48 GMT):
I'm using the documentation as example and I want to know wht inputs/outputs means here: ```const encoder = new TransactionEncoder(privateKey, { // We don't want a batcher pubkey or dependencies for our example, // but this is what setting them might look like: batcherPubkey: publicKey, // dependencies: ['540a6803971d1880ec73a96cb97815a95d374cbad5d865925e5aa0432fcf1931539afe10310c122c5eaae15df61236079abbf4f258889359c4d175516934484a'], familyName: FAMILYNAME, familyVersion: '1.0', inputs: ['1cf126'], outputs: ['1cf126'], payloadEncoding: 'application/cbor', payloadEncoder: cbor.encode })```

smagne (Wed, 23 Aug 2017 19:12:45 GMT):
Also I'm using the protobuf approach, what should be the `payloadEncoder`

boydjohnson (Wed, 23 Aug 2017 19:14:09 GMT):
So the inputs and outputs are addresses or namespaces that the txn can read from (inputs) or write to (outputs).

boydjohnson (Wed, 23 Aug 2017 19:15:31 GMT):
I am unfamiliar with the javascript protobuf library. @pschwarz do you know?

pschwarz (Wed, 23 Aug 2017 19:16:47 GMT):
That should actually be specified per transaction, and be exact for your transactions. It helps with performance by giving hints to the validator on which transaction access particular parts of the state tree.

pschwarz (Wed, 23 Aug 2017 19:18:27 GMT):
If you set it like the above example, that will be the default, which will result in potential parallel between transaction families (at least, those that use different namespaces) but not within a transaction family (i.e. two transactions submitted in the same batch from the same family could not be parallelized)

smagne (Wed, 23 Aug 2017 19:19:08 GMT):
That's the example directly from the documentation

smagne (Wed, 23 Aug 2017 19:19:44 GMT):
my namespace is like this ```const _hash = (x) => crypto.createHash('sha512').update(x).digest('hex').toLowerCase(); const EXO_SP_NAMESPACE = _hash(process.env.SAWTOOTH_PAYMENT_PROCESSOR_FAMILY).substring(0, 6);```

pschwarz (Wed, 23 Aug 2017 19:20:22 GMT):
You could put that value in for the defaults.

smagne (Wed, 23 Aug 2017 19:20:30 GMT):
so my input/output should be [EXO_SP_NAMESPACE] right?

smagne (Wed, 23 Aug 2017 19:21:08 GMT):
we will create wallets and execute transactions within that namespace

pschwarz (Wed, 23 Aug 2017 19:21:09 GMT):
yes. Or, more specifically, [EXO_SP_NAMESPACE + state_address], per transaction

pschwarz (Wed, 23 Aug 2017 19:21:32 GMT):
For what every state address the transaction uses

pschwarz (Wed, 23 Aug 2017 19:22:00 GMT):
Inputs are the state address that your transaction will read, outputs the ones that it will write

smagne (Wed, 23 Aug 2017 19:22:45 GMT):
so state_address is the private or public key that I generate with the signer?

pschwarz (Wed, 23 Aug 2017 19:22:51 GMT):
No

smagne (Wed, 23 Aug 2017 19:23:20 GMT):
what's the state_address is then

smagne (Wed, 23 Aug 2017 19:23:20 GMT):
what's the state_address is then?

pschwarz (Wed, 23 Aug 2017 19:23:36 GMT):
Where do you store your state values via your transaction processor?

smagne (Wed, 23 Aug 2017 19:23:53 GMT):
Yes, I had a custom transaction processor

pschwarz (Wed, 23 Aug 2017 19:24:11 GMT):
First off, I'd recommend re-reading this section: https://intelledger.github.io/app_developers_guide/address_and_namespace.html

pschwarz (Wed, 23 Aug 2017 19:24:41 GMT):
Second off, you are generating some addresses for where you set your wallet values in the global state

pschwarz (Wed, 23 Aug 2017 19:24:51 GMT):
That's the address I'm referring to

smagne (Wed, 23 Aug 2017 19:25:54 GMT):
ohhh okay

pschwarz (Wed, 23 Aug 2017 19:26:59 GMT):
Using the JS client, you can set the inputs and outputs using the TransactionEncoder's create function: ``` encoder.create(, { inputs: [, ...],

pschwarz (Wed, 23 Aug 2017 19:26:59 GMT):
Using the JS client, you can set the inputs and outputs using the TransactionEncoder's create function: ``` let txn = encoder.create(, { inputs: [, ...], outputs: [, ...] }); ```

smagne (Wed, 23 Aug 2017 19:28:51 GMT):
Okay I understand that, but what about this properties ```payloadEncoding: 'application/cbor', payloadEncoder: cbor.encode```

smagne (Wed, 23 Aug 2017 19:29:43 GMT):
because I'm using this enconding `'csv-utf8'`

smagne (Wed, 23 Aug 2017 19:30:03 GMT):
what should be the payloadEncoder or I don't need one

pschwarz (Wed, 23 Aug 2017 19:30:29 GMT):
It's just a function to take a javascript object and convert it to your encoding

pschwarz (Wed, 23 Aug 2017 19:30:41 GMT):
So, in the above case, it converts the object to cbor.

pschwarz (Wed, 23 Aug 2017 19:30:51 GMT):
In your case, you just convert it to csv

smagne (Wed, 23 Aug 2017 19:31:05 GMT):
ohh okay thanks!

smagne (Wed, 23 Aug 2017 19:31:32 GMT):
Could I ignore it then?

smagne (Wed, 23 Aug 2017 19:32:24 GMT):
Because I'm receiving the data already encoded using csv

dataharvest (Wed, 23 Aug 2017 21:00:26 GMT):
fun question for the group asked to try to demo straight sawtooth.... is there a docker or containerized example of the bond market or any market really... the ones listed on the site for the market errors after creating a WIF

kelly_ (Wed, 23 Aug 2017 21:52:29 GMT):
hey @dataharvest if you are looking for one with a GUI then there are older examples, i've got the marketplace one up and running in the past month or two

kelly_ (Wed, 23 Aug 2017 21:52:49 GMT):
bond should work as well with the .7 branch but I haven't tested

kelly_ (Wed, 23 Aug 2017 21:53:06 GMT):
in the next few months we will have an end to end example for supply chain with gui

dataharvest (Wed, 23 Aug 2017 22:00:18 GMT):
gotcha ok i'll look at the marketplace

dataharvest (Wed, 23 Aug 2017 22:00:21 GMT):
ty

kelly_ (Wed, 23 Aug 2017 22:01:47 GMT):
Are you checking the docs for the .7 instructions?

kelly_ (Wed, 23 Aug 2017 22:01:53 GMT):
and downloading the .7 branch?

kelly_ (Wed, 23 Aug 2017 22:03:39 GMT):
@pschwarz do we a documentation for launching the marketplace GUI? I thought we did but I can't find it

pschwarz (Wed, 23 Aug 2017 22:04:34 GMT):
@smagne You can't ignore it, you need to set to the same values that your transaction processor is declaring it uses. Otherwise, the transaction can't get routed correctly.

pschwarz (Wed, 23 Aug 2017 22:04:56 GMT):
@kelly_ we only had instructions for the bond UI

pschwarz (Wed, 23 Aug 2017 22:05:14 GMT):
Though, there are some README files in the various market place components that should help

kelly_ (Wed, 23 Aug 2017 22:06:05 GMT):
are the bond UI instructions in the docs? if so could you point datahavest there?

kelly_ (Wed, 23 Aug 2017 22:06:25 GMT):
I think ryan had given me some marketplace instructions on slack at one point but they are likely gone now

kelly_ (Wed, 23 Aug 2017 22:08:07 GMT):
# Running the Marketplace Navigator UI In your vagrant image, you need to be sure that you have the following plugins: * `sawtooth-core/tools/plugins/install_rethink.sh` * `sawtooth-core/tools/plugins/install_js_tools.sh` In the `sawtooth-core/extensions/mktplace/navigator` directory, run: ``` > scripts/bootstrap.sh > scripts/build.sh ``` These will install both the client- and server-side dependencies, as well as build the appropriate database tables and final javascript code. ## To start the web server: In `sawtooth-core/extensions/mktplace/navigator/server`, run: ``` > npm start ``` If you need to change any options, see `sawtooth-core/extensions/mktplace/navigator/server/README.md` for the possible environment variables. ## To start the ledger sync process Ensure that `sawtooth-core/extensions/mktplace/navigator/ledger_sync` is in your `PYTHONPATH`. In `sawtooth-core/extensions/mktplace/navigator/ledger_sync`, run: ``` > scripts/syncledger --logfile __screen__ ```

pschwarz (Wed, 23 Aug 2017 22:08:19 GMT):
There you go

pschwarz (Wed, 23 Aug 2017 22:08:46 GMT):
There are UI usage instructions, in the 0.7 doc, but not how to run it

pschwarz (Wed, 23 Aug 2017 22:10:46 GMT):
I would warn that those UI's are instructive, but 0.8 has diverged a lot, so much of the actual transaction submission and the ledger sync (i.e. copying deltas to an off-chain DB) will be completely different than 0.8

pschwarz (Wed, 23 Aug 2017 22:10:46 GMT):
I would warn that while those UI's are instructive, but 0.8 has diverged a lot, so much of the actual transaction submission and the ledger sync (i.e. copying deltas to an off-chain DB) will be completely different than 0.8

pschwarz (Wed, 23 Aug 2017 22:11:34 GMT):
They're also based on React, which is not Apache-license compatible, so we'll be using something else for the forthcoming UI

dataharvest (Wed, 23 Aug 2017 22:18:53 GMT):
got it

dataharvest (Wed, 23 Aug 2017 22:19:46 GMT):
yeah this is just to help a couple in the group get past some mental blockers

dataharvest (Wed, 23 Aug 2017 22:20:41 GMT):
i think/hope this will help thank you for the docs i'll try it out in the next hour

IntelStacey (Wed, 23 Aug 2017 22:56:13 GMT):
Has joined the channel.

smagne (Thu, 24 Aug 2017 01:07:57 GMT):
Hello guys it's me again

smagne (Thu, 24 Aug 2017 01:13:33 GMT):
Now, I'm trying to register my custom transaction family so I run the following command: ```$ sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{"family": "intkey", "version": "1.0", "encoding": "application/cbor"}, {"family":"sawtooth_settings", "version":"1.0", "encoding":"application/protobuf"}]' $ sawtooth config settings list --url http://rest-api:8080```

smagne (Thu, 24 Aug 2017 01:14:34 GMT):
but the `$ sawtooth config settings list --url http://rest-api:8080` is returning service unavailable

smagne (Thu, 24 Aug 2017 01:15:49 GMT):
(instead of using intkey family I'm using my custom family

smagne (Thu, 24 Aug 2017 01:15:49 GMT):
(instead of using intkey family I'm using my custom family)

pschwarz (Thu, 24 Aug 2017 14:09:51 GMT):
@smagne remind me, are you running that from within vagrant?

pschwarz (Thu, 24 Aug 2017 14:10:58 GMT):
Or the docker containers

smagne (Thu, 24 Aug 2017 14:14:41 GMT):
Hi @pschwarz know it's half working

smagne (Thu, 24 Aug 2017 14:17:55 GMT):
I'm using docker and now when I run `sawtooth config settings list --url http://rest-api:8080` I got my family settings but when posting a batch using my settings in the validator I'm getting this error ```[12:08:08.815 DEBUG executor] no transaction processors registered for processor type exosp: 1.0: csv-utf8 [12:08:08.817 INFO executor] Waiting for transaction processor (exosp, 1.0, csv-utf8)```

smagne (Thu, 24 Aug 2017 14:18:11 GMT):
And my custom transaction processor is running

smagne (Thu, 24 Aug 2017 14:18:23 GMT):
```const address = 'tcp://0.0.0.0:8080'; const transactionProcessor = new TransactionProcessor(address); transactionProcessor.addHandler(new EXOSPHandler()); transactionProcessor.start();```

pschwarz (Thu, 24 Aug 2017 14:43:00 GMT):
Needs to be port 4004

pschwarz (Thu, 24 Aug 2017 14:43:32 GMT):
8080 is the REST API's port. The validator's component port is 4004

pschwarz (Thu, 24 Aug 2017 14:44:42 GMT):
Also, I think you need to specify the actual host - `tcp://localhost:4004`, if you're running it on your host machine, `tcp://validator:4004` if you're running it within docker

smagne (Thu, 24 Aug 2017 14:45:20 GMT):
thanks I will try and let you know @pschwarz great support guys!

MikeMayori (Thu, 24 Aug 2017 15:01:29 GMT):
Hi, anyone have a complete example in javascript with any use case implemented???

zac (Thu, 24 Aug 2017 15:16:28 GMT):
https://github.com/delventhalz/transfer-chain-jsI just made this:

zac (Thu, 24 Aug 2017 15:16:28 GMT):
I just made this: https://github.com/delventhalz/transfer-chain-js

MikeMayori (Thu, 24 Aug 2017 15:16:48 GMT):
did that

MikeMayori (Thu, 24 Aug 2017 15:17:05 GMT):
runs good with a few twicks

MikeMayori (Thu, 24 Aug 2017 15:17:58 GMT):
perhaps , something like how can i run the supply chain transaction family example ??

MikeMayori (Thu, 24 Aug 2017 15:18:33 GMT):
or perhaps you @zac know how to handle users???

zac (Thu, 24 Aug 2017 15:18:57 GMT):
Supply Chain is still under development, I'm not sure how much documentation there is, or what state it is in

zac (Thu, 24 Aug 2017 15:19:45 GMT):
Really robust user handling hasn't been done yet in 0.8

zac (Thu, 24 Aug 2017 15:19:58 GMT):
0.7 has the Bond and Marketplace examples

zac (Thu, 24 Aug 2017 15:20:17 GMT):
What specifically did you want to do?

MikeMayori (Thu, 24 Aug 2017 15:20:57 GMT):
for example : a way to validate in consensus if one participant can be part or not of the network

MikeMayori (Thu, 24 Aug 2017 15:21:13 GMT):
I know it can be implemented in a transaction processor

MikeMayori (Thu, 24 Aug 2017 15:21:26 GMT):
as a business logic

MikeMayori (Thu, 24 Aug 2017 15:21:48 GMT):
but somehow using POET capabilties

zac (Thu, 24 Aug 2017 15:22:00 GMT):
The Settings Transaction Family will probably interest you: http://intelledger.github.io/transaction_family_specifications/settings_transaction_family.html

zac (Thu, 24 Aug 2017 15:22:44 GMT):
There are also some plans which will be implemented on top of Settings in the near to mid-term to create a couple of systems for on-chain permissioning

zac (Thu, 24 Aug 2017 15:22:44 GMT):
There are also some plans which will be implemented in the near to mid-term to create a couple of systems on top of Settings for on-chain permissioning

MikeMayori (Thu, 24 Aug 2017 15:24:02 GMT):
that will be great

MikeMayori (Thu, 24 Aug 2017 15:24:30 GMT):
I've been reading the docs , but i can not find a road map

zac (Thu, 24 Aug 2017 15:24:41 GMT):
That's a fair critique

zac (Thu, 24 Aug 2017 15:24:55 GMT):
We could probably do more to get that out there

zac (Thu, 24 Aug 2017 15:25:26 GMT):
Best thing to reference for our Roadmap is our JIRA

zac (Thu, 24 Aug 2017 15:25:37 GMT):
But that's not always super clear

zac (Thu, 24 Aug 2017 15:25:55 GMT):
What's the use case you have in mind?

MikeMayori (Thu, 24 Aug 2017 15:27:14 GMT):
Well to tell you the truth I want to learn this good , so i can implement any solution on any arquitecture

zac (Thu, 24 Aug 2017 15:27:51 GMT):
In thinking about permissioning, I think you get a lot of it for free

MikeMayori (Thu, 24 Aug 2017 15:28:12 GMT):
Get to my attention when Microsoft uses this in combinatio with COCO

zac (Thu, 24 Aug 2017 15:28:19 GMT):
My biggest concern is about bad users spamming the network

zac (Thu, 24 Aug 2017 15:28:30 GMT):
which some of the new permissioning stuff should handle

zac (Thu, 24 Aug 2017 15:28:46 GMT):
you can also implement something now through more traditional means

zac (Thu, 24 Aug 2017 15:28:59 GMT):
put the REST API behind a proxy that runs some sort of authorization

MikeMayori (Thu, 24 Aug 2017 15:29:23 GMT):
like express-gateway.io

zac (Thu, 24 Aug 2017 15:29:40 GMT):
in terms of just "make sure people can't modify state in a way they shouldn't", that's mostly baked in

MikeMayori (Thu, 24 Aug 2017 15:29:50 GMT):
ok

MikeMayori (Thu, 24 Aug 2017 15:30:29 GMT):
something i was trying to do is find out how to get the list of modifications for a transaction

MikeMayori (Thu, 24 Aug 2017 15:30:37 GMT):
like the provenance

MikeMayori (Thu, 24 Aug 2017 15:30:55 GMT):
of perhaps use another database

MikeMayori (Thu, 24 Aug 2017 15:31:00 GMT):
like couchdb

MikeMayori (Thu, 24 Aug 2017 15:31:10 GMT):
for querying info

MikeMayori (Thu, 24 Aug 2017 15:32:12 GMT):
If you can guide me through this i will be really happy

zac (Thu, 24 Aug 2017 15:32:34 GMT):
You will be happy then

MikeMayori (Thu, 24 Aug 2017 15:32:56 GMT):
at leat for know

MikeMayori (Thu, 24 Aug 2017 15:33:12 GMT):
i can compare this with hyperledger fabric

zac (Thu, 24 Aug 2017 15:33:13 GMT):
http://intelledger.github.io/rest_api/state_delta_websockets.html

zac (Thu, 24 Aug 2017 15:33:53 GMT):
I'm just unpacking this now myself, I haven't worked on it personally, but that is exactly the idea

zac (Thu, 24 Aug 2017 15:34:09 GMT):
Subscribe to state changes, update external DB, support more complex queries of state

MikeMayori (Thu, 24 Aug 2017 15:35:54 GMT):
just to know , what kind of database you use for the ledger

MikeMayori (Thu, 24 Aug 2017 15:36:09 GMT):
some uses PFS other level , couchdb

zac (Thu, 24 Aug 2017 15:38:26 GMT):
In the validator itself? It uses LMDB.

MikeMayori (Thu, 24 Aug 2017 15:39:13 GMT):
ok

MikeMayori (Thu, 24 Aug 2017 15:39:31 GMT):
See my idea to provide an layer to make some queries

MikeMayori (Thu, 24 Aug 2017 15:39:38 GMT):
something like graphql

jsmitchell (Thu, 24 Aug 2017 15:40:08 GMT):
you would probably want to build that atop a state delta export target

MikeMayori (Thu, 24 Aug 2017 15:40:57 GMT):
can you explain further this pleasee..

MikeMayori (Thu, 24 Aug 2017 15:40:57 GMT):
can you explain further this please...

smagne (Thu, 24 Aug 2017 15:41:55 GMT):
Hey guys sorry to interrupt I need your help

smagne (Thu, 24 Aug 2017 15:42:20 GMT):
I'm trying to register a custom transaction processor but it isn't working

jsmitchell (Thu, 24 Aug 2017 15:42:32 GMT):
@MikeMayori sawtooth uses an addressable merkle tree for global ledger state

jsmitchell (Thu, 24 Aug 2017 15:42:47 GMT):
the values at the addresses are transaction family specific opaque byte arrays

MikeMayori (Thu, 24 Aug 2017 15:43:10 GMT):
got it

smagne (Thu, 24 Aug 2017 15:43:31 GMT):
I'm running the validator in a docker instance and this is the code I use in my TP ```const address = 'tcp://validator:4004'; const transactionProcessor = new TransactionProcessor(address); transactionProcessor.addHandler(new EXOSPHandler()); transactionProcessor.start();```

jsmitchell (Thu, 24 Aug 2017 15:43:32 GMT):
that has nice properties for abstraction of transaction families and calculation of merkle proofs

jsmitchell (Thu, 24 Aug 2017 15:43:37 GMT):
but it has poor query properties

jsmitchell (Thu, 24 Aug 2017 15:43:59 GMT):
you can build indices within your transaction family and store them within predictable addresses

jsmitchell (Thu, 24 Aug 2017 15:44:04 GMT):
but then you have to maintain those indices

smagne (Thu, 24 Aug 2017 15:44:04 GMT):
this is the Handler definition ```class EXOSPHandler extends TransactionHandler { constructor() { super(process.env.SAWTOOTH_PAYMENT_PROCESSOR_FAMILY, '1.0', 'csv-utf8', [EXO_SP_NAMESPACE]); } apply(transactionProcessRequest, state) { ```

jsmitchell (Thu, 24 Aug 2017 15:44:07 GMT):
and that comes at a cost

jsmitchell (Thu, 24 Aug 2017 15:44:43 GMT):
we support a state delta export mechanism which can apply domain specific translations into a more queryable database structure

jsmitchell (Thu, 24 Aug 2017 15:45:12 GMT):
for example, you could normalize state changes to atomic row inserts in a sql database

jsmitchell (Thu, 24 Aug 2017 15:45:22 GMT):
and have indices that are managed by the rdbms

smagne (Thu, 24 Aug 2017 15:45:26 GMT):
when checking the sawtooth config in the validator using shell command I get this ```root@a9ce2ee9b3a8:/# sawtooth config settings list --url http://rest-api:8080 sawtooth.settings.vote.authorized_keys: 02ca7eeeae773b83c0a245e8a6719ca5722b38214560349fb021351bcba5917c4c sawtooth.validator.transaction_families: [{"family": "exosp", "version": "1.0", "encoding": "csv-utf8"}, {"family":"saw...```

smagne (Thu, 24 Aug 2017 15:46:09 GMT):
but in the docker logs I'm getting this ```[12:08:08.815 DEBUG executor] no transaction processors registered for processor type exosp: 1.0: csv-utf8 [12:08:08.817 INFO executor] Waiting for transaction processor (exosp, 1.0, csv-utf8)```

MikeMayori (Thu, 24 Aug 2017 15:46:45 GMT):
that sounds fair

MikeMayori (Thu, 24 Aug 2017 15:46:45 GMT):
that sounds fair @jsmitchell

MikeMayori (Thu, 24 Aug 2017 15:46:45 GMT):
that sounds good @jsmitchell

smagne (Thu, 24 Aug 2017 15:47:16 GMT):
and when I post a batch using the js sdk this is the response ```{ data: [ { id: "54e4d206456fa3009ade5e0247c6f7d9637eaf1979ad7cdfc6b9c0ddccdda8417c09957", invalid_transactions: [ ], status: "UNKNOWN" } ], link: "http://localhost:8080/batch_status?id=54e4d206456fa3009ade5e0247c6f7d9637eaf1979ad7cdfc6b9c0ddccdda8417c09957" }```

jsmitchell (Thu, 24 Aug 2017 15:47:22 GMT):
@smagne when you started your transaction processor, you should have seen a line in the validator logs showing it being registered

jsmitchell (Thu, 24 Aug 2017 15:47:32 GMT):
can you paste that line here?

agunde (Thu, 24 Aug 2017 15:47:39 GMT):
@smagne So to be clear the setting just tells the validator that it will need a transaction processor for that family. It does not mean that your transaction processor is actually registered with the validator

smagne (Thu, 24 Aug 2017 15:48:07 GMT):
thanks @jsmitchell @agunde

smagne (Thu, 24 Aug 2017 15:48:19 GMT):
I'm not getting the registered line

smagne (Thu, 24 Aug 2017 15:48:40 GMT):
that's my problem it seems that is not registering my handler

smagne (Thu, 24 Aug 2017 15:50:20 GMT):
any ideas? I'm not getting any error from anywhere hahaha so I'm a little bit lost now

MikeMayori (Thu, 24 Aug 2017 15:51:28 GMT):
@jsmitchell thanks

MikeMayori (Thu, 24 Aug 2017 15:51:28 GMT):
@jsmitchell that takes me to another level

MikeMayori (Thu, 24 Aug 2017 15:51:28 GMT):
@jsmitchell I saw this Implementation where Microsoft Mentions sawtooth lake COCOS a few weeks ago , how would you define that implementation ? or how sawtooth lake plays here..?

smagne (Thu, 24 Aug 2017 15:51:36 GMT):
let me know if you need more information

agunde (Thu, 24 Aug 2017 15:53:21 GMT):
@smagne What is the output when you start your transaction processor?

smagne (Thu, 24 Aug 2017 15:53:57 GMT):
I'm not getting any

smagne (Thu, 24 Aug 2017 15:54:23 GMT):
do you mean in node console or in the validator docker logs?

agunde (Thu, 24 Aug 2017 15:55:05 GMT):
node console

smagne (Thu, 24 Aug 2017 15:56:01 GMT):
Nothing, I should get a registration message right?

MikeMayori (Thu, 24 Aug 2017 15:59:31 GMT):
@magne : you should get something like

MikeMayori (Thu, 24 Aug 2017 15:59:32 GMT):
Initializing JSON handler for Transaction-Chain Connected to tcp://104.131.1.15:4004 Registration of [asset-chain 0.0 application/json] succeeded

smagne (Thu, 24 Aug 2017 16:00:19 GMT):
I'm not getting that

smagne (Thu, 24 Aug 2017 16:00:19 GMT):
I'm not getting that thanks @MikeMayori

smagne (Thu, 24 Aug 2017 16:01:54 GMT):
but I'm getting `Unregistering transaction processor` when stopping node

smagne (Thu, 24 Aug 2017 16:02:10 GMT):
I'm on windows I will try running console as admin

MikeMayori (Thu, 24 Aug 2017 16:03:51 GMT):
@smagner in your validator when register your processor a message like this :

MikeMayori (Thu, 24 Aug 2017 16:03:52 GMT):
processor_handlers] registered transaction processor: connection_id=2b779a0f9ea87e7d48253a28b96705680f1952ac5e3909c199f4a8accf90ce63923bda52cf78b5f61c1aa8e37da9ff2c2ce336e16a6285150db7c8be97a8bb54, family=asset-chain, version=0.0, encoding=application/json, namespaces=['f5f891']

smagne (Thu, 24 Aug 2017 16:05:00 GMT):
That's the problem, there is a connection issue or something like that between my validator and my transaction processor

MikeMayori (Thu, 24 Aug 2017 16:05:09 GMT):
@smagne are using docker

MikeMayori (Thu, 24 Aug 2017 16:05:09 GMT):
@smagne are using docker ?

smagne (Thu, 24 Aug 2017 16:05:13 GMT):
yes

MikeMayori (Thu, 24 Aug 2017 16:05:16 GMT):
ok

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@smagne any way you can give access

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@smagne any way you can give me access

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@cianx thanks

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@cianx thanks

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@cianx thanks

MikeMayori (Thu, 24 Aug 2017 16:05:43 GMT):
@cianx thanks

smagne (Thu, 24 Aug 2017 16:06:00 GMT):
on windows which is a strange monster hahaha

smagne (Thu, 24 Aug 2017 16:16:29 GMT):
after debugging looks like the sockets cannot connect to the validator

smagne (Thu, 24 Aug 2017 16:20:11 GMT):
@zac @agunde @jsmitchell any ideas?

jsmitchell (Thu, 24 Aug 2017 16:20:51 GMT):
windows firewall?

jsmitchell (Thu, 24 Aug 2017 16:21:15 GMT):
something else already bound to the port?

jsmitchell (Thu, 24 Aug 2017 16:21:35 GMT):
docker does _not_ report if it can't map a host port

jsmitchell (Thu, 24 Aug 2017 16:21:38 GMT):
which is evil, imo

pschwarz (Thu, 24 Aug 2017 16:21:56 GMT):
@smagne your validator is in docker, but you are running your transaction processor on your host, or another docker container?

pschwarz (Thu, 24 Aug 2017 16:21:56 GMT):
@smagne your validator is in docker, but are you running your transaction processor on your host, or another docker container?

smagne (Thu, 24 Aug 2017 16:22:15 GMT):
my TP is in my host

smagne (Thu, 24 Aug 2017 16:22:15 GMT):
my TP is in my host @pschwarz

pschwarz (Thu, 24 Aug 2017 16:22:30 GMT):
then the address should be `tcp://localhost:4004`

pschwarz (Thu, 24 Aug 2017 16:22:45 GMT):
I don't think I was clear on that previously

smagne (Thu, 24 Aug 2017 16:23:02 GMT):
Mm okay let me try one more time hehe

zac (Thu, 24 Aug 2017 16:26:26 GMT):
can you `curl localhost:8080/blocks`?

jsmitchell (Thu, 24 Aug 2017 16:26:48 GMT):
@MikeMayori I'm not super up to speed on the Microsoft COCO design. I've read the architecture paper. @cianx is more tuned in to this.

zac (Thu, 24 Aug 2017 16:27:01 GMT):
Is there a similar way to confirm that `tcp://localhost:4004` is working?

smagne (Thu, 24 Aug 2017 16:33:33 GMT):
guys thanks for your help, after changing to tcp://localhost:4004 is working, I'm having some encrypting issues now

cianx (Thu, 24 Aug 2017 16:42:26 GMT):
@MikeMayori CoCo as described in the Whitepaper is a transaction processing platform, the hosted blockchains become transaction processors for the CoCo platform. As CoCo provides Ledger privacy, consensus, and governance a natural fit for CoCo is to provide an interface for Sawtooth Transaction Processors.

MikeMayori (Thu, 24 Aug 2017 18:06:12 GMT):
Thanks

jsmitchell (Thu, 24 Aug 2017 18:45:54 GMT):
@MikeMayori inputs and outputs are described here http://intelledger.github.io/architecture/transactions_and_batches.html#batch-data-structure

MikeMayori (Thu, 24 Aug 2017 18:49:54 GMT):
I got this in your docs

MikeMayori (Thu, 24 Aug 2017 18:49:56 GMT):
Transaction Header Inputs and Outputs The inputs for IntegerKey family transactions must include: Address of the Name being changed or added The outputs for IntegerKey family transactions must include: Address of the Name being changed or added

MikeMayori (Thu, 24 Aug 2017 18:50:02 GMT):
not much explanation

MikeMayori (Thu, 24 Aug 2017 18:50:20 GMT):
what is that for ??

jsmitchell (Thu, 24 Aug 2017 18:50:24 GMT):
http://intelledger.github.io/architecture/transactions_and_batches.html#dependencies-and-input-output-addresses

MikeMayori (Thu, 24 Aug 2017 18:51:59 GMT):
got it now~ thanks

kspinka (Fri, 25 Aug 2017 08:00:27 GMT):
Has joined the channel.

theayoad (Fri, 25 Aug 2017 22:02:31 GMT):
Has joined the channel.

aadedeji (Fri, 25 Aug 2017 22:20:33 GMT):
Has joined the channel.

aadedeji (Fri, 25 Aug 2017 22:28:54 GMT):
Hi, first time posting here and I have a question about viewing past states of a given address. Using the rest endpoint /state/address, I am only able to get the state pertaining to the most recent state entry at that address. Is there a straightforward way of viewing past states of a given address?

zac (Fri, 25 Aug 2017 22:34:46 GMT):
`GET /state/{address}?head={block id}`

aadedeji (Fri, 25 Aug 2017 22:55:58 GMT):
Thanks, the above rest endpoint worked. I have access to encoded data of past states of the address. I have one more question. How do I then go about decoding the data string / making it readable so the encoded data can be used?

aadedeji (Fri, 25 Aug 2017 23:19:07 GMT):
Disregard my last question, I figured it out. Thanks again for your help

smagne (Mon, 28 Aug 2017 11:30:56 GMT):
Hello, I have a custom docker-compose file and I want to register my custom family when the validator starts, so I changed the `entrypoint` but it's not working, this is how my entrypoint ``` entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 && \ sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{\"family\": \"exosp\", \"version\": \"1.0\", \"encoding\": \"csv-utf8\"}, {\"family\":\"sawtooth_settings\", \"version\":\"1.0\", \"encoding\":\"application/protobuf\"}]' \ \"" ```

smagne (Mon, 28 Aug 2017 14:24:06 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=9sKisrSuLCFJjJ8FB) somebody saw my question?

marcojardim (Mon, 28 Aug 2017 14:49:37 GMT):
Has joined the channel.

pschwarz (Mon, 28 Aug 2017 14:55:29 GMT):
Could you post some more information on what's failing? With out any logs, it's rather hard to see what's going wrong...

smagne (Mon, 28 Aug 2017 14:59:54 GMT):
The family is not registered, I must open validator container batch and run the ```sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{\"family\": \"exosp\", \"version\": \"1.0\", \"encoding\": \"csv-utf8\"}, {\"family\":\"sawtooth_settings\", \"version\":\"1.0\", \"encoding\":\"application/protobuf\"}]' \ \""```

smagne (Mon, 28 Aug 2017 14:59:54 GMT):
The family is not registered, I must open validator container batch and run the register manyally ```sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{\"family\": \"exosp\", \"version\": \"1.0\", \"encoding\": \"csv-utf8\"}, {\"family\":\"sawtooth_settings\", \"version\":\"1.0\", \"encoding\":\"application/protobuf\"}]' \ \""```

smagne (Mon, 28 Aug 2017 14:59:54 GMT):
The family is not registered, I must open validator container batch and run the register manually ```sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{\"family\": \"exosp\", \"version\": \"1.0\", \"encoding\": \"csv-utf8\"}, {\"family\":\"sawtooth_settings\", \"version\":\"1.0\", \"encoding\":\"application/protobuf\"}]' \ \""```

pschwarz (Mon, 28 Aug 2017 15:13:03 GMT):
That setting doesn't start up the transaction processor, but it restricts what transaction processors are allowed (and required) for your network

pschwarz (Mon, 28 Aug 2017 15:13:42 GMT):
You still need to start it yourself (or add it to your compose file)

smagne (Mon, 28 Aug 2017 15:35:06 GMT):
There is no way to register the family automatically?

pschwarz (Mon, 28 Aug 2017 15:44:48 GMT):
No

zac (Mon, 28 Aug 2017 16:01:53 GMT):
Is registration necessary to run your own TP? I haven't had to do it yet.

smagne (Mon, 28 Aug 2017 16:17:40 GMT):
In the documentation said that I need to register my family which is the TP and this is achieve running the following command ```sawtooth config proposal create \ --url http://rest-api:8080 \ --key /root/.sawtooth/keys/my_key.priv \ sawtooth.validator.transaction_families='[{\"family\": \"exosp\", \"version\": \"1.0\", \"encoding\": \"csv-utf8\"}, {\"family\":\"sawtooth_settings\", \"version\":\"1.0\", \"encoding\":\"application/protobuf\"}]' \ \""```

smagne (Mon, 28 Aug 2017 16:18:04 GMT):
So I want to add it to my container but it seems that is not happening

pschwarz (Mon, 28 Aug 2017 17:27:08 GMT):
I think the problem you are having has to do with ordering in the compose file. `sawtooth config proposal create` is running against the REST API, which is started in a separate container via your compose file. What you should do with that setting (and the documentation should probably be updated to reflect this) is add that setting to the `sawtooth config genesis` command. That command can take a list of key-value pairs of settings to be included in the genesis block.

smagne (Mon, 28 Aug 2017 18:07:12 GMT):
Thanks @pschwarz do you have an example on how to do this? or how do I changed the genes file?

pschwarz (Mon, 28 Aug 2017 18:08:51 GMT):
Delete your line with `config proposal create`, and take the `sawtooth.validator.transaction_families=...` and add it to the end of the config genesis command

smagne (Mon, 28 Aug 2017 18:09:56 GMT):
thanks @pschwarz I will try that

zac (Mon, 28 Aug 2017 18:12:19 GMT):
@smagne Does it say somewhere in the documentation that you should add your family to the `transaction_families` setting?

zac (Mon, 28 Aug 2017 18:12:37 GMT):
I believe you can just _not_ set that setting, and it will accept all families.

zac (Mon, 28 Aug 2017 18:13:10 GMT):
Unless you are deploying this and need to limit the families used, I don't think there is any reason to do this.

smagne (Mon, 28 Aug 2017 18:13:42 GMT):
Hi @zac, after reading this post I think I must setup the family

smagne (Mon, 28 Aug 2017 18:13:43 GMT):
http://intelledger.github.io/app_developers_guide/docker.html#settings-transaction-family-usage

zac (Mon, 28 Aug 2017 18:14:51 GMT):
> _"One of the on-chain settings is the list of supported transaction families."_

zac (Mon, 28 Aug 2017 18:15:34 GMT):
I can see how that might give you the wrong impression. However, I believe if there is no list of supported families, they are _all_ supported.

zac (Mon, 28 Aug 2017 18:16:07 GMT):
Someone correct me if I'm wrong, but I've never messed with that setting while testing out my transaction processors.

pschwarz (Mon, 28 Aug 2017 18:16:31 GMT):
This is accurate

zac (Mon, 28 Aug 2017 18:16:44 GMT):
Yeah, I just wouldn't bother with it.

zac (Mon, 28 Aug 2017 18:16:59 GMT):
And the documentation should probably be clear that the setting is optional.

smagne (Mon, 28 Aug 2017 18:17:50 GMT):
That would be great, I never test it without registering the family

smagne (Mon, 28 Aug 2017 18:17:50 GMT):
That would be great, I never test it without registering the family, so I didn't know hehehe

smagne (Mon, 28 Aug 2017 18:18:17 GMT):
I've just assume that the family must be register

zac (Mon, 28 Aug 2017 18:19:03 GMT):
I imagine many production-level deployments will, but it's not something to worry about when you are just testing out your TP with Docker.

smagne (Mon, 28 Aug 2017 18:19:40 GMT):
great thanks both @zac and @pschwarz

MikeMayori (Mon, 28 Aug 2017 19:44:00 GMT):
any one can guide how to list a specific asset list from the ledger?? What will be the correct way to show let say I have a Poll Asset , and I did come transactions over it, now need to show that to my UI with the transactions and changes??

smagne (Mon, 28 Aug 2017 21:48:11 GMT):
Hi, after stopping the docker compose and trying to start it again I'm getting this error `[21:42:58.447 ERROR cli] Cannot have a genesis_batch_file and an existing chain`

smagne (Mon, 28 Aug 2017 21:48:50 GMT):
this is my docker-compose file in the entrypoint section ``` entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ \"" ```

pschwarz (Mon, 28 Aug 2017 21:56:15 GMT):
Did you stop it via ctrl-c, followed by `docker-compose -f down`?

smagne (Mon, 28 Aug 2017 22:08:32 GMT):
Yes, there is a way to start the validator with the current genesis and settings?

smagne (Mon, 28 Aug 2017 22:27:43 GMT):
any ideas @pschwarz ?

pschwarz (Mon, 28 Aug 2017 22:39:19 GMT):
The compose file should be recreating a new block store with every combination of `up`/`down`

pschwarz (Mon, 28 Aug 2017 22:39:19 GMT):
The compose file should be recreating a new block store with every combination of `up` / `down`

smagne (Mon, 28 Aug 2017 22:42:41 GMT):
basically, I'm fu$# hahaha

randombishop (Mon, 28 Aug 2017 23:21:51 GMT):
Hi, philosophical question today please : I understood that transactions must explicitly specify the input addresses that will be read and the output adresses to be written ; but why is that ?

randombishop (Mon, 28 Aug 2017 23:24:03 GMT):
What if a transaction needs to read a settings address or other helper addresses to be processed ? Why should the sender specify them ? Why not just let the transaction processor read and write data as long as it's a legal transaction ?

dkhungme (Mon, 28 Aug 2017 23:44:03 GMT):
Has joined the channel.

dkhungme (Mon, 28 Aug 2017 23:47:50 GMT):
Dear all, I am trying to learn how fork is resolved in Sawtooth. In other to do that, I start 2 validators at the same block height, and submit transaction to them using intkey workload. What I observe is one of them will win, and the block proposed by the other is rejected. The winning validator would keep on processing new transactions, but the validator with rejected block seems to stuck, and not even catching up with the blockchain anymore. I don't really understand why the other validator become obsolete and completely stuck. Could anyone please advise As per setup, I run sawtooth on vagrant. I first started two rest api sawtooth-rest-api -v && sawtooth-rest-api -B 127.0.0.1:8090 -C 127.0.0.2:4004 -v - Then start 2 validators connecting to the two rest-api set up above: sawtooth-validator -v && sawtooth-validator -B network:127.0.0.2:8800 -B component:127.0.0.2:4004 -v - Each validator is then connect to one transaction processor: intkey-tp-python -v && intkey-tp-python tcp://127.0.0.2:4004 -v

cianx (Tue, 29 Aug 2017 02:45:32 GMT):
@dkhungme In fork resolution one validator will always win the resolution. The determination of the winning block is dependent on the consensus algorithm. Which consensus are you using? What signs are you observing that shows the 2nd validator is stuck?

nam0208 (Tue, 29 Aug 2017 03:24:12 GMT):
Has joined the channel.

dkhungme (Tue, 29 Aug 2017 11:43:40 GMT):
I use the poet_simulator concensus (the one written in python, not sgx implementation). The 2nd validator is stuck in a sense that it does not process any other transactions or blocks, evidenced by absolutely no message printed out in the log after its proposed block gets rejected. @cianx

cianx (Tue, 29 Aug 2017 15:55:58 GMT):
@dkhungme can you send me the logs for both validators?

AkarshaMahadeva (Tue, 29 Aug 2017 17:09:50 GMT):
How is sawtooth different from Iroha and fabric. How does sawtooth ensure more security than other implementations

hsaputra (Tue, 29 Aug 2017 17:48:07 GMT):
Has joined the channel.

aadedeji (Wed, 30 Aug 2017 00:34:42 GMT):
Hi, I have question about deleting addresses from the validator's merkle state using the python sdk. I have put code within a TP ( state_store.delete([address]) ) that should delete addresses from the validator's merkle state. When I look up the state of an address after deleting it (the validator acknowledges the delete request without throwing an error), the state is not empty as expected. Is there anything I need to do besides state_store.delete([address]) to delete an address from the merkle state?

smagne (Wed, 30 Aug 2017 12:31:15 GMT):
Hello, is there any way to retrieve multiple addresses in a transaction processor?

smagne (Wed, 30 Aug 2017 12:31:31 GMT):
```let address = [EXO_SP_NAMESPACE + _hash(publicKey).slice(0,64)]; if(payload.toAddress !== null && payload.toAddress !== undefined){ address.push(EXO_SP_NAMESPACE + _hash(payload.toAddress).slice(0,64)) } // Get the current state, for the key's address: const getPromise = state.get(address);```

dkhungme (Wed, 30 Aug 2017 12:33:23 GMT):
@cianx I had direct messaged you the logs

smagne (Wed, 30 Aug 2017 14:00:56 GMT):
Hello, I'm getting the error `Tried to get unauthorized address` when doing `state.get(address)`

agunde (Wed, 30 Aug 2017 14:09:55 GMT):
@smagne is the address you are trying to get in the inputs of the transaction?

smagne (Wed, 30 Aug 2017 14:30:36 GMT):
Yes

smagne (Wed, 30 Aug 2017 14:33:08 GMT):
It could be related with the signed key?

pschwarz (Wed, 30 Aug 2017 14:36:27 GMT):
Probably not. You should print out the address you're computing in the handler and verify that it's the same one in the transaction

smagne (Wed, 30 Aug 2017 14:37:10 GMT):
in the inputs/outputs?

pschwarz (Wed, 30 Aug 2017 14:37:51 GMT):
Print out the address you're computing _in your TP_, and verify that it's the one in your transaction's _inputs_

smagne (Wed, 30 Aug 2017 14:38:01 GMT):
okay

smagne (Wed, 30 Aug 2017 14:57:35 GMT):
Hi @pschwarz this are the inputs/outputs and the address that I want to get ```inputs: [ '29f27ac66748994652b59127226f828a7941a0e90171710c13893a96c3a3d1d0c2d4bd', '29f27a63017570dce02d3632bd3668de710f89712ade2517c954e3ad4384da1c7eef4d' ] outputs: [ '29f27ac66748994652b59127226f828a7941a0e90171710c13893a96c3a3d1d0c2d4bd', '29f27a63017570dce02d3632bd3668de710f89712ade2517c954e3ad4384da1c7eef4d' ] address: 29f27ac66748994652b59127226f828a7941a0e90171710c13893a96c3a3d1d0c2d4bd```

aadedeji (Wed, 30 Aug 2017 14:59:51 GMT):
Hi, I have question about deleting addresses from the validator's merkle state. I have put code within a TP ( state_store.delete([address]) ) that should delete addresses from the merkle state. When I look up the state of an address after deleting it (the validator acknowledges the delete request without throwing an error), the address is still found and state is not empty as expected. Is there an established way (that works) to delete addresses from the merkle state? Thanks in advance for any help

boydjohnson (Wed, 30 Aug 2017 15:08:12 GMT):
@aadedeji You can set an address to empty bytes, b''. We have unit tests of the functionality but no integration tests for it. Does it ever work, or is it consistently not working?

smagne (Wed, 30 Aug 2017 15:12:20 GMT):
@boydjohnson @agunde @pschwarz any ideas on this? [ ](https://chat.hyperledger.org/channel/sawtooth?msg=Pyudw6AqDPHx7rpCY)

boydjohnson (Wed, 30 Aug 2017 15:16:52 GMT):
@smagne It looks like the address is in both inputs and outputs, but you are getting an AuthorizationException?

smagne (Wed, 30 Aug 2017 15:17:04 GMT):
Yes

smagne (Wed, 30 Aug 2017 15:17:04 GMT):
Yes @boydjohnson

boydjohnson (Wed, 30 Aug 2017 15:18:27 GMT):
That address is printed out when the AuthorizationException is thrown?

smagne (Wed, 30 Aug 2017 15:22:56 GMT):
Yes @boydjohnson I'm getting `Tried to get unauthorized address 29f27ac66748994652b59127226f828a7941a0e90171710c13893a96c3a3d1d0c2d4bd`

aadedeji (Wed, 30 Aug 2017 15:23:30 GMT):
@boydjohnson It consistently does not work. I will try setting the address to empty bytes and see if that makes a difference

boydjohnson (Wed, 30 Aug 2017 15:23:49 GMT):
Thanks @aadedeji

boydjohnson (Wed, 30 Aug 2017 15:24:54 GMT):
@smagne Where are you logging out the inputs and outputs?

pschwarz (Wed, 30 Aug 2017 15:28:37 GMT):
@aadedeji can you file a bug with a simple example and steps to reproduce?

aadedeji (Wed, 30 Aug 2017 15:55:59 GMT):
@pschwarz By file a bug do you mean post a screenshot of the validator logging output and code I am using to delete from state?

boydjohnson (Wed, 30 Aug 2017 15:58:10 GMT):
We have a public jira https://jira.hyperledger.org/projects/STL/summary. If you could sign in with your LFID and make an issue, it would be helpful.

aadedeji (Wed, 30 Aug 2017 15:59:18 GMT):
Ok thanks, I will file a bug there

MikeMayori (Wed, 30 Aug 2017 19:14:59 GMT):
Hi there, some of your videos mention this market value transaction family , links are broken like this https://intelledger.github.io/mktnav_users_guide/tutorial.html

MikeMayori (Wed, 30 Aug 2017 19:15:59 GMT):
Would anybody guide me where to find this documentation , also do you have any supply chain use cases implemented that you can share ??

boydjohnson (Wed, 30 Aug 2017 19:18:10 GMT):
That is on our 0.7 branch, so the correct link is: http://intelledger.github.io/0.7/mktnav_users_guide.html.

boydjohnson (Wed, 30 Aug 2017 19:32:32 GMT):
@MikeMayori There is a PR for a complex supply chain transaction family on our repo and much work going into it. We are calling it Track and Trade. https://github.com/hyperledger/sawtooth-core/pull/767

mfford (Wed, 30 Aug 2017 20:22:43 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, August 31st from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, August 31st Time: 10-11am CDT We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi Agenda: 1. Introductions-Mark Ford 2. Blockchain App Development with JavaScript and Sawtooth -Zac Delventhal 3. Open Forum

pschwarz (Wed, 30 Aug 2017 20:34:30 GMT):
@MikeMayori There is a basic supply chain transaction family that includes everything (TP, state delta export to a Postgres db, and a rest api for viewing the data)

pschwarz (Wed, 30 Aug 2017 20:35:06 GMT):
It's found here: https://github.com/hyperledger/sawtooth-core/tree/master/families/supplychain

pschwarz (Wed, 30 Aug 2017 20:36:14 GMT):
No documentation for it, other than the transaction family spec (which is in the man doc). There are three cli tools in `/bin/` that start with `supplychain-`

pschwarz (Wed, 30 Aug 2017 20:36:22 GMT):
They have pretty decent help text

pschwarz (Wed, 30 Aug 2017 20:36:53 GMT):
(the rest api just merged today, so if you may need to run from source)

MikeMayori (Wed, 30 Aug 2017 20:37:12 GMT):
thanks

MikeMayori (Wed, 30 Aug 2017 20:39:10 GMT):
Will you be able to guide me to run it or deploy it??

pschwarz (Wed, 30 Aug 2017 21:10:40 GMT):
Start a validator using the docker-compose method from the user guide. Then following the testing instructions here: https://github.com/hyperledger/sawtooth-core/pull/721 and here: https://github.com/hyperledger/sawtooth-core/pull/762

pschwarz (Wed, 30 Aug 2017 21:10:46 GMT):
Best I can do at the moment...

aadedeji (Wed, 30 Aug 2017 23:04:45 GMT):
@boydjohnson Hi, I was about to create a new issue regarding the Python SDK state delete functionality. However, I noticed that there was already an unresolved issue ( https://jira.hyperledger.org/browse/STL-603?jql=project%20%3D%20STL%20AND%20component%20%3D%20%22Python%20SDK%22 ) of a similar nature already posted.

aadedeji (Wed, 30 Aug 2017 23:17:02 GMT):
@boydjohnson I also tried to set the address state to b'' after deleting the address (after state_store.delete([address])) but the address and its state still shows up when looking up the /state/address endpoint. I have attached the relevant part of the validator output.

aadedeji (Wed, 30 Aug 2017 23:17:22 GMT):

Message Attachments

cianx (Wed, 30 Aug 2017 23:21:01 GMT):
@jsmitchell can you give @dkhungme the command line to start a 2nd validator joining a first validator on a network. The commands he is referencing above don't seem like they include the proper clauses to peer the validators. ``` As per setup, I run sawtooth on vagrant. I first started two rest api sawtooth-rest-api -v && sawtooth-rest-api -B 127.0.0.1:8090 -C 127.0.0.2:4004 -v - Then start 2 validators connecting to the two rest-api set up above: sawtooth-validator -v && sawtooth-validator -B network:127.0.0.2:8800 -B component:127.0.0.2:4004 -v - Each validator is then connect to one transaction processor: intkey-tp-python -v && intkey-tp-python tcp://127.0.0.2:4004 -v```

zac (Thu, 31 Aug 2017 15:59:37 GMT):
Link to the documentation with the default docker compose file that will run some sawtooth components for you: http://intelledger.github.io/app_developers_guide/docker.html#download-the-docker-compose-file

cianx (Thu, 31 Aug 2017 16:12:46 GMT):
@dkhungme Here is a set of commands to start 2 validators that are peered. ``` Validator 1 @ ip 172.17.0.2 sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k ~/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch intkey-tp-python -vv tcp://127.0.0.1:4004 & settings-tp -vv tcp://127.0.0.1:4004 & sawtooth-validator -vvv \ --endpoint tcp://eth0:8801 \ --bind component:tcp://127.0.0.1:4004 \ --bind network:tcp://eth0:8801 Validator 2 @ ip 172.17.0.3 sawtooth admin keygen intkey-tp-python -vv tcp://127.0.0.1:4004 & settings-tp -vv tcp://127.0.0.1:4004 & sawtooth-validator -vvv \ --endpoint tcp://eth0:8802 \ -P static \ --peers tcp://172.17.0.2:8801 \ --bind component:tcp://127.0.0.1:4004 \ --bind network:tcp://eth0:8802 ```

cianx (Thu, 31 Aug 2017 16:16:23 GMT):
If the peering works you will see a NETWORK Connect messages in the Validator 1 logs ```[2017-08-31 16:08:46.587 DEBUG interconnect] ServerThread receiving NETWORK_CONNECT message: 89 bytes ```

oatmealraisin (Thu, 31 Aug 2017 18:47:29 GMT):
Has joined the channel.

oatmealraisin (Thu, 31 Aug 2017 18:47:43 GMT):
hello, is the intkey smoke test still supported?

boydjohnson (Thu, 31 Aug 2017 18:49:25 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/tests/test_intkey_smoke.py This one?

oatmealraisin (Thu, 31 Aug 2017 18:50:33 GMT):
Yes. i'm trying to convert the associated compose file into a kubernetes deployment, and I'm getting an empty state error.

oatmealraisin (Thu, 31 Aug 2017 18:50:51 GMT):
I'm not entirely sure why the state should be empty at that point?

oatmealraisin (Thu, 31 Aug 2017 18:51:09 GMT):
I've confirmed that the services can speak with one another.

oatmealraisin (Thu, 31 Aug 2017 18:51:45 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_intkey_smoke_python.yaml this file

oatmealraisin (Thu, 31 Aug 2017 18:52:33 GMT):
Do the containers need to have a shared directory at /project/sawtooth-core, or is that just injecting the latest files into the container

boydjohnson (Thu, 31 Aug 2017 18:53:18 GMT):
It doesn't need to be shared that is just mounting the latest source code.

oatmealraisin (Thu, 31 Aug 2017 18:53:53 GMT):
@boydjohnson thanks!

boydjohnson (Thu, 31 Aug 2017 18:54:32 GMT):
Your welcome. Tell us more about how your kubernetes with sawtooth experience goes, as you make progress.

boydjohnson (Thu, 31 Aug 2017 18:54:32 GMT):
You're welcome. Tell us more about how your kubernetes with sawtooth experience goes, as you make progress.

oatmealraisin (Thu, 31 Aug 2017 19:05:16 GMT):
It's going well in production, however the smoketest is giving me issues. I'm hitting the last check "Empty state error"

oatmealraisin (Thu, 31 Aug 2017 19:06:03 GMT):
Why would the state be empty at that point?

boydjohnson (Thu, 31 Aug 2017 19:08:43 GMT):
I'm going to look at the test a little...

boydjohnson (Thu, 31 Aug 2017 19:11:43 GMT):
So that "Empty state error" is a little bit of a bad message. It is testing that the state should be empty at the start of the test and if it isn't it throws that error.

boydjohnson (Thu, 31 Aug 2017 19:12:41 GMT):
Does kubernetes reuse containers or are all the containers fresh when the test starts?

vbledar (Thu, 31 Aug 2017 19:18:43 GMT):
Has joined the channel.

vbledar (Thu, 31 Aug 2017 19:19:26 GMT):
Hi everyone, I'm trying to setup a java based transaction family, but I've been unable to install it in my ubuntu vm were I have installed sawtooth. Can someone guide me to a tutorial?

boydjohnson (Thu, 31 Aug 2017 19:23:04 GMT):
http://intelledger.github.io/app_developers_guide/java_sdk.html This doesn't have installation instructions, but is a general tutorial on using the java sdk. So if you have the sawtooth-core repo in the ubuntu vm, you can ./bin/buld_java_sdk and the java sdk will be installed and usable by maven.

boydjohnson (Thu, 31 Aug 2017 19:23:04 GMT):
http://intelledger.github.io/app_developers_guide/java_sdk.html This doesn't have installation instructions, but is a general tutorial on using the java sdk. So if you have the sawtooth-core repo in the ubuntu vm, you can `./bin/buld_java_sdk` and the java sdk will be installed and usable by maven.

vbledar (Thu, 31 Aug 2017 19:25:11 GMT):
Thanks, I've seen that and have already build my transaction family. I have built my .jar file. Unfortunately I don't understand how I install it in the current sawtooth setup I have in the VM. I installed sawtooth using apt-get not building the repo.

boydjohnson (Thu, 31 Aug 2017 19:29:48 GMT):
So the jar built correctly?

boydjohnson (Thu, 31 Aug 2017 19:31:20 GMT):
A normal sawtooth setup is distributed where the `sawtooth-validator` runs in one process, a transaction processor, say your java one, runs in another process and they all communicate over zeromq messaging.

vbledar (Thu, 31 Aug 2017 19:31:50 GMT):
Yes. I used the sawtooth maven dependecies and now I have a jar with my one transaction for the time being.

vbledar (Thu, 31 Aug 2017 19:33:20 GMT):
But I don't know how to make my sawtooth installation aware, basically from what you said, I don't know how to start my transaction processor.

vbledar (Thu, 31 Aug 2017 19:35:44 GMT):
I took a look on the java sdk at the following file: sawtooth-core\sdk\java\src\main\java\sawtooth\sdk\processor\TransactionProcessor.java

vbledar (Thu, 31 Aug 2017 19:36:11 GMT):
Should I create one for my transaction family or is it enough to use this one?

boydjohnson (Thu, 31 Aug 2017 19:37:20 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/bin/intkey-tp-java I would make a script to run your jar, like this.

vbledar (Thu, 31 Aug 2017 19:38:25 GMT):
I think this is what I was looking for. Thanks a lot. I'll give it try immediately.

boydjohnson (Thu, 31 Aug 2017 19:38:39 GMT):
You're welcome.

vbledar (Thu, 31 Aug 2017 20:07:05 GMT):
I tried it but it is not running. I'm getting the following: java.lang.IllegalArgumentException: Invalid URI: *

vbledar (Thu, 31 Aug 2017 20:07:42 GMT):
I guess I need to find out the ip address (I guess this should be localhost since I'm running everything in one vm) and the port on which the zmq is listening on.

boydjohnson (Thu, 31 Aug 2017 20:09:32 GMT):
It should be port 4004 by default, but you should also start up the `sawtooth validator`.

vbledar (Thu, 31 Aug 2017 20:10:42 GMT):
Yes, the validator is up and running and since I'm getting the following in its logs I guess you must be right: Listening on tcp://127.0.0.1:4004

oatmealraisin (Thu, 31 Aug 2017 20:11:39 GMT):
@boydjohnson sorry for the delay, I've been testing things out

oatmealraisin (Thu, 31 Aug 2017 20:12:31 GMT):
@boydjohnson kube has functionality to keep storage between containers, but I'm standing everything up and tearing it down for each run. The normal spin up goes:

oatmealraisin (Thu, 31 Aug 2017 20:12:38 GMT):
1: Validator comes up

oatmealraisin (Thu, 31 Aug 2017 20:12:47 GMT):
2: settings-tp and intkey-tp come up

oatmealraisin (Thu, 31 Aug 2017 20:12:51 GMT):
3: rest-api comes up

oatmealraisin (Thu, 31 Aug 2017 20:13:08 GMT):
4: test-intkey-smoke-python comes up

boydjohnson (Thu, 31 Aug 2017 20:13:26 GMT):
Still getting the error?

oatmealraisin (Thu, 31 Aug 2017 20:14:01 GMT):
@boydjohnson yes :(

boydjohnson (Thu, 31 Aug 2017 20:14:14 GMT):
:(

oatmealraisin (Thu, 31 Aug 2017 20:14:49 GMT):
btw, just to be clear, I'm running on OpenShift, which is a fork of Kubernetes. If you all are in need of the kube files for standing up sawtooth, I can convert what I have to Kube canon

vbledar (Thu, 31 Aug 2017 20:15:21 GMT):
@boydjohnson thanks a lot: registered transaction processor: connection_id=4b0f4f8f

boydjohnson (Thu, 31 Aug 2017 20:15:32 GMT):
Sweet @vbledar

boydjohnson (Thu, 31 Aug 2017 20:16:47 GMT):
@rbuysse @adamludvik Do either of you know anyting about Kubernetes or OpenShift?

rbuysse (Thu, 31 Aug 2017 20:17:46 GMT):
Not really. :(

oatmealraisin (Thu, 31 Aug 2017 20:35:14 GMT):
@boydjohnson It seems that even when the test isn't run, a curl to http//rest-api:8080/state returns a non-null value. What could be setting the state? I register the settings-tp and intkey-tp with the validator before making the curl, could that affect things?

boydjohnson (Thu, 31 Aug 2017 20:36:31 GMT):
Are you using PoET and setting on-chain configuration in the genesis batch?

oatmealraisin (Thu, 31 Aug 2017 20:39:18 GMT):
the commands that are run are identical to the ones in the docker compose for the tests, although to be honest I'm using the images on dockerhub

boydjohnson (Thu, 31 Aug 2017 20:40:49 GMT):
Could you post the state values that curl /state gives you?

oatmealraisin (Thu, 31 Aug 2017 20:46:51 GMT):
https://gist.github.com/oatmealraisin/56546e574c73cf8fb789171b47488d11

oatmealraisin (Thu, 31 Aug 2017 20:48:09 GMT):
I believe that the test is expecting []

oatmealraisin (Thu, 31 Aug 2017 20:55:16 GMT):
Perhaps there is a command I can run before the test that would clear everything?

boydjohnson (Thu, 31 Aug 2017 21:06:49 GMT):
That's strange because the address that is there is a settings address. You could `rm /var/lib/sawtooth/*` as part of the startup of the validator. This blows away the data directory.

jsmitchell (Thu, 31 Aug 2017 21:07:28 GMT):
doesn't the config batch which goes into the genesis block include a setting now?

jsmitchell (Thu, 31 Aug 2017 21:07:34 GMT):
@pschwarz ^

jsmitchell (Thu, 31 Aug 2017 21:08:04 GMT):
why are we expecting the state to be empty?

jsmitchell (Thu, 31 Aug 2017 21:08:08 GMT):
seems like a bad assumption

boydjohnson (Thu, 31 Aug 2017 21:08:45 GMT):
@drozd And I were talking about that and it would be better to assert that intkey state is empty before the test.

pschwarz (Thu, 31 Aug 2017 21:08:55 GMT):
This is true - there should be at least one state entry for a setting

jsmitchell (Thu, 31 Aug 2017 21:09:00 GMT):
sounds like a broken test to me

oatmealraisin (Thu, 31 Aug 2017 21:12:51 GMT):
@jsmo

oatmealraisin (Thu, 31 Aug 2017 21:13:06 GMT):
@jsmitchell So i'm not crazy?? Could it be?

drozd (Thu, 31 Aug 2017 21:33:25 GMT):
@oatmealraisin the test does indeed have an error in it

drozd (Thu, 31 Aug 2017 21:33:57 GMT):
you might have already said it, but how are you starting the validator and everything else?

oatmealraisin (Thu, 31 Aug 2017 21:36:38 GMT):
@drozd Exactly as it is in the docker compose file, same commands, same order, same ports exposed

oatmealraisin (Thu, 31 Aug 2017 21:37:53 GMT):
however, I am using the docker image from dockerhub

drozd (Thu, 31 Aug 2017 21:40:11 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/docker/compose/sawtooth-default.yaml

drozd (Thu, 31 Aug 2017 21:40:16 GMT):
do you mean that compose file?

dkhungme (Fri, 01 Sep 2017 01:57:52 GMT):
thanks much @cianx . I will try this out

lmrln (Fri, 01 Sep 2017 10:10:49 GMT):
Has joined the channel.

zac (Fri, 01 Sep 2017 15:50:44 GMT):
Does anyone know of a simple way to ping a validator and make sure it is set working properly?

zac (Fri, 01 Sep 2017 15:51:02 GMT):
The equivalent of `curl localhost:8080/blocks` for the REST API?

zac (Fri, 01 Sep 2017 15:51:20 GMT):
I am having validator connection issues, and I want to rule that out

jsmitchell (Fri, 01 Sep 2017 15:51:32 GMT):
connect a rest api to it and run `curl localhost:8080/blocks` ?

jsmitchell (Fri, 01 Sep 2017 15:51:36 GMT):
_runs_

zac (Fri, 01 Sep 2017 15:51:42 GMT):
the REST API does work

zac (Fri, 01 Sep 2017 15:51:58 GMT):
and the dock TPs are talking to the validator

zac (Fri, 01 Sep 2017 15:52:12 GMT):
so it's probably not a Docker issue

zac (Fri, 01 Sep 2017 15:52:30 GMT):
But I want to make sure I can connect to `tcp:localhost:4004`

zac (Fri, 01 Sep 2017 15:52:30 GMT):
But I want to make sure I can connect to `tcp://localhost:4004`

zac (Fri, 01 Sep 2017 15:53:14 GMT):
Because the error is telling me that I can't

zac (Fri, 01 Sep 2017 15:53:28 GMT):
And I don't know enough to confirm that the error is wrong yet

jsmitchell (Fri, 01 Sep 2017 15:53:29 GMT):
what error?

jsmitchell (Fri, 01 Sep 2017 15:53:32 GMT):
from where?

zac (Fri, 01 Sep 2017 15:54:32 GMT):
``` Connected to tcp://localhost:4004 Disconnected from tcp://localhost:4004 Attempting to reconnect to tcp://localhost:4004 Connected to tcp://localhost:4004 Disconnected from tcp://localhost:4004 Attempting to reconnect to tcp://localhost:4004 Connected to tcp://localhost:4004 Disconnected from tcp://localhost:4004 Attempting to reconnect to tcp://localhost:4004 . . . ```

pschwarz (Fri, 01 Sep 2017 15:54:54 GMT):
Do you have vagrant running?

zac (Fri, 01 Sep 2017 15:54:55 GMT):
This is coming from the JS SDK `Stream` class (I think)

zac (Fri, 01 Sep 2017 15:55:05 GMT):
Same problem I was having during the talk

pschwarz (Fri, 01 Sep 2017 15:55:08 GMT):
And docker containers?

zac (Fri, 01 Sep 2017 15:55:18 GMT):
def not docker containers

zac (Fri, 01 Sep 2017 15:55:21 GMT):
god dammit

zac (Fri, 01 Sep 2017 15:55:25 GMT):
vagrant is running

zac (Fri, 01 Sep 2017 15:55:26 GMT):
how?

zac (Fri, 01 Sep 2017 15:55:51 GMT):
butts

zac (Fri, 01 Sep 2017 15:56:39 GMT):
stupid secret vagrant instance ruining my talk

podfrogs (Fri, 01 Sep 2017 18:13:48 GMT):
Has joined the channel.

podfrogs (Fri, 01 Sep 2017 18:16:23 GMT):
Hello! We are considering to use SawtoothLake for our block-chain application. One of the questions I have, other the file based leveldb database., is there an option currently or will there be an option in future to use a no-sql database like CouchDB ? Thanks

pschwarz (Fri, 01 Sep 2017 19:19:15 GMT):
There is a feature to subscribe to state changes that can be applied to an external DB

podfrogs (Fri, 01 Sep 2017 20:53:32 GMT):
What we are trying to do is distribute data, which are essentially PDF files for many users. This may become huge and a file based database may not be quite scalable for that. Is there a way we can substitute the database with a non sql database? (that means there will be no file based db at all)

JamieOBE (Sat, 02 Sep 2017 07:12:55 GMT):
Has joined the channel.

dimension7 (Sat, 02 Sep 2017 07:29:50 GMT):
Has joined the channel.

glenlau (Sat, 02 Sep 2017 13:12:12 GMT):
Has joined the channel.

alexandra_g (Sat, 02 Sep 2017 21:13:00 GMT):
Has joined the channel.

Khakhar (Mon, 04 Sep 2017 03:31:24 GMT):
Has joined the channel.

pschwarz (Mon, 04 Sep 2017 18:58:13 GMT):
Not at the moment, now. Currently it's handled by an internal API, that could very well be subject to change across versions (even after 1.0)

pschwarz (Mon, 04 Sep 2017 18:58:13 GMT):
Not at the moment, no. Currently it's handled by an internal API, that could very well be subject to change across versions (even after 1.0)

pschwarz (Mon, 04 Sep 2017 18:58:40 GMT):
Are you planning on storing the PDF files on the block chain?

dave_ias (Tue, 05 Sep 2017 03:05:55 GMT):
Has joined the channel.

oatmealraisin (Tue, 05 Sep 2017 15:49:26 GMT):
@drozd Sorry for the delay, labor day weekend and all. I mean the docker-compose file for the test,https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_intkey_smoke_python.yaml

boydjohnson (Tue, 05 Sep 2017 15:52:20 GMT):
@oatmealraisin , @drozd has a PR up -- https://github.com/hyperledger/sawtooth-core/pull/798 -- that restricts the test to only assert that intkey state is empty at the beginning of the test.

oatmealraisin (Tue, 05 Sep 2017 17:19:13 GMT):
@boydjohnson Thanks!

boydjohnson (Tue, 05 Sep 2017 21:35:42 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/validator/tests/test_context_manager/tests.py#L1435 @drozd pointed out to me that one of the context manager delete unit tests is missing an assertion and when the assertion is put in the test fails. I worked on that PR along with @cintel.

dragon82 (Wed, 06 Sep 2017 09:00:08 GMT):
Has joined the channel.

MoulaliMvg (Wed, 06 Sep 2017 09:16:52 GMT):
Has joined the channel.

AkarshaMahadeva (Wed, 06 Sep 2017 20:25:33 GMT):
1)How does Sawtooth ensure immutability? Is it because of merkle tree hashing? How is sawtooth more secured than fabric or iroha? What makes it more scalable? I have these questions now.

Dan (Wed, 06 Sep 2017 23:18:19 GMT):
Yes immutability comes in part from merkle trie. And yes that makes it different than Fabric which does not, as I understand it, provide global state agreement (via that merkle root hash). I'm not familiar enough with Iroha to comment on difference there.

Dan (Wed, 06 Sep 2017 23:19:23 GMT):
Sawtooth is scalable for a few reasons but the main one is that we support multiple consensus algorithms including Proof of Elapsed time which has similar scaling characteristics to Proof of Work but without the electricity consumption.

Meai1 (Thu, 07 Sep 2017 14:38:35 GMT):
Has joined the channel.

Meai1 (Thu, 07 Sep 2017 14:38:56 GMT):
Can you guys explain the concept behind smart contracts? Isnt that inherently always going to rely on sources that can be manipulated and changed at will? How is it secure that e.g. my smart contract will automatically deduct 100 BTC from my account if my client somehow manages to convince sensor X or API Y or metric Z to appear a certain way? Lets take a fish company as an example. They put sensors into their fish tank to monitor if the fish is fresh and if the sensors report that it is, the money will automatically be deducted. Uh ok, what if the guy just puts the sensor in a bucket of fresh water and the entire truckload of fish is actually rotting right next to it? What then?

kelly_ (Thu, 07 Sep 2017 14:56:12 GMT):
@Meai1 if you are having smart contracts actuated based off external data feeds (whether they be price feeds or sensors), that it is always important that those data feeds are secure

kelly_ (Thu, 07 Sep 2017 14:57:35 GMT):
for instance if I have an option contract that says pay $10 if the price goes over $50

kelly_ (Thu, 07 Sep 2017 14:58:07 GMT):
you have to get that price feed from somewhere, and if it is manipulated, than the smart contract can be manipulated

Meai1 (Thu, 07 Sep 2017 14:59:07 GMT):
exactly, so smart contracts seem to be inherently insecure

Meai1 (Thu, 07 Sep 2017 15:02:09 GMT):
Why the hype around them? Crypto coins make sense insofar that it's just a distributed database storing tamper free strings aka "coins", but smart contracts would only work in a trusted environment. If you trust your business partner anyway, then you might just as well use a regular sensor that is streaming updates to some server. I guess the only advantage is that you dont have to code a backup of the records yourself, it's built into the database automatically as a principle design decision.

kelly_ (Thu, 07 Sep 2017 15:06:53 GMT):
Well sensors could be made secure, or you minimizing your trust to that sensor host, but not necessarily using trust around the payment

kelly_ (Thu, 07 Sep 2017 15:07:13 GMT):
for example you and I may both trust NASDAQ for a price feed, but I don't trust that you will pay me out on an option

kelly_ (Thu, 07 Sep 2017 15:07:48 GMT):
so we could agree to use NASDAQs price feed, and have a smart contract that removes the trust out of the payment

Meai1 (Thu, 07 Sep 2017 15:08:04 GMT):
well, 'trust' is a little overstated. I would never trust any service of any kind that would automatically deduct money from my account based on some 3rd party information

Meai1 (Thu, 07 Sep 2017 15:09:11 GMT):
You are saying that we should use a smart contract but it would omit the automatic execution ? Then what's the real difference between a regular person hitting 'okay' in a gui

Meai1 (Thu, 07 Sep 2017 15:13:06 GMT):
Related to this, I was wondering how all these people are making distributed social networks / forums based on blockchain. How do they make sure that everyone is running the same software?

kelly_ (Thu, 07 Sep 2017 15:23:44 GMT):
I'm not saying it would omit the automatic execution

kelly_ (Thu, 07 Sep 2017 15:24:33 GMT):
re: social networks/forums, most of the time most users interact with a single node through a web interface

Meai1 (Thu, 07 Sep 2017 15:35:32 GMT):
Yeah I have seen that ,but that feels like cheating. It's not really decentralized then if you can shoot down nodes that you care about

kelly_ (Thu, 07 Sep 2017 16:52:10 GMT):
well, presumably the network that manages the points/currency is still decentralized

zac (Thu, 07 Sep 2017 19:35:37 GMT):
@Meai1 Even if the ecosystem feeding data to a smart contract is not perfectly secure, it may still be worth using

zac (Thu, 07 Sep 2017 19:35:58 GMT):
We have pretty good solutions for insecure ecosystems: insurance, courts, etc

zac (Thu, 07 Sep 2017 19:37:31 GMT):
If you are purely exchanging digital goods (like a cryptocurrency), then you can shoot for perfect security, and that does get potentially very interesting.

zac (Thu, 07 Sep 2017 19:37:48 GMT):
But I don't think perfect security will ever be possible with any physical assets.-

zac (Thu, 07 Sep 2017 19:38:02 GMT):
That doesn't mean a smart contract is useless for those though.

zac (Thu, 07 Sep 2017 19:59:20 GMT):
Proposal: We change the default REST API port from `8080` to `8008`. Reasons: - It's twice the default validator port of `4004` - It's less frequently used than `8080` and will be less likely to conflict with other services - It's still a port that is understood to be used for HTTP services

zac (Thu, 07 Sep 2017 19:59:26 GMT):
Thoughts?

Dan (Thu, 07 Sep 2017 20:38:55 GMT):
Have we run into collisions with 8080? I don't see an issue with the change, other than every change has its cost (confusing people who learned earlier port, make sure docs are in sync etc.)

zac (Thu, 07 Sep 2017 20:43:03 GMT):
The Track and Trade app uses RethinkDB, which deploys a GUI to `8080`.

zac (Thu, 07 Sep 2017 20:43:54 GMT):
`8080` is a very common default (it's `aiohttp`'s default, which is why it's the REST API's default), so I imagine there will be other collisions.

zac (Thu, 07 Sep 2017 20:45:27 GMT):
I figure if there has to be confusion, better to be now when we aren't tied to a particular API.

zac (Thu, 07 Sep 2017 20:45:51 GMT):
But yeah, maybe not worth it even now.

zac (Thu, 07 Sep 2017 20:45:51 GMT):
But yeah, maybe not worth changing

Meai1 (Fri, 08 Sep 2017 09:58:46 GMT):
Can I test sawtooth without having a modern intel cpu? Is there an alternative implementation for Intel SGX for testing purposes during development?

zac (Fri, 08 Sep 2017 14:25:12 GMT):
yep

zac (Fri, 08 Sep 2017 14:25:34 GMT):
there is both a simple dev-mode consensus, and a PoET simulator

pschwarz (Fri, 08 Sep 2017 14:32:02 GMT):
@zac, if you use rethink from a docker container, you can remap the rethink port from 8080 to what every you like

pschwarz (Fri, 08 Sep 2017 14:32:50 GMT):
Though, 8080 is the default on many http server toolkits - all the jvm libraries seem to to use this

pschwarz (Fri, 08 Sep 2017 14:33:03 GMT):
I'm not against changing the port, really

pschwarz (Fri, 08 Sep 2017 14:33:49 GMT):
I agree that leaving it as 8080 might be a little be a common collision for developers

pschwarz (Fri, 08 Sep 2017 14:33:49 GMT):
I agree that leaving it as 8080 might result in common collisions for developers

zac (Fri, 08 Sep 2017 14:33:59 GMT):
yes, this change is only _partly_ to make _my_ life more convenient

Meai1 (Fri, 08 Sep 2017 15:30:16 GMT):
8080 is always annoying because something is running on it already and now I have to hunt down the config to change it

zac (Fri, 08 Sep 2017 15:43:10 GMT):
I've added a JIRA task if someone wants to jump on this: https://jira.hyperledger.org/browse/STL-670

zac (Fri, 08 Sep 2017 15:43:17 GMT):
I may get to it over the weekend

analyticbastard (Sat, 09 Sep 2017 16:07:10 GMT):
Has joined the channel.

Henni (Sun, 10 Sep 2017 12:28:02 GMT):
Has joined the channel.

soccerhaotian (Sun, 10 Sep 2017 23:26:38 GMT):
Has joined the channel.

detroitpro (Mon, 11 Sep 2017 15:21:00 GMT):
Has joined the channel.

detroitpro (Mon, 11 Sep 2017 15:21:49 GMT):
I asked this question about Fabric but I wonder too if it can be handled using Sawtooth, any direction would be wonderful: https://stackoverflow.com/questions/46136594/can-hyperledger-fabric-support-asset-mutation

jsmitchell (Mon, 11 Sep 2017 15:32:36 GMT):
@detroitpro that is totally doable in Sawtooth

jsmitchell (Mon, 11 Sep 2017 15:34:51 GMT):
you could define different asset types and create transactions which perform the operations on the assets to create new assets.

jsmitchell (Mon, 11 Sep 2017 15:35:29 GMT):
like 10 monster teeth + a rabbit's foot + hot tea = a flying potion

jsmitchell (Mon, 11 Sep 2017 15:35:48 GMT):
that transaction would consume/destroy the inputs to produce the output

detroitpro (Mon, 11 Sep 2017 15:35:53 GMT):
in Sawtooth do you create a transaction record at the protocol level or at the smart contract level?

detroitpro (Mon, 11 Sep 2017 15:36:18 GMT):
Is there anywhere I could find an example/docs on doing such wizardry?

jsmitchell (Mon, 11 Sep 2017 15:36:18 GMT):
everything is defined within the transaction processor

jsmitchell (Mon, 11 Sep 2017 15:36:45 GMT):
@zac can give you some pointers

jsmitchell (Mon, 11 Sep 2017 15:36:56 GMT):
I need to run to jury duty

detroitpro (Mon, 11 Sep 2017 15:37:00 GMT):
TY!

zac (Mon, 11 Sep 2017 15:37:17 GMT):
Let me look at this question...

zac (Mon, 11 Sep 2017 15:37:30 GMT):
Go jury @jsmitchell

zac (Mon, 11 Sep 2017 15:38:27 GMT):
Yeah, I wrote a design for a transaction family that would do this

zac (Mon, 11 Sep 2017 15:38:37 GMT):
No plans to build it yet

zac (Mon, 11 Sep 2017 15:38:52 GMT):
But as we keep working in the supply chain space, this is definitely something we have our eye on

zac (Mon, 11 Sep 2017 15:38:52 GMT):
But as we keep working in the supply chain space, composing and decomposing assets is definitely something we have our eye on

zac (Mon, 11 Sep 2017 15:39:54 GMT):
Not sure on what you mean by protocol/smart contract level

zac (Mon, 11 Sep 2017 15:41:33 GMT):
In Sawtooth, you store arbitrary data on the blockchain, and you can design Transaction Processors which run arbitrary logic that determines what goes on the blockchain

zac (Mon, 11 Sep 2017 15:44:37 GMT):
So in my design, you could submit a transaction which would create a schema for an asset type. This schema would include rules about composing/decomposing the asset. I had a JSON schema format worked out, but basically what you want is something that communicates _"this widget can only be made using this list of component assets"_

zac (Mon, 11 Sep 2017 15:44:53 GMT):
This schema gets saved to the blockchain

AkarshaMahadeva (Mon, 11 Sep 2017 15:46:11 GMT):
Hey please tell me if I have got this right. In Sawtooth, each node has the capability to receive and process transactions. But whether the transaction should be added to block chain is decided by one of the node?

zac (Mon, 11 Sep 2017 15:47:48 GMT):
Then later someone will try to create one of these widgets. And the Transaction Processor will say, "Okay, this person is trying to create a widget. According to the schema, a widget needs all these component parts. Does the person control those parts? They do, great. Let's destroy the parts and create the widget."

zac (Mon, 11 Sep 2017 15:48:08 GMT):
Which is all a very long way of saying: Your Transaction Processor can do whatever you want.

detroitpro (Mon, 11 Sep 2017 15:49:15 GMT):
Let me see if I follow, the idea of a transaction processor exists, the design for a transaction family exists but there are not built in methods/sdk/api for destroying X and creating Y?

zac (Mon, 11 Sep 2017 15:52:00 GMT):
@AkarshaMahadeva Yes, more or less. Keep in mind that each node will be building a new block all the time. Then if one wins the block, that's the block the other nodes will use.

zac (Mon, 11 Sep 2017 15:53:20 GMT):
@detroitpro Correct. Sawtooth is very unopinionated about what you do with the blockchain. So the SDKs are pretty thin. They simplify interactions with various Sawtooth components, but they do not require you to implement your logic in any particular way.

zac (Mon, 11 Sep 2017 15:53:55 GMT):
That doesn't mean people won't build toolsets on top of Sawtooth that are general purpose but more opinionated.

zac (Mon, 11 Sep 2017 15:54:23 GMT):
For example, the Seth Transaction Family gives you full EVM Smart Contract functionality

detroitpro (Mon, 11 Sep 2017 15:54:46 GMT):
@zac when I said protocol/smart contract level, I was unaware of the concept of Transaction Processors - they sound like what I am looking for. Is there anything in public (github issue) where you detail Transaction Familalies?

zac (Mon, 11 Sep 2017 15:54:53 GMT):
The Transaction Family I'm working on now, Track and Trade, is a fairly generic supply chain family

zac (Mon, 11 Sep 2017 15:55:28 GMT):
It will only really be a PoC for now, but we're building it with an eye to the future where it might become a useful supply chain platform that could actually be deployed

zac (Mon, 11 Sep 2017 15:55:45 GMT):
It would have some built in decompose/compose functionality in that case

zac (Mon, 11 Sep 2017 15:56:34 GMT):
@detroitpro http://intelledger.github.io/app_developers_guide.html

zac (Mon, 11 Sep 2017 15:56:39 GMT):
What language do you work in?

AkarshaMahadeva (Mon, 11 Sep 2017 15:56:56 GMT):
So if there is only one node authenticating whether the block should be added to block chain then it becomes centralized right?

zac (Mon, 11 Sep 2017 15:57:18 GMT):
each block will come from a different node

detroitpro (Mon, 11 Sep 2017 15:58:46 GMT):
@zac - Mostly C#, JavaScript and Python.

zac (Mon, 11 Sep 2017 15:59:26 GMT):
There is both a JS and Python SDK with similar functionality

zac (Mon, 11 Sep 2017 15:59:49 GMT):
http://intelledger.github.io/app_developers_guide/javascript_sdk.html http://intelledger.github.io/app_developers_guide/python_sdk.html

zac (Mon, 11 Sep 2017 16:00:09 GMT):
The best thing is to read the processor tutorial for the language you are working in I think

zac (Mon, 11 Sep 2017 16:00:38 GMT):
There are also copious example TPs in Python, and one or two in JS you can find in the core repo

zac (Mon, 11 Sep 2017 16:04:14 GMT):
@AkarshaMahadeva The process looks something like this: ``` - Batches are submitted to a node - That node validates this batch, then adds it to a pending list and sends it to the other nodes - Each node validates the batches they receive from other nodes, then adds it to their pending list, and broadcasts it out - Any valid batch will pretty quickly be in every validator's pending list - At some point one node will win the block, and batches that were in that node's pending list will be included in the block. - Any valid batches only in other nodes for some reason, and so not included in the block, will remain in the pending lists of those nodes, and be included in a future block ```

zac (Mon, 11 Sep 2017 16:04:14 GMT):
@AkarshaMahadeva The process looks something like this: ``` - Batches are submitted to a node - That node validates this batch, then adds it to a pending list and sends it to the other nodes - When a node recieves batches from other nodes, they treat it just like a submitted batch. They validate it, add it to a pending list, then send it to other nodes - Any valid batch will pretty quickly be in every validator's pending list - At some point one node will win the block, and batches that were in that node's pending list will be included in the block - Any valid batches only in other nodes for some reason, and so not included in the block, will remain in the pending lists of those nodes, and be included in a future block ```

AkarshaMahadeva (Mon, 11 Sep 2017 16:07:11 GMT):
Thank u so much it cleared a lot of my doubts

detroitpro (Mon, 11 Sep 2017 19:08:42 GMT):
In Sawtooth, do validators need to reach some form of consensus? and is there a network/cluster or validators?

jsmitchell (Mon, 11 Sep 2017 19:14:49 GMT):
yes, and yes

jsmitchell (Mon, 11 Sep 2017 19:15:57 GMT):
http://intelledger.github.io/architecture/poet.html

jsmitchell (Mon, 11 Sep 2017 19:16:28 GMT):
but first http://intelledger.github.io/introduction.html

detroitpro (Mon, 11 Sep 2017 19:33:21 GMT):
@jsmitchell What happens if 1 validator is hacked, the validation code is modified?

jsmitchell (Mon, 11 Sep 2017 19:47:06 GMT):
then that validator is sad

jsmitchell (Mon, 11 Sep 2017 19:47:15 GMT):
but the rest of the network continues on

detroitpro (Mon, 11 Sep 2017 21:00:26 GMT):
Is the validator somehow removed from the network or it's transactions ignored - for example; the rest of the validators check the state transaction for the transactions....I'm sorry, I feel like I am missing something.....

detroitpro (Mon, 11 Sep 2017 21:00:26 GMT):
Is the validator somehow removed from the network or it's transactions ignored - for example; the rest of the validators check the state transition for the transactions....I'm sorry, I feel like I am missing something.....

jsmitchell (Mon, 11 Sep 2017 21:05:45 GMT):
@detroitpro it cannot publish blocks that will be considered valid by any of the other nodes, because it has broken code

jsmitchell (Mon, 11 Sep 2017 21:06:02 GMT):
all parts of a block are checked by the other nodes

jsmitchell (Mon, 11 Sep 2017 21:06:25 GMT):
the transactions, the signatures, and the state root hash that should result once all the transactions are processed

jsmitchell (Mon, 11 Sep 2017 21:06:33 GMT):
if anything doesn't match, the block is considered invalid

jsmitchell (Mon, 11 Sep 2017 21:06:45 GMT):
so, the rest of the network will ignore the blocks from the bad node

detroitpro (Mon, 11 Sep 2017 21:12:10 GMT):
um....so that validator will publish a block, before it's written to the ledger, all the other validators will validate the transactions, the signatures and the state root hash.?

jsmitchell (Mon, 11 Sep 2017 21:13:51 GMT):
yes

jsmitchell (Mon, 11 Sep 2017 21:44:25 GMT):
each validator maintains its own copy of the ledger, if that isn't clear

AkarshaMahadeva (Mon, 11 Sep 2017 22:18:16 GMT):
How does sawtooth check if the transaction in the blockchain has been tampered? how does invalidate the transactions?

jsmitchell (Mon, 11 Sep 2017 22:18:46 GMT):
transactions are signed with private keys

jsmitchell (Mon, 11 Sep 2017 22:19:47 GMT):
transaction headers contain the associated public key

jsmitchell (Mon, 11 Sep 2017 22:20:28 GMT):
therefore, the transaction contains all the information to verify it was signed by the private key associated with the claimed public key

jsmitchell (Mon, 11 Sep 2017 22:20:41 GMT):
the validator passes the transaction payload to the transaction processor

jsmitchell (Mon, 11 Sep 2017 22:21:52 GMT):
the transaction processor can enforce rules around what that public key is allowed to do (i.e. withdraw money from a specific account 'owned' by the public key).

jsmitchell (Mon, 11 Sep 2017 22:22:34 GMT):
if the transaction attempts to do something else (like withdraw funds from an account *not* owned by the public key) then the transaction processor will declare the transaction invalid

detroitpro (Tue, 12 Sep 2017 02:16:46 GMT):
does there happen to be a running version, or a github repo that has an already configured version, or docker image of the supply chain sample? https://intelledger.github.io/examples/supplychain/overview.html

FlyingTiger (Tue, 12 Sep 2017 02:54:42 GMT):
As we know, PoET uses the measure of aggregate local mean to determine the valid fork, that means a measure of the total amount of time spent waiting, But how do we understand this? Could you give some examples to explain this? Thanks very much! :)

Haojun (Tue, 12 Sep 2017 07:19:53 GMT):
Has joined the channel.

pschwarz (Tue, 12 Sep 2017 14:43:02 GMT):
@detroitpro: there is not yet a docker compose file for the supply chain sample

pschwarz (Tue, 12 Sep 2017 14:43:15 GMT):
Shouldn't be too hard to put together, though

AkarshaMahadeva (Tue, 12 Sep 2017 16:19:38 GMT):
If the node that has the right to add block goes down on network what haooens?

AkarshaMahadeva (Tue, 12 Sep 2017 16:20:03 GMT):
*happens? when does fork situation arises? How does sawtooth resolve fork?

pschwarz (Tue, 12 Sep 2017 16:22:07 GMT):
The consensus module will determine that there is a fork. It depends on the consensus algorithm. In the current implementation, PoET handles this

pschwarz (Tue, 12 Sep 2017 16:22:35 GMT):
Down the road, PBFT, or the like (The intention is that it is pluggable)

Southside (Wed, 13 Sep 2017 00:14:34 GMT):
Has joined the channel.

Southside (Wed, 13 Sep 2017 00:17:55 GMT):
Are there any implementations of "mining rewards" on PoET blockchains yet?

Dan (Wed, 13 Sep 2017 04:58:29 GMT):
@FlyingTiger If I remember correctly the simple version of fork resolution is that larger populations and smaller wait times are what wins. the local mean and the network population are related variables so you can compute one from another. Not sure if that answers your question so feel free to ask more specifically.

Dan (Wed, 13 Sep 2017 04:59:45 GMT):
see also: http://intelledger.github.io/architecture/poet.html#population-size-and-local-mean-computation

FlyingTiger (Wed, 13 Sep 2017 10:27:44 GMT):
@Dan thanks. I'll look into the document, then to ask more.

mfford (Wed, 13 Sep 2017 19:55:33 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, September 14th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, September 14th Time: 10-11am CDT We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi Agenda: 1. Introductions-Mark Ford 2. Hyperledger Sawtooth Unit Testing with Mock Validator –Ryan Banks 3. Open Forum

leogzl (Fri, 15 Sep 2017 11:17:34 GMT):
Has joined the channel.

szhman (Fri, 15 Sep 2017 17:06:38 GMT):
Has joined the channel.

smagne (Fri, 15 Sep 2017 17:14:57 GMT):
Hello, I'm using sawtooth docker compose and I want to know if there is a way to execute docker-compose down an up without losing data

smagne (Fri, 15 Sep 2017 17:16:08 GMT):
I create a volume container and I'm using it in the definition of the validator to store the files

smagne (Fri, 15 Sep 2017 17:16:43 GMT):
This is the error. ``` writing file: /etc/sawtooth/keys/validator.priv writing file: /etc/sawtooth/keys/validator.pub creating key directory: /root/.sawtooth/keys writing file: /root/.sawtooth/keys/my_key.priv writing file: /root/.sawtooth/keys/my_key.pub Generated config-genesis.batch Processing config-genesis.batch... Generating /var/lib/sawtooth/genesis.batch [2017-09-15 16:59:53.984 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml [2017-09-15 16:59:53.985 INFO validator] Skipping validator config loading from non-existent config file: /etc/sawtooth/validator.toml [2017-09-15 16:59:53.985 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.priv [2017-09-15 16:59:53.986 INFO cli] config [path]: config_dir = "/etc/sawtooth" [2017-09-15 16:59:53.987 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" [2017-09-15 16:59:53.987 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" [2017-09-15 16:59:53.987 INFO cli] config [path]: log_dir = "/var/log/sawtooth" [2017-09-15 16:59:53.987 INFO cli] config [path]: policy_dir = "/etc/sawtooth/policy" [2017-09-15 16:59:53.987 WARNING cli] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted. [2017-09-15 16:59:53.988 DEBUG core] database file is /var/lib/sawtooth/merkle-00.lmdb [2017-09-15 16:59:53.988 DEBUG core] state delta store file is /var/lib/sawtooth/state-deltas-00.lmdb [2017-09-15 16:59:53.989 DEBUG core] block store file is /var/lib/sawtooth/block-00.lmdb [2017-09-15 16:59:53.992 DEBUG selector_events] Using selector: ZMQSelector [2017-09-15 16:59:53.993 INFO interconnect] Listening on tcp://eth0:4004 [2017-09-15 16:59:53.993 DEBUG dispatch] Added send_message function for connection ServerThread [2017-09-15 16:59:53.994 DEBUG genesis] genesis_batch_file: /var/lib/sawtooth/genesis.batch [2017-09-15 16:59:53.994 DEBUG genesis] chain_head: 2f47fdaf(0, S:307544ad, P:00000000) [2017-09-15 16:59:53.995 DEBUG genesis] block_chain_id: 2f47fdaf4dd07d8e22d884554b0c287360d5d039b1c529200f0e652404486bf42d90f15ec4ce7f882dab59362c40c745e6b89ca5468d210322999ca0c5ed6d4a [2017-09-15 16:59:53.995 ERROR cli] Cannot have a genesis_batch_file and an existing chain [2017-09-15 16:59:53.995 DEBUG dispatch] Attempted to remove send_message function for connection ServerThread, but no send_message function was registered [2017-09-15 16:59:53.995 DEBUG dispatch] Removed send_message function for connection ServerThread [2017-09-15 16:59:54.396 INFO core] remaining threads: _ContextReader (_ContextReader), InterconnectThread-1 (Thread), _ContextWriter (_ContextWriter) [2017-09-15 16:59:56.399 INFO core] All threads have been stopped and joined ```

boydjohnson (Fri, 15 Sep 2017 17:31:48 GMT):
Yeah, it is possible. the genesis commands that are run in the genesis validator should be run in another container that the genesis validator has `volumes_from'. In the genesis container, add to `volumes`, `- /var/lib/sawtooth`.

boydjohnson (Fri, 15 Sep 2017 17:31:48 GMT):
Yeah, it is possible. the genesis commands that are run in the genesis validator should be run in another container that the genesis validator has `volumes_from`. In the genesis container, add to `volumes`, `- /var/lib/sawtooth`.

smagne (Fri, 15 Sep 2017 17:33:22 GMT):
hey @boydjohnson thanks for your help

smagne (Fri, 15 Sep 2017 17:33:29 GMT):
this is my docker-compose file

smagne (Fri, 15 Sep 2017 17:35:05 GMT):
because I already do that but when I do `docker-compose down` and I do `docker-compose up -d` I'm getting that error [ ](https://chat.hyperledger.org/channel/sawtooth?msg=7rwcanGrPqx6d3jW9)

smagne (Fri, 15 Sep 2017 17:36:46 GMT):
``` sawtooth-data-storage: image: registry.gitlab.com/exo-dev/sawtooth-data-container:latest validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" depends_on: - sawtooth-data-storage volumes: [ 'sawtooth-data-storage:/var/lib/sawtooth' ] # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ \"" ```

boydjohnson (Fri, 15 Sep 2017 17:37:53 GMT):
Oh, I forgot with the setup that I described docker-compose down and docker-compose up won't work but `docker stop` and then `docker start` will work.

boydjohnson (Fri, 15 Sep 2017 17:38:17 GMT):
Let me send you an example yaml file.

boydjohnson (Fri, 15 Sep 2017 17:40:10 GMT):
Rocket chat won't let me attach the yaml file. I will just post it.

boydjohnson (Fri, 15 Sep 2017 17:40:46 GMT):
```services: genesis-0: image: sawtooth-validator:$ISOLATION_ID volumes: - $SAWTOOTH_CORE:/project/sawtooth-core - /etc/sawtooth/keys - /var/lib/sawtooth expose: - 4004 - 8800 command: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth config genesis \ -k /etc/sawtooth/keys/validator.priv \ -o config-genesis.batch && \ sawtooth config proposal create \ -k /etc/sawtooth/keys/validator.priv \ sawtooth.consensus.algorithm=poet \ sawtooth.poet.target_wait_time=25 \ sawtooth.poet.initial_wait_time=30 \ sawtooth.poet.report_public_key_pem=\ \\\"$$(cat /project/sawtooth-core/consensus/poet/simulator/packaging/simulator_rk_pub.pem)\\\" \ sawtooth.poet.valid_enclave_measurements=$$(poet enclave measurement) \ sawtooth.poet.valid_enclave_basenames=$$(poet enclave basename) \ -o config.batch && \ poet genesis -o poet.batch && \ sawtooth admin genesis \ config-genesis.batch config.batch poet.batch \"" validator-0: image: sawtooth-validator:$ISOLATION_ID volumes: - $SAWTOOTH_CORE:/project/sawtooth-core volumes_from: - genesis-0 expose: - 4004 - 8800 command: "bash -c \"\ sleep 7 && \ sawtooth-validator -v \ --endpoint tcp://validator-0:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" environment: PYTHONPATH: "/project/sawtooth-core/consensus/poet/common:\ /project/sawtooth-core/consensus/poet/simulator:\ /project/sawtooth-core/consensus/poet/core" stop_signal: SIGKILL validator-1: image: sawtooth-validator:$ISOLATION_ID volumes: - $SAWTOOTH_CORE:/project/sawtooth-core expose: - 4004 - 8800 depends_on: - validator-0 command: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth-validator -v \ --endpoint tcp://validator-1:8800 \ --peers tcp://validator-0:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" environment: PYTHONPATH: "/project/sawtooth-core/consensus/poet/common:\ /project/sawtooth-core/consensus/poet/simulator:\ /project/sawtooth-core/consensus/poet/core" stop_signal: SIGKILL validator-2: image: sawtooth-validator:$ISOLATION_ID volumes: - $SAWTOOTH_CORE:/project/sawtooth-core expose: - 4004 - 8800 depends_on: - validator-0 - validator-1 command: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth-validator -v \ --endpoint tcp://validator-2:8800 \ --peers tcp://validator-0:8800,tcp://validator-1:8800 --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" environment: PYTHONPATH: "/project/sawtooth-core/consensus/poet/common:\ /project/sawtooth-core/consensus/poet/simulator:\ /project/sawtooth-core/consensus/poet/core" stop_signal: SIGKILL```

boydjohnson (Fri, 15 Sep 2017 17:41:34 GMT):
That is a three validator network where the three validators can be docker started and stopped.

smagne (Fri, 15 Sep 2017 17:46:23 GMT):
Thanks again @boydjohnson

boydjohnson (Fri, 15 Sep 2017 17:46:41 GMT):
You're welcome, @smagne

smagne (Fri, 15 Sep 2017 17:46:44 GMT):
this is my yaml ``` version: "3" services: sawtooth-data-storage: image: registry.gitlab.com/exo-dev/sawtooth-data-container:latest validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" depends_on: - sawtooth-data-storage volumes: [ 'sawtooth-data-storage:/var/lib/sawtooth' ] # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ \"" settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator entrypoint: settings-tp -vv tcp://validator:4004 rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080 sawtooth-payment-processor: image: registry.gitlab.com/exo-dev/sawtooth-payment-processor:fix-tests-processor container_name: sawtooth-payment-processor environment: - SAWTOOTH_PAYMENT_PROCESSOR_FAMILY=exosp - SAWTOOTH_PAYMENT_PROCESSOR_CREATION=0 - SAWTOOTH_PAYMENT_PROCESSOR_ISSUANCE=1 - SAWTOOTH_PAYMENT_PROCESSOR_TRANSFERENCE=2 - SAWTOOTH_PAYMENT_PROCESSOR_MIN_VALUE=0 - SAWTOOTH_PAYMENT_PROCESSOR_MAX_VALUE=4294967295 - SAWTOOTH_PAYMENT_PROCESSOR_BALANCE=100 - SAWTOOTH_PAYMENT_PROCESSOR_VALIDATOR_URL=tcp://validator:4004 - SAWTOOTH_PAYMENT_PROCESSOR_FAMILY_VERSION=1.0 - SAWTOOTH_PAYMENT_PROCESSOR_FAMILY_ENCODING=application/protobuf - SAWTOOTH_PAYMENT_PROCESSOR_TRANSFERENCE_NAMESPACE=TransactionPayload - SAWTOOTH_PAYMENT_PROCESSOR_WALLET_NAMESPACE=WalletPayload - NODE_ENV=develop depends_on: - settings-tp - rest-api volumes: sawtooth-data-storage: ```

smagne (Fri, 15 Sep 2017 17:48:55 GMT):
I should add a validator container with the genesis and another validator which is the one that would be able to stop and start

smagne (Fri, 15 Sep 2017 17:49:12 GMT):
and also I must share the volumes between them

boydjohnson (Fri, 15 Sep 2017 17:51:00 GMT):
Not exactly, Add a genesis container where the genesis commands, ```sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch``` are run and then share volumes from this container with the validator container.

smagne (Fri, 15 Sep 2017 17:54:13 GMT):
The container would be something like this right: ``` genesis-concainer: image: hyperledger/sawtooth-validator:latest volumes: - 'sawtooth-data-storage:/project/sawtooth-core' - /etc/sawtooth/keys - /var/lib/sawtooth expose: - 4004 - 8800 command: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch \"" ```

smagne (Fri, 15 Sep 2017 17:54:13 GMT):
The container would be something like this right: ``` genesis-container: image: hyperledger/sawtooth-validator:latest volumes: - 'sawtooth-data-storage:/project/sawtooth-core' - /etc/sawtooth/keys - /var/lib/sawtooth expose: - 4004 - 8800 command: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch \"" ```

boydjohnson (Fri, 15 Sep 2017 18:00:24 GMT):
Yeah, looks right.

smagne (Fri, 15 Sep 2017 18:04:21 GMT):
great thanks

smagne (Fri, 15 Sep 2017 19:44:53 GMT):
works great @boydjohnson great support guys cheers!!!

kelly_ (Fri, 15 Sep 2017 21:39:24 GMT):
@smagne i'm not sure if we asked, but is your sawtooth work personal or for a company, also any thoughts on submitting your TP back into open source?

Meai1 (Sat, 16 Sep 2017 05:47:24 GMT):
What incentive to people have for running sawtooth nodes? Blockchain in my opinion is so successful because it gives people incentive to participate, is there anything like that in sawtooth?

Meai1 (Sat, 16 Sep 2017 05:47:34 GMT):
do*

zac (Mon, 18 Sep 2017 14:33:33 GMT):
There are a couple of points to make in response to that:

zac (Mon, 18 Sep 2017 14:33:33 GMT):
There are ~~a couple of~~ three points I would make in response to that:

zac (Mon, 18 Sep 2017 14:35:00 GMT):
1) Sawtooth is general purpose and almost entirely unopinionated about how you use it. There is no built in incentive to run nodes, but there is also nothing preventing you from implementing some incentive scheme if it suits your purpose.

zac (Mon, 18 Sep 2017 14:37:57 GMT):
2) Sawtooth is being developed with "consortiums" in mind in particular. Which is to say, small groups of interested parties, rather than one global network. Imagine a few dozen banks, that all need to agree on some data, but don't trust each other to maintain that data. They could deploy a semi-private blockchain using Sawtooth, which would enforce trust for them. In this case the incentive would be their own business interests.

zac (Mon, 18 Sep 2017 14:40:05 GMT):
3) PoET is a novel consensus algorithm available through Sawtooth which uses negligible amounts of CPU (unlike more traditional PoW mechanisms). This makes it fairly trivial to run a Sawtooth node, and largely obviates the need for some sort of direct payment.

zac (Mon, 18 Sep 2017 14:40:42 GMT):
@Meai1 ^

jparth11 (Mon, 18 Sep 2017 14:45:53 GMT):
Has joined the channel.

HintikkaKimmo (Mon, 18 Sep 2017 16:33:33 GMT):
Has joined the channel.

JamesKempf (Mon, 18 Sep 2017 20:28:30 GMT):
Hi, I'm trying to get a network of validators up, and I would like them to find their peers dynamically. The only thing that seems to work though is to have one control and use the -s command line argument to specify the control for the peers. I have both the control and the peers coming up with -P dynamic, and both are advertising their endpoints with -E. Am I missing something?

Southside (Mon, 18 Sep 2017 20:56:15 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=B5EC33YavTsGJK9Aw) @zac

Southside (Mon, 18 Sep 2017 21:01:25 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=B5EC33YavTsGJK9Aw) @zac Thank yo for an informative post. You say "PoET is a novel consensus algorithm available through Sawtooth which uses negligible amounts of CPU (unlike more traditional PoW mechanisms). " Where can I get a clue about the actual amount of computation work needed? We know that for now PoET can only be impemeted on late model Intel mobos with the correct SGX etensions enabled (Is this correct?) However the PoET consensus seems to depend on the use of a TEE(Trusted Execution Environment) which many if not most chis have these days inclusing mobiles. Could a PoET node conceivably run on a mobile phone? If the computation load was sufficiently low?

Southside (Mon, 18 Sep 2017 21:01:25 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=B5EC33YavTsGJK9Aw) @zac Thank you for an informative post. You say "PoET is a novel consensus algorithm available through Sawtooth which uses negligible amounts of CPU (unlike more traditional PoW mechanisms). " Where can I get a clue about the actual amount of computation work needed? We know that for now PoET can only be impemeted on late model Intel mobos with the correct SGX etensions enabled (Is this correct?) However the PoET consensus seems to depend on the use of a TEE(Trusted Execution Environment) which many if not most chis have these days inclusing mobiles. Could a PoET node conceivably run on a mobile phone? If the computation load was sufficiently low?

Southside (Mon, 18 Sep 2017 21:01:25 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=B5EC33YavTsGJK9Aw) @zac Thank you for an informative post. You say "PoET is a novel consensus algorithm available through Sawtooth which uses negligible amounts of CPU (unlike more traditional PoW mechanisms). " Where can I get a clue about the actual amount of computation work needed? We know that for now PoET can only be impemeted on late model Intel mobos with the correct SGX extensions enabled (Is this correct?) However the PoET consensus seems to depend on the use of a TEE(Trusted Execution Environment) which many if not most chis have these days inclusing mobiles. Could a PoET node conceivably run on a mobile phone? If the computation load was sufficiently low?

zac (Mon, 18 Sep 2017 21:04:17 GMT):
I don't really know the details of how PoET works, but its CPU usage is trivial. The other business of a validator is going to be what limits what machine you might run it on.

zac (Mon, 18 Sep 2017 21:04:17 GMT):
I don't really know the details of how PoET works, but its CPU usage is trivial. The other business of a validator is going to be creates any performance bottlenecks that might limit what machines you could run one on.

zac (Mon, 18 Sep 2017 21:04:17 GMT):
I don't really know the details of how PoET works, but its CPU usage is trivial. The other business of a validator is going to be what creates any performance bottlenecks that might limit what machines you could run one on.

zac (Mon, 18 Sep 2017 21:05:50 GMT):
But yes, you do need a TEE, of which SGX is an example.

zac (Mon, 18 Sep 2017 21:05:50 GMT):
But yes, if you are running PoET, you do need a TEE, of which SGX is an example (consensus in Sawtooth is pluggable, so you could potentially deploy a network _without_ PoET too).

zac (Mon, 18 Sep 2017 21:06:24 GMT):
(if you are running PoET, Sawtooth features pluggable consensus, and could potentially run something else)

zac (Mon, 18 Sep 2017 21:06:51 GMT):
I am not sure how widespread TEE's are, or if there are any on mobile chips.

zac (Mon, 18 Sep 2017 21:07:16 GMT):
SGX specifically is featured in a lot of newer hardware, including some budget PC's like NUCs.

boydjohnson (Mon, 18 Sep 2017 21:17:11 GMT):
6th gen Intel chips are needed for SGX. I don't know (but could just be ignorant) of phones with 6th gen Intel chips.

Meai1 (Tue, 19 Sep 2017 06:00:52 GMT):
So I was looking into installing some kind of SGX SDK from intel but there are lots of signup forms and agreements and all kinds of legal stuff. SGX is fully commercial? They dont even show a price tag...

Meai1 (Tue, 19 Sep 2017 06:01:23 GMT):
I take it that I cant actually run sawtooth without paying for SGX from Intel which may or may not be affordable

raymundl (Tue, 19 Sep 2017 06:26:47 GMT):
Has joined the channel.

HintikkaKimmo (Tue, 19 Sep 2017 08:00:21 GMT):
@Meai1 good catch, I was just thinking to take sawtooth for a spin... Looking at SGX SDK docs it indeed looks like you need a commercial agreement with unknown future cost.

leogzl (Tue, 19 Sep 2017 11:04:06 GMT):
it may be a silly question, i would like to know to generate pdf of sawtooth doc on https://intelledger.github.io/contents.html so i can test it offline.

agunde (Tue, 19 Sep 2017 13:46:47 GMT):
SGX is only required to run PoET(consensus algorithm), but there is a poet simulator that allows you to test out poet without SGX. The consensus algorithm is pluggable in Sawtooth and therefore Sawtooth does not require SGX to be used.

agunde (Tue, 19 Sep 2017 13:47:28 GMT):
@Meai1 @HintikkaKimmo ^

boydjohnson (Tue, 19 Sep 2017 14:13:34 GMT):
@leogzl This pdf is from our build process https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/master/lastSuccessfulBuild/artifact/docs/build/latex/sawtooth.pdf I can also give you commands to build the docs into pdfs locally if that is wanted.

Meai1 (Tue, 19 Sep 2017 14:55:35 GMT):
by "actually" running, I meant of course in production

zac (Tue, 19 Sep 2017 15:08:53 GMT):
If you wanted to stand up a production Sawtooth network today (and need Byzantine fault tolerance), it would need to be built with validators running on PCs with 6th gen intel chips

zac (Tue, 19 Sep 2017 15:09:15 GMT):
There is not any licensing fees or anything as far as I know

zac (Tue, 19 Sep 2017 15:09:15 GMT):
There are not any licensing fees or anything as far as I know

zac (Tue, 19 Sep 2017 15:09:37 GMT):
Also, tomorrow that answer will likely be different

zac (Tue, 19 Sep 2017 15:10:33 GMT):
Both because there will be Trusted Execution Environments besides SGX available for PoET

kelly_ (Tue, 19 Sep 2017 15:10:38 GMT):
There are no fees to run sgx applications

zac (Tue, 19 Sep 2017 15:11:03 GMT):
And because there will be consensus algorithms with Byzantine fault tolerance available for Sawtooth

zac (Tue, 19 Sep 2017 15:11:03 GMT):
And because there will be other consensus algorithms with Byzantine fault tolerance available for Sawtooth

kelly_ (Tue, 19 Sep 2017 15:11:10 GMT):
There are no fees to develop sgx applications, however a license agreement must be signed staying that you will now develop malicious software

zac (Tue, 19 Sep 2017 15:11:28 GMT):
I think you mean _not_

kelly_ (Tue, 19 Sep 2017 15:12:17 GMT):
@Meai1 @HintikkaKimmo

kelly_ (Tue, 19 Sep 2017 15:12:42 GMT):
Yep, autocorrect :)

Dan (Tue, 19 Sep 2017 15:26:56 GMT):
haha, yes you MUST make malware!

Dan (Tue, 19 Sep 2017 15:27:29 GMT):
to reiterate... (and it is a common question), you do NOT need SGX to run sawtooth.

Dan (Tue, 19 Sep 2017 15:28:39 GMT):
IF you want to use the SGX hardened version of poet you may use SGX. But you can run PoET without SGX (with CFT behavior)

JamesKempf (Tue, 19 Sep 2017 17:03:35 GMT):
Okaaay, I take it from the fact that nobody answered my question that it is not possible to have a network of validators self configure and set up dynamically without hard-coding the IP address or host name into the command line.

JamesKempf (Tue, 19 Sep 2017 17:04:25 GMT):
PS: If you want to run PoET with SGX, try running it in Azure: http://tinyurl.com/ychfyu4w

jsmitchell (Tue, 19 Sep 2017 17:04:40 GMT):
@JamesKempf I'm not sure I understand your question

jsmitchell (Tue, 19 Sep 2017 17:04:51 GMT):
are you looking for some kind of local network beacon support?

jsmitchell (Tue, 19 Sep 2017 17:05:25 GMT):
with dynamic peering, you need to provide any new node you start up a --seeds parameter which includes at least one well known endpoint already connected to the network

JamesKempf (Tue, 19 Sep 2017 17:06:56 GMT):
Right, that's what I was trying to find out, whether you needed the --seeds parameter. That means you need to use some kind of service discovery protocol like Consul to find out an existing node. A node can't simply send out a gossip message on the ZeroMQ bus looking for seeds, right?

jsmitchell (Tue, 19 Sep 2017 17:07:40 GMT):
send it to whom?

jsmitchell (Tue, 19 Sep 2017 17:07:56 GMT):
the assumption is that these nodes are not on a local/broadcast network

JamesKempf (Tue, 19 Sep 2017 17:09:34 GMT):
OK, thanx. I guess you could use multicast. Or maybe multicast on unicast, but I get the point, it would involve some complex configuration. I guess I need to add a layer on top of the validator startup that takes care of finding the address.

amundson (Tue, 19 Sep 2017 17:28:54 GMT):
@JamesKempf can you describe your use-case a bit? in most of our discussions, we assume a distributed network (nodes at different sites, etc.); but it sounds like you are wanting local discovery, presumably with everything running on the same subnet?

JamesKempf (Tue, 19 Sep 2017 18:09:57 GMT):
Hi, @amundson, sorry for the delay. Use case is a cloud tenant management system built on top of Sawtooth Burrow. The blockchain will be mostly running inside a data center. So the validators will have multicast available.

amundson (Tue, 19 Sep 2017 18:12:16 GMT):
would you be concerned about running multiple validator networks and accidentally joining the wrong one? for example, leakage between dev/test/prod networks?

JamesKempf (Tue, 19 Sep 2017 18:13:45 GMT):
Right, that's a concern. I suppose we could use some kind of service discovery, like Consul or DNSServRec to configure up the network.

amundson (Tue, 19 Sep 2017 18:18:21 GMT):
a correctly operating validator won't switch networks (genesis block will never be changed). so the natural network identifier is the genesis block id. You can create a file in /var/lib/sawtooth/ to lock a node to a specific genesis block id (if this isn't implemented, is certainly the intent) so that it won't accidentally join the wrong network. But, that is about the same amount of effort (configuring that file) as specifying a list of seed peers.

JamesKempf (Tue, 19 Sep 2017 18:20:47 GMT):
Thanx, I will try that. I think that would give me a way to use the actual blockchain as the ID rather than the IP address which is really what I want.

JamesKempf (Tue, 19 Sep 2017 18:21:37 GMT):
How to I get the genesis block ID? Using the sawtooth cli?

amundson (Tue, 19 Sep 2017 18:23:20 GMT):
as a future considering, some point we want to implement state checkpointing, where we would (essentially) redefine the genesis block so validators don't need the complete chain history. maybe we retain that genesis block id though when we implement that feature. probably safe to ignore for now.

amundson (Tue, 19 Sep 2017 18:23:44 GMT):
yes, 'sawtooth block list', the earliest block

JamesKempf (Tue, 19 Sep 2017 18:24:06 GMT):
great thanx! :slight_smile:

amundson (Tue, 19 Sep 2017 18:25:07 GMT):
potentially, this could be added as another peering method in addition to static/dynamic

amundson (Tue, 19 Sep 2017 18:28:10 GMT):
we should update the sign-off check to ignore merge commits that have no content

amundson (Tue, 19 Sep 2017 18:29:21 GMT):
keep tripping over that check with feature branch merging activity

DarshanBc (Wed, 20 Sep 2017 06:42:17 GMT):
Has joined the channel.

DarshanBc (Wed, 20 Sep 2017 06:43:35 GMT):
can anybody explain in short or post a link why Sawtooth why not fabric or any other hyperledger platform

thomas_p (Wed, 20 Sep 2017 11:41:00 GMT):
Has joined the channel.

zac (Wed, 20 Sep 2017 13:59:20 GMT):
I don't know of anybody who has written up a comparison

zac (Wed, 20 Sep 2017 14:00:29 GMT):
Sawtooth and Fabric attempt to solve essentially the same problem, so there will be many similarities

zac (Wed, 20 Sep 2017 14:00:58 GMT):
In my opinion Sawtooth does a better job of being modular and unopinionated

zac (Wed, 20 Sep 2017 14:01:42 GMT):
It's easier to set up a Sawtooth blockchain for a wide variety of use cases.

zac (Wed, 20 Sep 2017 14:02:29 GMT):
Sawtooth also has access to the PoET consensus algorithm, which gives you Byzantine fault tolerance without all the CPU usage.

zac (Wed, 20 Sep 2017 14:03:30 GMT):
And it better supports a variety of languages and standards, including Python, JavaScript, Go, HTTP/JSON, and ZMQ/Protobuf

zac (Wed, 20 Sep 2017 14:04:33 GMT):
You can write an project for Sawtooth in just about any language. I think for Fabric you _have_ to use Go? Maybe that's not true anymore.

zac (Wed, 20 Sep 2017 14:07:10 GMT):
In Fabric's defense, they have been around a little longer, and there are some nifty toolsets that people have built for it like #composer. I don't think that advantage will exist forever though.

Dan (Wed, 20 Sep 2017 20:39:15 GMT):
What version of vagrant / ubuntu are other core devs on? ```==> default: Checking if box 'ubuntu/xenial64' is up to date... ==> default: A newer version of the box 'ubuntu/xenial64' is available! You currently ==> default: have version '20161220.0.0'. The latest is version '20170919.0.0'. Run ==> default: `vagrant box update` to update. ```

Dan (Wed, 20 Sep 2017 20:49:46 GMT):
(presupposes anyone is still using vagrant :) )

agunde (Wed, 20 Sep 2017 20:50:38 GMT):
==> default: Checking if box 'ubuntu/xenial64' is up to date... ==> default: A newer version of the box 'ubuntu/xenial64' is available! You currently ==> default: have version '20170624.0.0'. The latest is version '20170919.0.0'. Run ==> default: `vagrant box update` to update.

agunde (Wed, 20 Sep 2017 20:50:47 GMT):
This is what I'm on.

Dan (Wed, 20 Sep 2017 21:16:31 GMT):
Thx

DarshanBc (Thu, 21 Sep 2017 03:48:29 GMT):
@zac Thank you is there any sample apps available so that I go through the work flow

DarshanBc (Thu, 21 Sep 2017 03:48:29 GMT):
@zac Thank you is there any sample apps available so that I can go through the work flow

Dan (Thu, 21 Sep 2017 13:25:59 GMT):
@DarshanBc check out https://intelledger.github.io/app_developers_guide.html

Dan (Thu, 21 Sep 2017 13:27:41 GMT):
Some demo links also here https://www.coindesk.com/intel-demos-seafood-tracking-sawtooth-lake-blockchain/

Southside (Thu, 21 Sep 2017 14:26:55 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=CitAtZGGSgbWjWxrJ) @zac [ ](https://chat.hyperledger.org/channel/sawtooth?msg=CitAtZGGSgbWjWxrJ) @zac

Southside (Thu, 21 Sep 2017 14:26:55 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=CitAtZGGSgbWjWxrJ) @zac [ ] In this case we mostassuredly do want to use PoET.

Southside (Thu, 21 Sep 2017 14:26:55 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=CitAtZGGSgbWjWxrJ) @zac [ ] In this case we most assuredly DO want to use PoET. TEEs are available on a lot of hardware these days https://en.wikipedia.org/wiki/Trusted_execution_environment I can understand why IBM would implement on Intel first though

zac (Thu, 21 Sep 2017 14:34:19 GMT):
@Southside Yeah. I haven't done much deployment work on Sawtooth, so I'm not clear on what the story is right now in regards to deploying a PoET network with a non-SGX TEE. I don't know of anyone that has done it yet. That said, I believe the long term plan is for PoET not to be tied to SGX.

zac (Thu, 21 Sep 2017 14:36:17 GMT):
@DarshanBc The documentation Dan linked to is pretty good, and those demos will give you an idea of what has been done with Sawtooth. Those were written against an older version, so the details of their implementation no longer apply, but it should still give you an idea.

zac (Thu, 21 Sep 2017 14:38:02 GMT):
There is a new demo similar to those older ones called Track and Trade in the works. It is being written against the current Sawtooth design, and will be done at the end of the month, so you can check that out then.

zac (Thu, 21 Sep 2017 14:40:01 GMT):
And of course, IntKey and Xo, while very simple, are runnable CLI apps built on top of Sawtooth. They are written in a variety of languages, so if you are looking for a place to start, those would be good: https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples

Dan (Thu, 21 Sep 2017 15:24:06 GMT):
@agunde .. I'm speaking w/ someone at the hackfest atm on security and sawtooth's surface.. are any of the new permissioning docs up?

agunde (Thu, 21 Sep 2017 15:25:42 GMT):
Yes, Here is the Network permissioning doc http://intelledger.github.io/0.8/architecture/validator_network.html#network-permissioning

agunde (Thu, 21 Sep 2017 15:26:23 GMT):
How to use the transactor and validator key permissioning http://intelledger.github.io/0.8/sysadmin_guide/permissioning.html

agunde (Thu, 21 Sep 2017 15:27:02 GMT):
And the Identity Transaction Family Specification http://intelledger.github.io/0.8/transaction_family_specifications/identity_transaction_family.html

agunde (Thu, 21 Sep 2017 15:27:33 GMT):
@Dan ^

Dan (Thu, 21 Sep 2017 15:51:05 GMT):
Thanks Andi! @dhuseby ^

Dan (Thu, 21 Sep 2017 16:59:49 GMT):
At hackfest in security review discussion atm. Reminder on log injection attacks. Be mindful of what you write into a log message. i.e. if you got a malformed transaction, writing that transaction into a log string would be bad. In general any string the user can dictate/influence.

DarshanBc (Fri, 22 Sep 2017 07:41:41 GMT):
Thank you @zac and @Dan

leogzl (Fri, 22 Sep 2017 07:46:40 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=9tTKwzRJGTgsjSNHb) @boydjohnson Thank you.. It will be great, please enlighten me.

boydjohnson (Fri, 22 Sep 2017 15:57:55 GMT):
@leogzl If you are using docker you can run `docker build . -f ci/sawtooth-build-docs -t sawtooth-build-docs:latest` and `docker run --rm -v $(pwd):/project/sawtooth-core sawtooth-build-docs:latest` after having run `./bin/build_all -l python` from the sawtooth-core repo.

Dan (Fri, 22 Sep 2017 16:03:39 GMT):
@sawtooth-enthusiasts... @markparz from Fabric team just suggested we showup at a hackfest at Duke... I think he said Friday next week. If someone is close / wants to be close that would be cool.

markparz (Fri, 22 Sep 2017 16:03:39 GMT):
Has joined the channel.

danconway (Fri, 22 Sep 2017 16:14:33 GMT):
Has joined the channel.

markparz (Fri, 22 Sep 2017 16:16:31 GMT):
Thanks @Dan yes.... here is the information I just found out on the event ....This event is being hosted by the 501c3 nonprofit with (Lincoln Network). Lincoln Network has hosted many events like this one in the past, working with sponsors such as Microsoft, Google, Facebook, AT&T, and others. The event is being co-hosted by Duke Law's Center on Law and Technology. They have sectioned off the panels on Friday night to discuss cryptocurrency and other blockchain applications. Would love to have Hyperledger folks to do a presentation. Additionally, welcome any development resources would like to offer the hackathon teams; during the Saturday of the hackathon, we are hosting a select few to serve as "tech kiosks". The kiosks will serve as a place where our hackers can get blockchain resources, as well as talk to those working specifically within the industry. Hyperledger has such a presence with your blockchain efforts, and giving access to some of that would only amplify the final products produced by those participating in the event. If you have other ideas, we are completely open to them.

markparz (Fri, 22 Sep 2017 16:17:24 GMT):
The times I have found out are about 6pm-9 or 10pm Friday and then 9-9 on Saturday 9/29 & 9/30

Dan (Fri, 22 Sep 2017 16:23:56 GMT):
Thanks @markparz !

Dan (Fri, 22 Sep 2017 16:25:32 GMT):
Chicago hackfest news... we are going to do hands on sawtooth session this afternoon. I think after this morning's session we are sure to have lots of Seth questions. @tkuhrt is going to launch our zoom session. If someone is available to help field questions that would be cool. I would even be inclined to buy beverage(s) for anyone who helps out.

leogzl (Fri, 22 Sep 2017 18:02:17 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=niw9MEhGBwZXpiccj) @boydjohnson Thank you boyjohnson

leogzl (Fri, 22 Sep 2017 18:02:37 GMT):
I am exploring sawtooth now and really need time to understand the concept and how it works.

boydjohnson (Fri, 22 Sep 2017 18:02:59 GMT):
You're welcome @leogzl

tkuhrt (Fri, 22 Sep 2017 18:25:38 GMT):
Has anyone seen the following error. This is an error that we are getting at the Hackfest. ERROR: for sawtooth-tp_settings-default Cannot start service tp_settings: oci runtime error: container_linux.go:262: starting container process caused "exec: \"tp_settings\": executable file not found in $PATH" Starting sawtooth-tp_intkey_python-default ... error

zachgoll (Fri, 22 Sep 2017 18:26:18 GMT):
Has joined the channel.

crow15 (Fri, 22 Sep 2017 18:26:28 GMT):
i'm getting that to, on mac

jsmitchell (Fri, 22 Sep 2017 18:27:46 GMT):
where did you get the docker containers?

tkuhrt (Fri, 22 Sep 2017 18:28:28 GMT):
Just using the https://sawtooth.hyperledger.org/docs/app_developers_guide/sawtooth-default.yaml

jsmitchell (Fri, 22 Sep 2017 18:28:39 GMT):
ok, thanks

jsmitchell (Fri, 22 Sep 2017 18:28:48 GMT):
@rbuysse ^

Dan (Fri, 22 Sep 2017 18:30:29 GMT):
Someone also got a file not found when the script tries to execute `validator` will see if we can get the exact error posted here.

sidrmsh (Fri, 22 Sep 2017 18:32:13 GMT):
Has joined the channel.

Dan (Fri, 22 Sep 2017 18:33:43 GMT):
For those in Chicago... Link to get started: https://sawtooth.hyperledger.org/docs/app_developers_guide.html

conroydave (Fri, 22 Sep 2017 18:37:50 GMT):
Has joined the channel.

conroydave (Fri, 22 Sep 2017 18:37:54 GMT):
good afternoon all

conroydave (Fri, 22 Sep 2017 18:37:58 GMT):
running docker-compose up from the dev guide

conroydave (Fri, 22 Sep 2017 18:38:02 GMT):
mac os , docker install

conroydave (Fri, 22 Sep 2017 18:38:06 GMT):
getting error

conroydave (Fri, 22 Sep 2017 18:38:18 GMT):
``` ERROR: for sawtooth-tp_xo_python-default Cannot start service tp_xo_python: oci runtime error: container_linux.go:262: starting container process caused "exec: \"tp_xo_python\": executable file not found in $PATH" Creating sawtooth-rest_api-default ... error ERROR: for sawtooth-rest_api-default Cannot start service rest_api: oci runtime error: container_linux.go:262: starting container process caused "exec: \"rest_api\": executable file not found in $PATH" Creating sawtooth-tp_settings-default ... error ```

conroydave (Fri, 22 Sep 2017 18:38:47 GMT):
``` writing file: /etc/sawtooth/keys/validator.priv writing file: /etc/sawtooth/keys/validator.pub creating key directory: /root/.sawtooth/keys writing file: /root/.sawtooth/keys/my_key.priv writing file: /root/.sawtooth/keys/my_key.pub Generated config-genesis.batch Processing config-genesis.batch... Generating /var/lib/sawtooth/genesis.batch bash: validator: command not found ```

conroydave (Fri, 22 Sep 2017 18:38:58 GMT):
that is the output from the validator container that fails to load from kitematic

conroydave (Fri, 22 Sep 2017 18:39:05 GMT):
doing a docker ps -a i get

conroydave (Fri, 22 Sep 2017 18:39:20 GMT):
``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b2328a4bf48 hyperledger/sawtooth-rest_api:latest "rest_api --connec..." 22 seconds ago Created sawtooth-rest_api-default e322728161ae hyperledger/sawtooth-tp_intkey_python:latest "tp_intkey_python ..." 22 seconds ago Created sawtooth-tp_intkey_python-default 1a96b87368b7 hyperledger/sawtooth-tp_xo_python:latest "tp_xo_python -vv ..." 22 seconds ago Created sawtooth-tp_xo_python-default db798a2b12e9 hyperledger/sawtooth-tp_settings:latest "tp_settings -vv t..." 22 seconds ago Created sawtooth-tp_settings-default 80d667f9a9b7 hyperledger/sawtooth-validator:latest "bash -c 'sawtooth..." 23 seconds ago Exited (127) 19 seconds ago sawtooth-validator-default ```

tkuhrt (Fri, 22 Sep 2017 18:45:51 GMT):
This is the error in my Kitematic: ``` [2017-09-22 18:45:10.384 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml [2017-09-22 18:45:10.385 INFO validator] Skipping validator config loading from non-existent config file: /etc/sawtooth/validator.toml [2017-09-22 18:45:10.387 ERROR cli] No such signing key file: /etc/sawtooth/keys/validator.priv [2017-09-22 18:45:10.389 INFO cli] config [path]: config_dir = "/etc/sawtooth" [2017-09-22 18:45:10.389 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" [2017-09-22 18:45:10.389 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" [2017-09-22 18:45:10.389 INFO cli] config [path]: log_dir = "/var/log/sawtooth" [2017-09-22 18:45:10.390 INFO cli] config [path]: policy_dir = "/etc/sawtooth/policy" [2017-09-22 18:45:10.390 ERROR cli] Initialization errors occurred (see previous log ERROR messages), shutting down. ```

conroydave (Fri, 22 Sep 2017 18:49:21 GMT):
i just blew away *all* docker images and retried from a fresh docker compose, and a different network

conroydave (Fri, 22 Sep 2017 18:49:37 GMT):
same errors

MicBowman (Fri, 22 Sep 2017 18:52:42 GMT):
fyi... in the getting started guide... i'm installing from the ubuntu repositories... many of the command in the getting started guide are wrong

MicBowman (Fri, 22 Sep 2017 18:52:51 GMT):
validator --> sawtooth-validator

MicBowman (Fri, 22 Sep 2017 18:53:10 GMT):
rest-api --> sawtooth-rest-api

MicBowman (Fri, 22 Sep 2017 18:54:07 GMT):
tp-intkey-python --> intkey-tp-pythong

agunde (Fri, 22 Sep 2017 18:54:37 GMT):
@conroydave I think the above is the same issue you are seeing, Can you try updating the docker-compose to match the above?

sidrmsh (Fri, 22 Sep 2017 18:54:38 GMT):
Getting the same error as @conroydave

chicagotech (Fri, 22 Sep 2017 18:55:55 GMT):
Has joined the channel.

agunde (Fri, 22 Sep 2017 18:56:27 GMT):
This has been updated now https://sawtooth.hyperledger.org/docs/app_developers_guide/sawtooth-default.yaml

conroydave (Fri, 22 Sep 2017 18:58:48 GMT):
works

conroydave (Fri, 22 Sep 2017 18:58:53 GMT):
thanks Andi

conroydave (Fri, 22 Sep 2017 18:59:18 GMT):
i didnt get a chance to do a dif

conroydave (Fri, 22 Sep 2017 18:59:24 GMT):
what was the error out of curiosity

crow15 (Fri, 22 Sep 2017 19:02:09 GMT):
new json file fixed it for me

jrosmith (Fri, 22 Sep 2017 19:02:56 GMT):
Has joined the channel.

jrosmith (Fri, 22 Sep 2017 19:03:41 GMT):
Anyone run into this with the new file? ``` Joshuas-MacBook-Pro:Sawtooth jrosmith$ docker exec -it sawtooth-client-default bash root@e882c9a852c9:/# curl http://rest_api:8080/blocks curl: (6) Could not resolve host: rest_api root@e882c9a852c9:/# curl http://localhost:8080/blocks curl: (7) Failed to connect to localhost port 8080: Connection refused ```

Dan (Fri, 22 Sep 2017 19:09:02 GMT):
in the app dev guide instructions it tells you to hit rest_api instead of rest-api

Dan (Fri, 22 Sep 2017 19:10:02 GMT):
`root@75b380886502:/# curl http://rest_api:8080/blocks` should be

Dan (Fri, 22 Sep 2017 19:10:28 GMT):
`root@75b380886502:/# curl http://rest-api:8080/blocks` courtesy of Craig (crow15)

jrosmith (Fri, 22 Sep 2017 19:12:45 GMT):
awesome, thank you!

beheraashisa (Fri, 22 Sep 2017 19:14:13 GMT):
Has joined the channel.

Dan (Fri, 22 Sep 2017 19:14:56 GMT):
so it looks like these are all fixed in master

Dan (Fri, 22 Sep 2017 19:15:31 GMT):
so this is probably an issue of the default version of the docs is old

rbuysse (Fri, 22 Sep 2017 19:21:30 GMT):
which URL are you looking at?

JamesKempf (Fri, 22 Sep 2017 20:09:25 GMT):
Couple questions. Is there some way I can register a callback to get notification of the results of a transaction completion? Seth right now simply says that a transaction has been scheduled and you need to look in the sawtooth-validator log file to find out whether the transaction completed or not. Also, is there some way to actually look at the blockchain log (not the validator log file)? Thx.

boydjohnson (Fri, 22 Sep 2017 20:11:50 GMT):
`sawtooth block list --url ` will give you the blocks.

JamesKempf (Fri, 22 Sep 2017 20:12:29 GMT):
@boydjohnson, thanx!

boydjohnson (Fri, 22 Sep 2017 20:13:46 GMT):
I'm not very familiar with seth. Does it give you the batch id that the txn was submitted in?

JamesKempf (Fri, 22 Sep 2017 20:14:08 GMT):
Mmm, I think so.

boydjohnson (Fri, 22 Sep 2017 20:14:55 GMT):
You could `sawtooth batch status --url `.

JamesKempf (Fri, 22 Sep 2017 20:15:15 GMT):
I guess you would need to poll that in a loop, right?

boydjohnson (Fri, 22 Sep 2017 20:15:41 GMT):
There is a `--wait` but I'm not sure if it works correctly.

boydjohnson (Fri, 22 Sep 2017 20:16:10 GMT):
@zac Does `--wait` is sawtooth batch status work correctly?

boydjohnson (Fri, 22 Sep 2017 20:16:10 GMT):
@zac Does `--wait` in sawtooth batch status work correctly?

zac (Fri, 22 Sep 2017 20:37:35 GMT):
should

zac (Fri, 22 Sep 2017 20:37:48 GMT):
is it broke?

boydjohnson (Fri, 22 Sep 2017 20:38:30 GMT):
Several of our tests use a looping mechanism instead of `--wait` flags, and I thought it was because something was broken.

zac (Fri, 22 Sep 2017 20:38:50 GMT):
Could be because they predate `--wait`

boydjohnson (Fri, 22 Sep 2017 20:39:02 GMT):
ah, ok.

zac (Fri, 22 Sep 2017 20:40:18 GMT):
Also worth mentioning that `--wait` queries the REST API, so it is limited by the REST API's timeout (default 300s)

zac (Fri, 22 Sep 2017 20:40:31 GMT):
That is probably fine for a test

zac (Fri, 22 Sep 2017 20:41:08 GMT):
Some of the CLI commands use a loop internally to make `--wait` work indefinitely

zac (Fri, 22 Sep 2017 20:41:57 GMT):
(if the REST API times out and responds, but there are still pending batches, it will request statuses again, so one loop every 300s)

boydjohnson (Fri, 22 Sep 2017 20:42:12 GMT):
Ah, thanks.

jsmitchell (Fri, 22 Sep 2017 20:43:45 GMT):
there is a way to subscribe to events over websockets

jsmitchell (Fri, 22 Sep 2017 20:43:56 GMT):
that is a lot more elegant than --wait

jsmitchell (Fri, 22 Sep 2017 20:44:28 GMT):
@pschwarz @JamesKempf ^

pschwarz (Fri, 22 Sep 2017 20:45:17 GMT):
Not events, per se, but state changes

pschwarz (Fri, 22 Sep 2017 20:45:58 GMT):
Which includes information on when a block was committed, but does not include a list of transactions committed with that block

pschwarz (Fri, 22 Sep 2017 21:21:23 GMT):
There is some documentation for this: https://intelledger.github.io/rest_api/state_delta_websockets.html

JamesKempf (Fri, 22 Sep 2017 21:30:25 GMT):
I will check the docs. Being able to subscribe to state changes would certainly help since the 1 second granularity on --wait may result in substantial latency in many cases. Thanx.

San2k (Sun, 24 Sep 2017 12:10:37 GMT):
Has joined the channel.

San2k (Sun, 24 Sep 2017 16:51:16 GMT):
Hi! Could anyone give me a link on how to mount a host directory into the container of docker? So i can run sawtooth on docker

San2k (Sun, 24 Sep 2017 16:51:19 GMT):
tY

ThiagoAzevedo (Mon, 25 Sep 2017 04:46:10 GMT):
Has joined the channel.

ganbold (Mon, 25 Sep 2017 13:11:29 GMT):
Has joined the channel.

Dan (Mon, 25 Sep 2017 13:24:23 GMT):
Hi @San2k did you already see the docker stuff here? https://sawtooth.hyperledger.org/docs/app_developers_guide/docker.html Not sure if it answers what you are looking for or not, so please ping back if it doesn't.

nicolapaoli (Mon, 25 Sep 2017 14:16:56 GMT):
Has joined the channel.

DarshanBc (Tue, 26 Sep 2017 05:47:47 GMT):
Is there any Usecase which involves a block is searched by hash or TxID

clima (Tue, 26 Sep 2017 07:04:35 GMT):
Has joined the channel.

k33p3r (Tue, 26 Sep 2017 07:11:44 GMT):
Has joined the channel.

akshaygoyal (Tue, 26 Sep 2017 13:07:23 GMT):
Has joined the channel.

Dan (Tue, 26 Sep 2017 13:16:48 GMT):
@agunde can you think of a way to make this transaction_id dynamic? I'm trying to add a positive test case but having a second valid transaction breaks this model of a single valid txn id. https://github.com/hyperledger/sawtooth-core/blob/master/consensus/poet/families/tests/validator_reg_message_factory.py#L237

Dan (Tue, 26 Sep 2017 13:17:26 GMT):
@RyanBanks you might also have an idea given your recent work with the mock validator?

RyanBanks (Tue, 26 Sep 2017 13:17:26 GMT):
Has joined the channel.

smagne (Tue, 26 Sep 2017 13:29:40 GMT):
Hello, I'm using sawtooth with the javascript sdk

smagne (Tue, 26 Sep 2017 13:31:45 GMT):
and when I post a batch I need to wait until the processor process the batch. Reading the documentation I saw that there is a wait parameter but there isn't any reference in the javascript sdk any ideas on how to use it?

agunde (Tue, 26 Sep 2017 13:51:04 GMT):
@Dan you can update the method so you can pass the txn_id along with the validator name. You would then just have to calculate the txn_id within the test.

akshaygoyal (Tue, 26 Sep 2017 13:51:45 GMT):
Hello folks! I am new to hyperledger. I want to use sawtooth lake to develop applications for supply chain management. Any documentation or leads from where I can start? Thanks in advance.

Dan (Tue, 26 Sep 2017 14:18:57 GMT):
Thanks @agunde. Is the txn id the `signature` property of `self.factory.create_tp_process_request(..)` ?

agunde (Tue, 26 Sep 2017 14:28:19 GMT):
@Dan yep

Dan (Tue, 26 Sep 2017 14:33:11 GMT):
thx!

smagne (Tue, 26 Sep 2017 15:02:30 GMT):
Hello, I'm using sawtooth with the javascript sdk and when I post a batch I need to wait until the processor process the batch. Reading the documentation I saw that there is a wait parameter but there isn't any reference in the javascript sdk any ideas on how to use it?

zac (Tue, 26 Sep 2017 16:29:28 GMT):
@smagne I believe you are referring to the wait query parameter?

zac (Tue, 26 Sep 2017 16:30:56 GMT):
In that case, you would use it like any other query parameter, regardless of the SDK. Just have the client make an HTTP request with `?wait` at the end.

zac (Tue, 26 Sep 2017 16:40:10 GMT):
So, if your REST API is at localhost:8080, and you wanted to query batch status using the request library in Node: ``` const request = require('request') const batchId = 'whateveryourbatchidis' request(`http://localhost:8080/batch_status?wait&id=${batchId}`, (err, res, body) => { console.log('Batch status:', body.data[0].status) }) ```

zac (Tue, 26 Sep 2017 16:42:20 GMT):
You can see this HTTP request used in a fairly sophisticated manner in some of the CLI's

zac (Tue, 26 Sep 2017 16:43:59 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/cli/sawtooth_cli/batch.py#L258

jrosmith (Tue, 26 Sep 2017 16:44:56 GMT):
Has left the channel.

zac (Tue, 26 Sep 2017 16:47:13 GMT):
This implementation allows the sawtooth CLI to wait indefinitely, even though the REST API will eventually timeout. If batches are still pending it, it remakes the batch status request. However, if you are fine with wait times maxxing out at ~300 seconds, then you only need to make the request once.

kelly_ (Tue, 26 Sep 2017 20:05:59 GMT):
@akshaygoyal you should check this out http://intelledger.github.io/examples/supplychain/overview.html

Dan (Tue, 26 Sep 2017 20:41:51 GMT):
@kelly_ checkout new URL: https://sawtooth.hyperledger.org/docs/examples/supplychain/overview.html

JamesKempf (Wed, 27 Sep 2017 19:34:52 GMT):
I got an unhandled exception message in sawtooth validator:

JamesKempf (Wed, 27 Sep 2017 19:35:11 GMT):
[2017-09-27 19:25:52.514 ERROR future] An unhandled error occurred while running future callback Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/future.py", line 80, in run_callback self._callback_func(self._request, self._result) TypeError: _remove_temporary_connection() takes 2 positional arguments but 4 were given

Dan (Thu, 28 Sep 2017 00:04:04 GMT):
Hi @JamesKempf Did that happen repeatably? And what version of ST are you using?

nolan330 (Thu, 28 Sep 2017 00:07:41 GMT):
Has joined the channel.

pschwarz (Thu, 28 Sep 2017 15:08:33 GMT):
That problem has been fixed in master, and should be in the next release

nolan330 (Thu, 28 Sep 2017 19:24:06 GMT):
hey everyone, trying to get my dev env setup, and wondering if there is a guide to get from the tutorial to running the track-and-trade example. im sure it is a pretty simple modification of the docker-compose file, but i havent been able to crack it. i have been able to get the track-and-trade image to run itself by following the build/run commands, but not connected as a transaction family within sawtooth itself. is this something you guys support? id be happy to help with docs after it gets ironed out

zac (Thu, 28 Sep 2017 20:19:55 GMT):
track-and-trade is still in flight

zac (Thu, 28 Sep 2017 20:20:09 GMT):
make sure you are pulling it from the `track-and-trade` branch for now

zac (Thu, 28 Sep 2017 20:20:26 GMT):
though it will be merged back into master by next week

zac (Thu, 28 Sep 2017 20:21:12 GMT):
since it is still being built, there is not much in the way of documentation for how to get it running

zac (Thu, 28 Sep 2017 20:24:18 GMT):
However, if you follow the testing instructions in [PR-879](https://github.com/hyperledger/sawtooth-core/pull/879) and [PR-889](https://github.com/hyperledger/sawtooth-core/pull/889), you should be able to get it running.

zac (Thu, 28 Sep 2017 20:24:29 GMT):
Probably.

jsmitchell (Thu, 28 Sep 2017 20:24:47 GMT):
seems like waiting until next week might be a smoother experience

zac (Thu, 28 Sep 2017 20:24:56 GMT):
This is accurate.

zac (Thu, 28 Sep 2017 20:25:39 GMT):
By then we'll have a Docker compose file, or at the very least a bash script, that will get everything going.

zac (Thu, 28 Sep 2017 20:27:10 GMT):
@nolan330 ^

nolan330 (Thu, 28 Sep 2017 20:31:11 GMT):
ah, right on. thanks everyone. really appreciate it

nolan330 (Thu, 28 Sep 2017 20:31:36 GMT):
i was messing around in the track-and-trade branch, but was still having trouble gluing it together

nolan330 (Thu, 28 Sep 2017 20:31:48 GMT):
but it is an awesome template/example

zac (Thu, 28 Sep 2017 20:37:46 GMT):
Thanks! Is there a particular step you are stuck on right now?

tommling (Fri, 29 Sep 2017 17:41:52 GMT):
Hey all, I am running into an interesting errors related to batch submission

tommling (Fri, 29 Sep 2017 17:42:19 GMT):
I think it is related to the wait parameter

tommling (Fri, 29 Sep 2017 17:43:30 GMT):
?wait added onto the post request. I am using the most recent version of STL, on OSX el capitan, docker version 17.06.0-ce-mac19, running docker-compose -f sawtooth-default.yaml up/down

tommling (Fri, 29 Sep 2017 17:43:56 GMT):
"""wtooth-validator-default | [17:38:05.918 ERROR _base] exception calling callback for sawtooth-validator-default | Traceback (most recent call last): sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks sawtooth-validator-default | callback(self) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/dispatch.py", line 117, in _determine_next sawtooth-validator-default | if future.result().status == HandlerStatus.DROP: sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result sawtooth-validator-default | return self.__get_result() sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result sawtooth-validator-default | raise self._exception sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run sawtooth-validator-default | result = self.fn(*self.args, **self.kwargs) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 106, in handle sawtooth-validator-default | response = self._respond(request) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 577, in _respond sawtooth-validator-default | statuses = waiter.wait_for_batches(batch_ids, request.timeout) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 545, in wait_for_batches sawtooth-validator-default | self._batch_tracker.watch_statuses(self, batch_ids) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/batch_tracker.py", line 166, in watch_statuses sawtooth-validator-default | observer.notify_finished(statuses) sawtooth-validator-default | AttributeError: '_BatchWaiter' object has no attribute 'notify_finished' sawtooth-validator-default | [17:38:05.919 DEBUG publisher] Dropping previously committed batch: 5ad9b49095b8318d18b5d19fe4fe637c4a11fc863aaf0618dd13333ca11d6bd0424169689a936f8d535ebde7ae5f2b121ede6ef8da52bd73f6de5a7f2107467c"""

tommling (Fri, 29 Sep 2017 17:43:56 GMT):
"""sawwtooth-validator-default | [17:38:05.918 ERROR _base] exception calling callback for sawtooth-validator-default | Traceback (most recent call last): sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks sawtooth-validator-default | callback(self) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/dispatch.py", line 117, in _determine_next sawtooth-validator-default | if future.result().status == HandlerStatus.DROP: sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result sawtooth-validator-default | return self.__get_result() sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result sawtooth-validator-default | raise self._exception sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run sawtooth-validator-default | result = self.fn(*self.args, **self.kwargs) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 106, in handle sawtooth-validator-default | response = self._respond(request) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 577, in _respond sawtooth-validator-default | statuses = waiter.wait_for_batches(batch_ids, request.timeout) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 545, in wait_for_batches sawtooth-validator-default | self._batch_tracker.watch_statuses(self, batch_ids) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/batch_tracker.py", line 166, in watch_statuses sawtooth-validator-default | observer.notify_finished(statuses) sawtooth-validator-default | AttributeError: '_BatchWaiter' object has no attribute 'notify_finished' sawtooth-validator-default | [17:38:05.919 DEBUG publisher] Dropping previously committed batch: 5ad9b49095b8318d18b5d19fe4fe637c4a11fc863aaf0618dd13333ca11d6bd0424169689a936f8d535ebde7ae5f2b121ede6ef8da52bd73f6de5a7f2107467c"""

tommling (Fri, 29 Sep 2017 17:43:56 GMT):
"""sawwtooth-validator-default | [17:38:05.918 ERROR _base] exception calling callback for sawtooth-validator-default | Traceback (most recent call last): sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks sawtooth-validator-default | callback(self) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/dispatch.py", line 117, in _determine_next sawtooth-validator-default | if future.result().status == HandlerStatus.DROP: sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result sawtooth-validator-default | return self.__get_result() sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result sawtooth-validator-default | raise self._exception sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run sawtooth-validator-default | result = self.fn(*self.args, **self.kwargs) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 106, in handle sawtooth-validator-default | response = self._respond(request) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 577, in _respond sawtooth-validator-default | statuses = waiter.wait_for_batches(batch_ids, request.timeout) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 545, in wait_for_batches sawtooth-validator-default | self._batch_tracker.watch_statuses(self, batch_ids) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/batch_tracker.py", line 166, in watch_statuses sawtooth-validator-default | observer.notify_finished(statuses) sawtooth-validator-default | AttributeError: '_BatchWaiter' object has no attribute 'notify_finished' """

tommling (Fri, 29 Sep 2017 17:44:51 GMT):
my gut says there is a race condition

tommling (Fri, 29 Sep 2017 17:44:51 GMT):
my gut says there is a race condition related to this _BatchWaiter and the time it takes to complete the response.

zac (Fri, 29 Sep 2017 17:46:39 GMT):
hrmmm

zac (Fri, 29 Sep 2017 17:46:40 GMT):
could be

zac (Fri, 29 Sep 2017 17:46:49 GMT):
does this happen everytime you `?wait`?

jsmitchell (Fri, 29 Sep 2017 17:46:54 GMT):
looks like just a straight up bug to me

jsmitchell (Fri, 29 Sep 2017 17:47:18 GMT):
that publisher debug message is unrelated

tommling (Fri, 29 Sep 2017 17:50:06 GMT):
@jsmitchell, I think you're right. It was a `double spend`. No, it doesn't happen on every time. I am poking sawtooth with interesting inputs though, for instance I create two int-key states at 0, and then decrement the first by one and increment the second by 1 in the same batch. I post this batch via curl

tommling (Fri, 29 Sep 2017 17:50:27 GMT):
curl --request POST --header "Content-Type: application/octet-stream" --data-binary @intkey.batches "http://localhost:8080/batches?wait=300" { "error": { "code": 17, "message": "The request timed out while waiting for a response from the validator. Your request may or may not have been processed.", "title": "Validator Timed Out" }

jsmitchell (Fri, 29 Sep 2017 17:50:49 GMT):
yeah, that seems due to that attributerrror

tommling (Fri, 29 Sep 2017 17:51:10 GMT):
I am getting the bug now consistently

tommling (Fri, 29 Sep 2017 17:52:17 GMT):
I am going to poke around at the source for a tad

jsmitchell (Fri, 29 Sep 2017 17:54:05 GMT):
its because the method is called notify_batches_finished() not notify_finished()

jsmitchell (Fri, 29 Sep 2017 17:55:14 GMT):
that got fixed in commit af3e7b69a

jsmitchell (Fri, 29 Sep 2017 17:55:26 GMT):
``` commit af3e7b69a7cd26212e5db62c0ae47b5600501a27 Author: Zac Delventhal Date: Tue Aug 29 16:43:20 2017 -0500 Fix wait-for-commit failing when already committed An uncaught typo was causing client requests for batch status to fail when told to wait for commit when batch was already committed. The typo has been fixed and a new test has been added to cover that condition. Signed-off-by: Zac Delventhal ```

jsmitchell (Fri, 29 Sep 2017 17:55:31 GMT):
from august 29th

tommling (Fri, 29 Sep 2017 17:55:35 GMT):
hmm. I literally just cloned the repo

jsmitchell (Fri, 29 Sep 2017 17:55:37 GMT):
where did you get your sawtooth?

jsmitchell (Fri, 29 Sep 2017 17:55:49 GMT):
master?

tommling (Fri, 29 Sep 2017 17:55:56 GMT):
because I thought that might be the case, so I updated

tommling (Fri, 29 Sep 2017 17:55:58 GMT):
yessir

jsmitchell (Fri, 29 Sep 2017 17:56:05 GMT):
that is ... odd

tommling (Fri, 29 Sep 2017 17:56:18 GMT):
* master 2974dd1 [origin/master] Merge pull request #937 from chenette/Intro-TF-rewrite

tommling (Fri, 29 Sep 2017 17:57:21 GMT):
lemme make sure

tommling (Fri, 29 Sep 2017 17:57:23 GMT):
yup that is head

jsmitchell (Fri, 29 Sep 2017 17:57:26 GMT):
@rbuysse is that docker compose file up to date?

tommling (Fri, 29 Sep 2017 17:57:50 GMT):
good question, I am using the one from master, but it might be behind

jsmitchell (Fri, 29 Sep 2017 17:57:57 GMT):
the stuff you get from that docker compose file is not coming from the source repo

jsmitchell (Fri, 29 Sep 2017 17:58:07 GMT):
but rather dockerhub images

jsmitchell (Fri, 29 Sep 2017 17:58:26 GMT):
so, the version in the docker images is probably old/broken

jsmitchell (Fri, 29 Sep 2017 17:58:57 GMT):
i think there is a compose file in there that spins up containers based on the source repo

rbuysse (Fri, 29 Sep 2017 17:59:00 GMT):
the docker images are 0.8.8

jsmitchell (Fri, 29 Sep 2017 17:59:03 GMT):
but I don't have experience with it

tommling (Fri, 29 Sep 2017 17:59:11 GMT):
Okay, thanks for the tip

tommling (Fri, 29 Sep 2017 17:59:19 GMT):
I will check it out, sorry for the duplicate

jsmitchell (Fri, 29 Sep 2017 17:59:41 GMT):
hey, no worries! thanks for reporting it

jsmitchell (Fri, 29 Sep 2017 18:00:06 GMT):
@rbuysse do you know how to docker compose up with the source referencing compose file?

rbuysse (Fri, 29 Sep 2017 18:00:24 GMT):
I do not

jsmitchell (Fri, 29 Sep 2017 18:00:36 GMT):
@adamludvik ^

johanherman (Fri, 29 Sep 2017 19:19:08 GMT):
Has joined the channel.

amundson (Sat, 30 Sep 2017 21:34:07 GMT):
the easiest is to build the mounted version of the images "./bin/build_all -x java -x cxx -x javascript" and use the smallbank-local-mounted.yaml file "docker-compose -f docker/compose/smallbank-local-mounted.yaml up"

mikykey (Sun, 01 Oct 2017 09:44:41 GMT):
Has joined the channel.

grovnick (Sun, 01 Oct 2017 10:31:01 GMT):
Has joined the channel.

kiro112 (Mon, 02 Oct 2017 01:32:19 GMT):
Has joined the channel.

Benudek (Mon, 02 Oct 2017 11:51:07 GMT):
Has joined the channel.

carlos_frijoles (Mon, 02 Oct 2017 12:09:42 GMT):
Has joined the channel.

Dan (Mon, 02 Oct 2017 15:04:42 GMT):
Trying to join sprint planning. Are others getting ... "The host has another meeting in progress" from zoom?

mfford (Mon, 02 Oct 2017 15:06:18 GMT):
Try now. Tracy fixed it.

Dan (Mon, 02 Oct 2017 21:18:30 GMT):
I want to send out a link to T&T docs, but it's only on master. If I go to the new URL and use the selector for master it gives me the old URL. Is that one of the limitations that prevented closing the story or is that unanticipated?

Dan (Mon, 02 Oct 2017 21:18:42 GMT):
@rbuysse ^

rbuysse (Mon, 02 Oct 2017 21:19:05 GMT):
you're right.

rbuysse (Mon, 02 Oct 2017 21:19:52 GMT):
the docs are being published to the hyperledger url but we aren't "cut over"

Dan (Mon, 02 Oct 2017 21:20:21 GMT):
if I want to circulate a link for that doc using the new domain when do you think I could do that? (whether it's a cut over or making a new release or whatever)

rbuysse (Mon, 02 Oct 2017 21:22:29 GMT):
is it this? https://sawtooth.hyperledger.org/docs/nightly/transaction_family_specifications/track_and_trade_transaction_family.html

Dan (Mon, 02 Oct 2017 21:29:05 GMT):
yes!

Dan (Tue, 03 Oct 2017 16:27:55 GMT):
what's the sawtooth-manage package for?

Dan (Tue, 03 Oct 2017 16:28:16 GMT):
as in `python3-sawtooth-manage 0.8.9~dev377-1 all Sawtooth Lake Management Library`

Dan (Tue, 03 Oct 2017 16:28:16 GMT):
as in `python3-sawtooth-manage 0.8.9~dev377-1 all Sawtooth Lake Management Library`

Dan (Tue, 03 Oct 2017 21:11:48 GMT):
per other conversations this ^ is deprecated.

vbledar (Tue, 03 Oct 2017 21:33:45 GMT):
hi. i'm trying to query my blockchain using the rest api but I'm receiving the following error:

vbledar (Tue, 03 Oct 2017 21:33:47 GMT):
{ "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }

vbledar (Tue, 03 Oct 2017 21:34:10 GMT):
I'm running a get request on this endpoint: http://localhost:18080/batches

vbledar (Tue, 03 Oct 2017 21:34:31 GMT):
I started my validator running the following commands:

vbledar (Tue, 03 Oct 2017 21:35:09 GMT):
sawtooth keygen sawtooth config genesis sudo -u sawtooth sawtooth admin genesis config-genesis.batch sudo sawtooth admin keygen

vbledar (Tue, 03 Oct 2017 21:35:30 GMT):
sudo -u sawtooth sawtooth-validator -vv

vbledar (Tue, 03 Oct 2017 21:35:55 GMT):
any idea what have i don wrong?

vbledar (Tue, 03 Oct 2017 21:51:11 GMT):
Found the following: https://jira.hyperledger.org/browse/STL-39

vbledar (Tue, 03 Oct 2017 21:51:34 GMT):
It seems I didn't execute the following line: sudo sawtooth admin genesis

vbledar (Tue, 03 Oct 2017 21:51:50 GMT):
I'm not sure if it is correct to run it with sudo, but it is working now!

amundson (Tue, 03 Oct 2017 21:54:06 GMT):
FYI - @rjones is rolling out some DCO changes in github sawtooth-core repo, let's keep him up-to-date with any problems so he has all the info

rjones (Tue, 03 Oct 2017 21:54:06 GMT):
Has joined the channel.

amundson (Tue, 03 Oct 2017 21:56:25 GMT):
@vbledar - anything in /var/log/sawtooth/validator-error.log? (older versions of sawtooth might have a validator id in that filename)

vbledar (Tue, 03 Oct 2017 21:58:18 GMT):
@amundson unfortunately I deleted everything and started the procedure again. I'll take a look as soon as everything is setup again

Dan (Tue, 03 Oct 2017 21:59:12 GMT):
thanks @vbledar. I wasn't clear from your note above whether there's a missing step in the instructions or not. If there is a new defect please let us know.

vbledar (Tue, 03 Oct 2017 22:09:51 GMT):
@Dan I'm confused about the following two commands:

vbledar (Tue, 03 Oct 2017 22:10:02 GMT):
sudo -u sawtooth sawtooth admin genesis config-genesis.batch

vbledar (Tue, 03 Oct 2017 22:10:18 GMT):
produces the following output: Processing config-genesis.batch... Generating /var/lib/sawtooth/genesis.batch

vbledar (Tue, 03 Oct 2017 22:10:35 GMT):
sudo -u sawtooth sawtooth admin genesis

rjones (Tue, 03 Oct 2017 22:10:40 GMT):
@dan I renamed supply-chain to sawtooth-supply-chain, sorry for any turbulence

vbledar (Tue, 03 Oct 2017 22:10:54 GMT):
produces the following output: Generating /var/lib/sawtooth/genesis.batch

vbledar (Tue, 03 Oct 2017 22:11:37 GMT):
if I don't run the latter the rest api produces the error 15 from above

vbledar (Tue, 03 Oct 2017 22:11:56 GMT):
if do run it then the rest api works perfectly

vbledar (Tue, 03 Oct 2017 22:12:15 GMT):
both commands give the same output!

Dan (Tue, 03 Oct 2017 22:12:24 GMT):
thanks for the heads up @ry. @amundson was in process of populating that. so heads up to you shawn.

amundson (Tue, 03 Oct 2017 22:12:48 GMT):
no worries

Dan (Tue, 03 Oct 2017 22:21:41 GMT):
@vbledar .. let me take a look ...

Dan (Tue, 03 Oct 2017 22:27:03 GMT):
that output file is the default name that command will produce unless it's overridden. But to your main question, I'm not sure why there's an apparently redundant command there. @amundson is more familiar with the CLI than I am. Maybe he can shed some light.

Dan (Tue, 03 Oct 2017 22:29:06 GMT):
Btw, @vbledar which set of instructions are you working from?

vbledar (Tue, 03 Oct 2017 22:29:57 GMT):
From this location if that's what you mean: https://intelledger.github.io/app_developers_guide/ubuntu.html#validator-start-up-process

Dan (Tue, 03 Oct 2017 22:31:57 GMT):
yep that's what I was looking for. So there isn't an instruction to do `sudo -u sawtooth sawtooth admin genesis config-genesis.batch` twice. You just figured out that if you ran the command a second time with no argument then the validator would work?

vbledar (Tue, 03 Oct 2017 22:35:57 GMT):
Didn't figure it by myself. I found the following from @amundson here: https://jira.hyperledger.org/browse/STL-39

vbledar (Tue, 03 Oct 2017 22:37:29 GMT):
Just pure luck I didn't realize in the beginning that it was the same command. I'm referring to the following from STL-39: "b) create data for the genesis block with 'sawtooth admin genesis'"

vbledar (Tue, 03 Oct 2017 22:37:44 GMT):
after running it like that it worked

vbledar (Tue, 03 Oct 2017 22:38:09 GMT):
On the other hand I have tried yet to run only the short version of the command without even running the long version

vbledar (Tue, 03 Oct 2017 22:38:21 GMT):
I'll give it a try and let you know

vbledar (Tue, 03 Oct 2017 22:41:37 GMT):
Executing the following in sequence works: vbledar@sawtoothsrv1:~$ clear vbledar@sawtoothsrv1:~$ sudo rm -rf /var/lib/sawtooth/* vbledar@sawtoothsrv1:~$ sawtooth keygen --force overwriting file: /home/vbledar/.sawtooth/keys/vbledar.priv overwriting file: /home/vbledar/.sawtooth/keys/vbledar.pub vbledar@sawtoothsrv1:~$ sawtooth config genesis Generated config-genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin keygen --force overwriting file: /etc/sawtooth/keys/validator.priv overwriting file: /etc/sawtooth/keys/validator.pub vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin genesis Generating /var/lib/sawtooth/genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth-validator -vv

vbledar (Tue, 03 Oct 2017 22:44:52 GMT):
Running this sequence it doesn't work (basically only the admin genesis is different):

vbledar (Tue, 03 Oct 2017 22:44:53 GMT):
vbledar@sawtoothsrv1:~$ sudo rm -rf /var/lib/sawtooth/* vbledar@sawtoothsrv1:~$ sawtooth keygen --force overwriting file: /home/vbledar/.sawtooth/keys/vbledar.priv overwriting file: /home/vbledar/.sawtooth/keys/vbledar.pub vbledar@sawtoothsrv1:~$ sawtooth config genesis Generated config-genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin keygen --force overwriting file: /etc/sawtooth/keys/validator.priv overwriting file: /etc/sawtooth/keys/validator.pub vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin genesis config-genesis.batch Processing config-genesis.batch... Generating /var/lib/sawtooth/genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth-validator -vv

rjones (Tue, 03 Oct 2017 22:51:33 GMT):
I think if you surround those with triple ticks they turn into collapsible text.

rjones (Tue, 03 Oct 2017 22:51:40 GMT):
```vbledar@sawtoothsrv1:~$ sudo rm -rf /var/lib/sawtooth/* vbledar@sawtoothsrv1:~$ sawtooth keygen --force overwriting file: /home/vbledar/.sawtooth/keys/vbledar.priv overwriting file: /home/vbledar/.sawtooth/keys/vbledar.pub vbledar@sawtoothsrv1:~$ sawtooth config genesis Generated config-genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin keygen --force overwriting file: /etc/sawtooth/keys/validator.priv overwriting file: /etc/sawtooth/keys/validator.pub vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth admin genesis config-genesis.batch Processing config-genesis.batch... Generating /var/lib/sawtooth/genesis.batch vbledar@sawtoothsrv1:~$ sudo -u sawtooth sawtooth-validator -vv```

rjones (Tue, 03 Oct 2017 22:51:51 GMT):
I'm wrong. What's new?

vbledar (Tue, 03 Oct 2017 22:52:22 GMT):
{{{test}}}

vbledar (Tue, 03 Oct 2017 22:52:32 GMT):
sorry, what is a "tick"

rjones (Tue, 03 Oct 2017 23:01:36 GMT):
\`\`\`

rjones (Tue, 03 Oct 2017 23:01:36 GMT):
it is this symbol: `

rjones (Tue, 03 Oct 2017 23:01:36 GMT):
```

rjones (Tue, 03 Oct 2017 23:02:19 GMT):
next to tilde on my keyboard: ~

amundson (Wed, 04 Oct 2017 00:04:31 GMT):
@vbledar have you attempted to submit any transactions? I'm wondering if it may be the case that no batches where in the genesis file and so no block was generated, but that if you were to submit one (with 'xo create game000' for example), you would get the expected behavior and that /batches/ endpoint would start returning data appropriately

mfford (Wed, 04 Oct 2017 16:18:17 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, October 5th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, October 5th Time: 10-11am CDT We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi Agenda: 1. Introductions-Mark Ford 2. Hyperledger Sawtooth Transactor Key and Validator Key Permissioning –Andrea Gunderson 3. Open Forum

vbledar (Wed, 04 Oct 2017 19:16:48 GMT):
@amundson No I didn't submit any transactions. I will give it a try and let you know.

t_stephens67 (Wed, 04 Oct 2017 19:38:22 GMT):
Has joined the channel.

t_stephens67 (Wed, 04 Oct 2017 19:38:27 GMT):
Has left the channel.

cyyber (Wed, 04 Oct 2017 22:31:20 GMT):
Has joined the channel.

iuriarte (Thu, 05 Oct 2017 20:13:21 GMT):
Has joined the channel.

Edama (Thu, 05 Oct 2017 20:46:18 GMT):
Has joined the channel.

AlekNS (Fri, 06 Oct 2017 05:06:41 GMT):
Has joined the channel.

CppMaster (Fri, 06 Oct 2017 07:58:48 GMT):
Has joined the channel.

CppMaster (Fri, 06 Oct 2017 08:03:16 GMT):
Hello. How could I run my custom Transaction Handler, like XoTransactionHandler example, on Docker on Windows 10 Pro? I run configuration using command: 'docker-compose -f sawtooth-default.yaml up', which has content: '''# Copyright 2017 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ------------------------------------------------------------------------------ version: "2.1" services: settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator entrypoint: settings-tp -vv tcp://validator:4004 intkey-tp-python: image: hyperledger/sawtooth-tp_intkey_python:latest container_name: sawtooth-intkey-tp-python-default expose: - 4004 depends_on: - validator entrypoint: intkey-tp-python -vv tcp://validator:4004 xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080 client: image: hyperledger/sawtooth-all:latest container_name: sawtooth-client-default expose: - 8080 - 4004 depends_on: - rest-api entrypoint: "bash -c \"\ sawtooth keygen && \ tail -f /dev/null \ \"" '''

JamesKempf (Fri, 06 Oct 2017 22:00:00 GMT):
Hi, I've been trying to get a network of sawtooth validators up and so far have not had any success. With dynamic peering, I started up a validator on one VM and one on another and though the second found the first,I still got a 505 Service Not Available when I tried sawtooth block list. With static peering, I listed the addresses of the validators after the --static flag but got the same message. What am I missing? Thanx.

mikykey (Sun, 08 Oct 2017 09:36:08 GMT):
Hello to Everybody! does anybody know if in Sawtooth there is the concept of channels (i.e. Multi Channel) as in Hyperledger Fabric? I didn't found anythink about it. Thank you very much

Dpkkmr (Mon, 09 Oct 2017 11:40:53 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=qKxL2AduvQom23opE) @mikykey Even I have same Question. If anyone knows the answer please respond.

Dan (Mon, 09 Oct 2017 13:33:44 GMT):
@mikykey @Dpkkmr we have a couple concepts for privacy. Channels are essentially separate blockchain networks so you can do the same with Sawtooth by spinning up separate networks with our launch scripts. Maybe more interesting is Private UTXO. https://sawtooth.hyperledger.org/docs/examples/private_utxo/overview.html. This transaction type lets you create confidential transactions with any other party.

Dan (Mon, 09 Oct 2017 14:06:03 GMT):
Looking at Jira it appears the Parallel Scheduler epic is complete. Is this battlestation fully operational @boydjohnson!?

agunde (Mon, 09 Oct 2017 15:23:06 GMT):
@JamesKempf Did you run `sawtooth admin genesis` before starting up the first validator? Also for `--peering dynamic` make sure you list the other validators in `--seeds`. For static list the validators after `--peers`

Dan (Mon, 09 Oct 2017 16:19:54 GMT):
Build is broken. Ryan is triaging and will hand off to relevant maintainer.

JamesKempf (Mon, 09 Oct 2017 16:43:09 GMT):
@agunde, yes, I ran sawtooth admin genesis for the first validator and listed the first validator after --seeds for dynamic and after --peers for static.

amundson (Mon, 09 Oct 2017 19:25:36 GMT):
@Dan the parallel scheduler has feature parity with the serial scheduler, it's just faster

Dan (Mon, 09 Oct 2017 19:30:27 GMT):
if it's fully operational then we should have a little party. maybe at the Scarif office where we store all our centrally housed data.

amundson (Mon, 09 Oct 2017 20:50:18 GMT):
seems fully operational. seems like we should all get t-shirts.

Dan (Tue, 10 Oct 2017 14:41:57 GMT):
FYI, Looks like some false positive fails on DCO checks in PRs. https://github.com/hyperledger/sawtooth-core/pull/987. @rjones can you see what is amiss?

Dan (Tue, 10 Oct 2017 14:42:27 GMT):
https://github.com/hyperledger/sawtooth-core/pull/988

Dan (Tue, 10 Oct 2017 14:43:58 GMT):
Note this are resubmits from previous PRs that actually were missing sign-offs.

amundson (Tue, 10 Oct 2017 15:52:02 GMT):
if we could see the rest of "Expected "cclauss ", but got "Chris Clauss

Dan (Tue, 10 Oct 2017 16:00:14 GMT):
true for 987, but 988 does not have that same "expected". it just says signoff is missing entirely which is not the case.

rjones (Tue, 10 Oct 2017 16:28:47 GMT):
@dan I suspect the email cclauss@bluewin.ch may not be associated with his GitHub account

rjones (Tue, 10 Oct 2017 16:30:25 GMT):
@dan also notice for instance the formatting here: https://github.com/hyperledger/sawtooth-core/pull/978/commits/29f73a57b33695caff128228d7310229275ce6f9 and here: https://github.com/hyperledger/sawtooth-core/pull/988/commits I think the angle brackets around the email address are also required

rjones (Tue, 10 Oct 2017 16:30:42 GMT):
Did cclauss use `git -s` to sign these commits, or hand-sign it?

Dan (Tue, 10 Oct 2017 17:57:13 GMT):
@rjones unknown

Dan (Tue, 10 Oct 2017 17:57:41 GMT):
It appears to fulfill the requirement though. I can't imagine asking him to reformat his commit again.

Dan (Tue, 10 Oct 2017 18:00:56 GMT):
``` [--- Building sawtooth-dev-java from docker/sawtooth-dev-java ---] Sending build context to Docker daemon 262.7kB Step 1/7 : FROM maven:3-jdk-8 ---> 07473dc7b9d6 Step 2/7 : LABEL "install-type" "mounted" ---> Using cache ---> 934dd9987f0c Step 3/7 : EXPOSE 4004/tcp ---> Using cache ---> ea3676c0bcac Step 4/7 : RUN mkdir -p /project/sawtooth-core/ && mkdir -p /var/log/sawtooth && mkdir -p /var/lib/sawtooth && mkdir -p /etc/sawtooth && mkdir -p /etc/sawtooth/keys ---> Running in 5e6c965dd5c2 container_linux.go:265: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory" oci runtime error: container_linux.go:265: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory" ```

Dan (Tue, 10 Oct 2017 18:01:35 GMT):
build_all failing for me on java. Building on native ubuntu (I gave up on vagrant)

jsmitchell (Tue, 10 Oct 2017 18:02:12 GMT):
hmm

jsmitchell (Tue, 10 Oct 2017 18:03:08 GMT):
you can do `build_all -x java` to skip that if you don't need the java components. @rbuysse ^

rjones (Tue, 10 Oct 2017 18:15:16 GMT):
@dan are you asking me to force merge that commit? I can

rjones (Tue, 10 Oct 2017 18:16:02 GMT):
@Dan I see the CI is still failing though

Dan (Tue, 10 Oct 2017 18:16:55 GMT):
I think I can force merge. I'll look at the substantive review stuff first though.

rjones (Tue, 10 Oct 2017 18:17:10 GMT):
ok

boydjohnson (Tue, 10 Oct 2017 18:17:36 GMT):
@Dan I wrote the maven xml file for Java assuming it would be in vagrant or docker. It has to be modified to find the protos directory.

Dan (Tue, 10 Oct 2017 18:18:15 GMT):
thanks @boydjohnson

Dan (Tue, 10 Oct 2017 18:19:13 GMT):
while we're on build topics.. seems I have to `sudo` to run builds because of the docker stuff. Is that expected behavior?

jsmitchell (Tue, 10 Oct 2017 18:19:35 GMT):
you can add yourself to the docker group

jsmitchell (Tue, 10 Oct 2017 18:19:44 GMT):
then you won't have to do that

Dan (Tue, 10 Oct 2017 18:19:52 GMT):
kewl. thx.

jsmitchell (Tue, 10 Oct 2017 18:20:16 GMT):
fun fact, if you can start containers on a machine, it's like having root.

jsmitchell (Tue, 10 Oct 2017 18:21:01 GMT):
https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface

Dan (Tue, 10 Oct 2017 18:22:53 GMT):
:O

kelly_ (Tue, 10 Oct 2017 22:33:39 GMT):
@JamesKempf did you get everything working?

rbuysse (Wed, 11 Oct 2017 00:49:09 GMT):
just an FYI to everyone: This afternoon we incremented versions on the github repo to 0.9. we also created a 0-8 branch (https://github.com/hyperledger/sawtooth-core/tree/0-8). 0-8 shouldn't be changing much going forward but any possible stability fixes will be cherry-picked over. You should run git fetch --tags and rebase on master to avoid any possible build issues. Let me know if you have any questions!

mredmundto (Wed, 11 Oct 2017 02:57:17 GMT):
Has joined the channel.

bamboo (Wed, 11 Oct 2017 11:51:51 GMT):
Has joined the channel.

parisa (Wed, 11 Oct 2017 17:19:20 GMT):
Has joined the channel.

JamesKempf (Wed, 11 Oct 2017 20:23:47 GMT):
@kelly_ no, not yet.

boydjohnson (Wed, 11 Oct 2017 21:18:55 GMT):
@JamesKempf If you have a rest api pointed at each validator, do either have blocks?

JamesKempf (Wed, 11 Oct 2017 22:34:14 GMT):
@boydjohnson Yes, the root validator has blocks. I put them in through seth.

JamesKempf (Wed, 11 Oct 2017 22:34:50 GMT):
And if I do sawtooth block list on the same VM with the running root validator, I get a list of blocks.

alexandra_g (Thu, 12 Oct 2017 05:25:39 GMT):
quick question - what are the different types of Sawtooth nodes? Or is it correct to say that Validators are the only node type in a Sawtooth network? Thanks in advance!!

Dan (Thu, 12 Oct 2017 14:06:55 GMT):
As far as P2P nodes, yeah all Sawtooth validator nodes are the same. Transaction submission is from any kind of client and likewise pulling data from a Sawtooth ledger can happen by a variety of client apps.

zac (Thu, 12 Oct 2017 14:36:00 GMT):

Sawtooth Network.png

zac (Thu, 12 Oct 2017 14:36:07 GMT):
Like this

Dan (Thu, 12 Oct 2017 14:46:14 GMT):
oooh I like that diagram.

amundson (Thu, 12 Oct 2017 14:53:55 GMT):
yeah, that's a good diagram

zac (Thu, 12 Oct 2017 15:00:50 GMT):
:tada:

Dan (Thu, 12 Oct 2017 15:10:08 GMT):
I wonder what it would look like with actors for transacting, querying, and relational DBs subscribed with delta subs or events?

zac (Thu, 12 Oct 2017 15:12:46 GMT):
different

alexandra_g (Thu, 12 Oct 2017 17:06:48 GMT):
Thanks @Dan! Follow up clarification - within each sawtooth validator node there are 3 things: blockchain, state, transaction processor? Or am I off base on this?

alexandra_g (Thu, 12 Oct 2017 17:06:48 GMT):
Thanks @Dan! Follow up clarification - within each sawtooth validator node there are 3 things: blockchain, state, transaction processor. Or am I off base on this?

Dan (Thu, 12 Oct 2017 17:49:43 GMT):
@alexandra_g I've been meaning to make a nice picture of that too. A validator host has at least 3 things running 1. The main validator process 2. REST service listening for requests (could be txn posts or state queries) 3. One or more Transaction Processors 3.a. Settings Transaction Processor - manages changes to global configuration 3.b. Transaction Processor - manages changes to state for your business logic

zac (Thu, 12 Oct 2017 17:52:36 GMT):
Is the LMDB with state a separate process?

zac (Thu, 12 Oct 2017 17:53:05 GMT):
Also, is the "blockchain" (presumably blocks, txns, etc), stored in the same DB?

Dan (Thu, 12 Oct 2017 18:06:16 GMT):

High level deployment diagram

Dan (Thu, 12 Oct 2017 18:06:20 GMT):
@alexandra_g this is not an entirely wrong diagram :)

Dan (Thu, 12 Oct 2017 18:10:14 GMT):
Here's a similar diagram buried in the docs, but it doesn't make clear the host boundary vs. process boundary. (and yes these processes could be hosted on different machines, but in practice they are launched as I show above with REST, Validator, and Transaction processors on same host. http://intelledger.github.io/0.8/app_developers_guide/docker.html#overview-of-sawtooth-components

amundson (Thu, 12 Oct 2017 18:10:42 GMT):
@dan the inner part of that validator box needs a bit of refinement - "Transaction Handling" being not entirely accurate

amundson (Thu, 12 Oct 2017 18:10:42 GMT):
@Dan the inner part of that validator box needs a bit of refinement - "Transaction Handling" being not entirely accurate

boydjohnson (Thu, 12 Oct 2017 18:10:50 GMT):
@zac to your question LMDB is embedded so part of the validator process.

Dan (Thu, 12 Oct 2017 18:13:00 GMT):
I thought about writing TEP but ;)

Dan (Thu, 12 Oct 2017 18:14:31 GMT):
I could drop journal and transaction handling and just have consensus and state management. Goal to roughly illustrate what the validator process does vs. what transaction processors and rest api do.

Dan (Thu, 12 Oct 2017 18:14:43 GMT):
I'm not up to speed with events so I'm not sure where that plugs on either.

amundson (Thu, 12 Oct 2017 18:16:00 GMT):
yeah, maybe just remove the inner lines and turn the boxes into capabilities instead of components

amundson (Thu, 12 Oct 2017 18:16:47 GMT):
Block Publishing, Chain Management, Transaction Execution, State Management...

amundson (Thu, 12 Oct 2017 18:17:31 GMT):
we don't use "Chain Management" in any other context but however we describe the capability the chain controller is doing

amundson (Thu, 12 Oct 2017 18:19:10 GMT):
we could probably create more diagrams around those capabilities at what level of the architecture too

zac (Thu, 12 Oct 2017 18:21:35 GMT):
@boydjohnson Is state information and blockchain information in the same DB?

boydjohnson (Thu, 12 Oct 2017 18:21:50 GMT):
No separate.

zac (Thu, 12 Oct 2017 18:22:11 GMT):
Still LMDB, but not a merkle tree presumably

boydjohnson (Thu, 12 Oct 2017 18:22:26 GMT):
Yeah

zac (Thu, 12 Oct 2017 18:22:33 GMT):
cool

Dan (Thu, 12 Oct 2017 18:23:19 GMT):

Clipboard - October 12, 2017 1:23 PM

Dan (Thu, 12 Oct 2017 18:23:21 GMT):
Lines removed. I didn't adopt 'execution' yet as the execution is more in the TPs.

Dan (Thu, 12 Oct 2017 18:24:06 GMT):
Left a line for consensus to talk about pluggable consensus and how it relates to block management. (Not further parsing out difference between block publishing and chain head management)

amundson (Thu, 12 Oct 2017 18:34:51 GMT):
you have a line between block managent and consensus; consensus and state should be turned into blocks; "Handling" should be renamed to "Execution"

amundson (Thu, 12 Oct 2017 18:35:17 GMT):
using "Execution" there is misleading actually

amundson (Thu, 12 Oct 2017 18:35:21 GMT):
maybe use Scheduling

amundson (Thu, 12 Oct 2017 18:36:40 GMT):
(of course, @Dan, I didn't read any of your explanation where you already responded to my commentary a line above where I said it)

amundson (Thu, 12 Oct 2017 18:36:50 GMT):
:)

Dan (Thu, 12 Oct 2017 18:45:36 GMT):
It's an adaptation I've developed. Everytime I'm going to write something a little amundson sounding voice whispers complaints in my ear. ;D

amundson (Thu, 12 Oct 2017 18:46:01 GMT):
yeah, that is probably too true

amundson (Thu, 12 Oct 2017 18:46:22 GMT):
anyway, Scheduling might be better than Transaction Handling

Dan (Thu, 12 Oct 2017 18:46:27 GMT):
it's like an intellectual conscience

amundson (Thu, 12 Oct 2017 18:47:20 GMT):
with devil horns or a halo?

Dan (Thu, 12 Oct 2017 18:53:41 GMT):
yes

alexandra_g (Thu, 12 Oct 2017 19:39:03 GMT):
@zac - Thanks for sharing the sawtooth network diagram above, just wanted to ask if you are ok with us using a version of it for our course Intro to HL course (LFS171x). Let me know either way, Thanks!

alexandra_g (Thu, 12 Oct 2017 19:40:56 GMT):
Thanks @Dan - your diagram gives some clarity. From your perspective what's the difference between a "Validator Host" and "Validator node"? Just want to make sure I'm clear on terminology.

alexandra_g (Thu, 12 Oct 2017 19:41:51 GMT):
In that same vein, can a single organization run multiple hosts (or nodes) as they can in Fabric? Thank you!

parisa (Thu, 12 Oct 2017 20:15:48 GMT):
I'm trying to try the XO game transaction family: I have a validator, XO transaction family processor, and the REST API running. I have created the players but can't start the game. What does this error message mean? root@561b51137b52:/# xo create game1 Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))

parisa (Thu, 12 Oct 2017 20:16:39 GMT):
I'm trying to try the XO game transaction family: I have a validator, XO transaction family processor, and the REST API running. I have created the players but can't start the game. What does this error message mean? root@561b51137b52:/# xo create game1 Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))

drozd (Thu, 12 Oct 2017 20:27:55 GMT):
I've only seen that when running the XO TP without a REST API

drozd (Thu, 12 Oct 2017 20:28:17 GMT):
what is the REST API's address?

parisa (Thu, 12 Oct 2017 20:53:21 GMT):
@drozd http://rest-api:8080.. I'm using default docker compose file on Sawtooth's github page which should create a rest API for me.

drozd (Thu, 12 Oct 2017 21:01:07 GMT):
can you post a log of what happened when you started everything?

parisa (Thu, 12 Oct 2017 21:17:22 GMT):
@drozd ```$ docker-compose -f sawtooth-default.yaml up Creating network "desktop_default" with the default driver Creating sawtooth-validator-default ... Creating sawtooth-validator-default ... done Creating sawtooth-rest-api-default ... Creating sawtooth-intkey-tp-python-default ... Creating sawtooth-settings-tp-default ... Creating sawtooth-xo-tp-python-default ... Creating sawtooth-rest-api-default Creating sawtooth-intkey-tp-python-default Creating sawtooth-settings-tp-default Creating sawtooth-rest-api-default ... done Creating sawtooth-client-default ... Creating sawtooth-client-default ... done Attaching to sawtooth-validator-default, sawtooth-rest-api-default, sawtooth-settings-tp-default, sawtooth-intkey-tp-python-default, sawtooth-xo-tp-python-default, sawtooth-client-default sawtooth-validator-default | writing file: /etc/sawtooth/keys/validator.priv sawtooth-validator-default | writing file: /etc/sawtooth/keys/validator.pub sawtooth-validator-default | creating key directory: /root/.sawtooth/keys sawtooth-validator-default | writing file: /root/.sawtooth/keys/my_key.priv sawtooth-validator-default | writing file: /root/.sawtooth/keys/my_key.pub sawtooth-validator-default | Generated config-genesis.batch sawtooth-settings-tp-default | [2017-10-12 19:49:18 DEBUG selector_events] Using selector: ZMQSelector sawtooth-validator-default | Processing config-genesis.batch... sawtooth-validator-default | Generating /var/lib/sawtooth/genesis.batch sawtooth-client-default | creating key directory: /root/.sawtooth/keys sawtooth-client-default | writing file: /root/.sawtooth/keys/root.priv sawtooth-client-default | writing file: /root/.sawtooth/keys/root.pub sawtooth-validator-default | [2017-10-12 19:49:20.005 INFO path] Skipping path loading from non-existent config file: /etc/sawtooth/path.toml sawtooth-validator-default | [2017-10-12 19:49:20.006 INFO validator] Skipping validator config loading from non-existent config file: /etc/sawtooth/validator.toml sawtooth-validator-default | [2017-10-12 19:49:20.007 INFO keys] Loading signing key: /etc/sawtooth/keys/validator.priv sawtooth-validator-default | [2017-10-12 19:49:20.011 INFO cli] config [path]: config_dir = "/etc/sawtooth" sawtooth-validator-default | [2017-10-12 19:49:20.012 INFO cli] config [path]: key_dir = "/etc/sawtooth/keys" sawtooth-validator-default | [2017-10-12 19:49:20.012 INFO cli] config [path]: data_dir = "/var/lib/sawtooth" sawtooth-validator-default | [2017-10-12 19:49:20.013 INFO cli] config [path]: log_dir = "/var/log/sawtooth" sawtooth-validator-default | [2017-10-12 19:49:20.013 INFO cli] config [path]: policy_dir = "/etc/sawtooth/policy" sawtooth-validator-default | [2017-10-12 19:49:20.014 WARNING cli] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted. sawtooth-validator-default | [2017-10-12 19:49:20.014 DEBUG core] database file is /var/lib/sawtooth/merkle-00.lmdb ```

drozd (Thu, 12 Oct 2017 21:24:47 GMT):
where are you running `xo create game` from?

parisa (Thu, 12 Oct 2017 21:25:49 GMT):
on default client

drozd (Thu, 12 Oct 2017 21:34:31 GMT):
have you tried running it from outside the container?

rbuysse (Thu, 12 Oct 2017 21:57:27 GMT):
fyi: we just published updated docs, debs, and dockerfiles for version 0.8.9.

rbuysse (Thu, 12 Oct 2017 21:57:27 GMT):
fyi: we just published updated docs, debs, and docker images for version 0.8.9.

zac (Thu, 12 Oct 2017 21:58:59 GMT):
@parisa @drozd Do you have to to tell `xo` that the REST API is at `http://rest-api:8080`, not `http://localhost:8080`?

zac (Thu, 12 Oct 2017 21:59:35 GMT):
(if you did it from outside the container, the default of localhost should work)

zac (Thu, 12 Oct 2017 22:00:16 GMT):
@alexandra_g Yeah, feel free to use the diagram

zac (Thu, 12 Oct 2017 22:00:45 GMT):
Also, you have an Intro to Hyperledger course?

zac (Thu, 12 Oct 2017 22:02:23 GMT):
As far as host/node goes, I don't think either of those terms are used in an official capacity. Node is typically used when discussing peer to peer networks, and host is typically used in a server/client relationship.

zac (Thu, 12 Oct 2017 22:02:47 GMT):
So a validator is a node in a P2P network of other validators.

zac (Thu, 12 Oct 2017 22:03:21 GMT):
Through a connected REST API, it is the host to HTTP clients.

zac (Thu, 12 Oct 2017 22:03:21 GMT):
Through a connected REST API, a validator is the host to HTTP clients.

drozd (Thu, 12 Oct 2017 22:04:52 GMT):
@zac I don't think that's possible right now

drozd (Thu, 12 Oct 2017 22:05:18 GMT):
it's in the backlog though: https://jira.hyperledger.org/browse/STL-217

zac (Thu, 12 Oct 2017 22:05:46 GMT):
O.o

alexandra_g (Thu, 12 Oct 2017 22:06:57 GMT):
Thanks @zac - this is the course I'm referring to: https://www.edx.org/course/blockchain-business-introduction-linuxfoundationx-lfs171x

alexandra_g (Thu, 12 Oct 2017 22:08:03 GMT):
In terms of host/node, I want to be really specific with the terms we use in the course. In Dan's diagram above he uses Validator host and within the host is a validator (which he previously referred to as Sawtooth validator node). If I can get some clarity on the official terminology that would be wonderful!

zac (Thu, 12 Oct 2017 22:09:26 GMT):
Well, @Dan should correct me if I am wrong, but I don't think "Validator Host" is an official term

zac (Thu, 12 Oct 2017 22:10:18 GMT):
I think, in this diagram it is an attempt to put a label on the ecosystem that is serving as host to HTTP clients: Validator, REST API, and any Transaction Processors

Dan (Thu, 12 Oct 2017 22:12:46 GMT):
That's right Zac. I was using host to mean a computer. You can think of it synonymous with node. I wanted to draw a distinction between one of our processes and the computer that is running it. And @alexandra_g yes even more than fabric :) you can run multiple nodes. One of Sawtooth's main features is that we support large networks.

zac (Thu, 12 Oct 2017 22:13:09 GMT):
ah, that makes sense

zac (Thu, 12 Oct 2017 22:13:17 GMT):
I was a little confused myself

zac (Thu, 12 Oct 2017 22:13:24 GMT):
Thank you for stopping my bullshitting

zac (Thu, 12 Oct 2017 22:13:47 GMT):
So everything in the black outline is one the machine

zac (Thu, 12 Oct 2017 22:13:47 GMT):
So everything in the black outline is on one the machine

zac (Thu, 12 Oct 2017 22:13:47 GMT):
So everything in the black outline is on one machine

zac (Thu, 12 Oct 2017 22:14:38 GMT):
(although you could spin up a bunch of "Validator Hosts" on the same machine)

zac (Thu, 12 Oct 2017 22:15:19 GMT):
(not that you would except for testing purposes)

drozd (Thu, 12 Oct 2017 22:18:11 GMT):
@parisa @zac it turns out it is possible to point xo at a different address, but it isn't intuitive -- you have to use `xo init --url`

drozd (Thu, 12 Oct 2017 22:18:18 GMT):
``` ubuntu@ubuntu-xenial:~/.sawtooth$ docker exec -it edd8abbfe003 /bin/bash ]0;root@edd8abbfe003: /root@edd8abbfe003:/# xo init --url rest-api:8080 ]0;root@edd8abbfe003: /root@edd8abbfe003:/# xo init --url rest-api:8080 set username: root set url: rest-api:8080 ]0;root@edd8abbfe003: /root@edd8abbfe003:/# xo list xo list sawtooth-rest-api-default | [2017-10-12 22:16:00.627 DEBUG route_handlers] Sending CLIENT_STATE_LIST_REQUEST request to validator sawtooth-validator-default | [2017-10-12 22:16:00.628 DEBUG interconnect] ServerThread receiving CLIENT_STATE_LIST_REQUEST message: 81 bytes sawtooth-validator-default | [2017-10-12 22:16:00.635 DEBUG interconnect] ServerThread sending CLIENT_STATE_LIST_RESPONSE to b'1c89f7438bcb45d8' sawtooth-rest-api-default | [2017-10-12 22:16:00.637 DEBUG route_handlers] Received CLIENT_STATE_LIST_RESPONSE response from validator with status OK sawtooth-rest-api-default | [2017-10-12 22:16:00.639 INFO helpers] GET /state?address=5b7349 HTTP/1.1: 200 status, 652 size, in 0.011955 s GAME PLAYER 1 PLAYER 2 BOARD STATE game 02e187 X-------- P2-NEXT ```

zac (Thu, 12 Oct 2017 22:20:51 GMT):
Anyway, the important take away, is that the validator is the official thing. Host/node is just the context you are talking about it in. It would be a little weird, but you might refer to me as a "male engineer" when you are discussing my work, and a "male gamer" when you are discussing my free time. I am not changing, just the conversation is. Same with "validator host" and "validator node".

zac (Thu, 12 Oct 2017 22:21:09 GMT):
Also, the class seems awesome. Hope you have a huge turn out.

zac (Thu, 12 Oct 2017 22:21:44 GMT):
@drozd Yes, I was looking for that. I knew there was something.

zac (Thu, 12 Oct 2017 22:22:43 GMT):
That JIRA task is to bring its API in line with the other CLIs. It would be very weird if you could _only_ use it with a REST API at localhost:8080.

parisa (Thu, 12 Oct 2017 22:44:29 GMT):
@drozd I used xo init --url [address of rest api] and it worked. Thank you!

drozd (Thu, 12 Oct 2017 22:45:59 GMT):
@parisa coincidentally, this morning I opened a PR to improve xo error messages: https://github.com/hyperledger/sawtooth-core/pull/998/commits/735dd7e7f3878b4362440be8ea6560f37ae5097f

drozd (Thu, 12 Oct 2017 22:46:06 GMT):
hopefully that will help in the future

alexandra_g (Thu, 12 Oct 2017 22:46:27 GMT):
Ok, I'm starting to get a better picture of this. @Dan @zac -- So in that diagram (which I’m planning to adapt for the course if you are ok with that Dan), a "validator host" is just a computer (which we can say is a node) and within this computer/node there can be 1 or many validators which interact with 1 or many transaction processors.

zac (Thu, 12 Oct 2017 22:49:28 GMT):
Not quite. First, I don't think there is much of a real world reason to have more than one validator on the same computer. So typically, you would have one computer, running one validator, and on REST API, and a few Transaction Processors.

zac (Thu, 12 Oct 2017 22:49:28 GMT):
Not quite. First, I don't think there is much of a real world reason to have more than one validator on the same computer. So typically, you would have one computer, running one validator, and one REST API, and a few Transaction Processors.

zac (Thu, 12 Oct 2017 22:50:15 GMT):
However, if you _did_ have multiple validators running on the same computer, _each validator_ would be a node on the peer-to-peer validator network.

alexandra_g (Thu, 12 Oct 2017 22:59:22 GMT):
so when @Dan mentioned that an organization can run multiple sawtooth nodes this translates to an organization having multiple computers (or sawtooth nodes) each containing a validator, a REST API and few transaction processors. And to further clarify, a validator is not really a node in itself, it's a component of a sawtooth node.

zac (Thu, 12 Oct 2017 23:00:48 GMT):
I take node (in this context) to mean "thing that talks to a peer-to-peer network"

zac (Thu, 12 Oct 2017 23:01:35 GMT):
By that definition, the validator is the node. It is what contains the components that talk to other nodes (also validators).

zac (Thu, 12 Oct 2017 23:02:01 GMT):
The Transaction Processors and REST API have no role in talking to the peer-to-peer network.

Dan (Fri, 13 Oct 2017 14:02:01 GMT):
A validator is a node is a host. It happens that if you look inside that you will see we have a process called 'validator' with some other helper processes (the rest service and some transaction processors). Companies can run however many validators they like.

JamesKempf (Fri, 13 Oct 2017 14:43:25 GMT):
alexandra_g, will the class be available online and for general signup?

zac (Fri, 13 Oct 2017 14:49:12 GMT):
Yeah, she posted the link, looks like it starts 10/24, and the tuition is free.

zac (Fri, 13 Oct 2017 14:49:57 GMT):
Here it is: https://www.edx.org/course/blockchain-business-introduction-linuxfoundationx-lfs171x

Dan (Fri, 13 Oct 2017 15:19:35 GMT):
I assume all Maintainers are on the email list. But just in case: https://lists.hyperledger.org/mailman/listinfo/hyperledger-stl

alexandra_g (Fri, 13 Oct 2017 15:54:17 GMT):
@Dan thanks for clarifying!

alexandra_g (Fri, 13 Oct 2017 15:56:26 GMT):
@JamesKempf it's a MOOC on edx.org. Online and free to audit.

alexandra_g (Sat, 14 Oct 2017 23:33:09 GMT):
Quick question: is the default database for HL Sawtooth LevelDB? I know this is true for Fabric but is it the same for Sawtooth? Thanks!

Dan (Sun, 15 Oct 2017 01:19:13 GMT):
Nope. Lightning. Its way faster ;)

Dan (Sun, 15 Oct 2017 01:19:53 GMT):
https://en.m.wikipedia.org/wiki/Lightning_Memory-Mapped_Database?wprov=sfla1

vbledar (Sun, 15 Oct 2017 17:25:06 GMT):
Hi everyone. I'm trying to submit a batch which contains only one trasnaction. I've connected my own transaction family into the validator. Now I'm submitting the transaction through the Rest API, but I'm receiving the following on the validator: "received a message of type DEFAULT from 9b15f33c0eb6b0c469253918dea48689969d7d7abcb9370d53ffa088541c83b145012f278c918108771762b877fca6651d0c7a855cbb20e2be38306ef4d5dc0c but have no handler for that type"

vbledar (Sun, 15 Oct 2017 17:25:17 GMT):
Can anyone guide me on how to investigate this further?

vbledar (Sun, 15 Oct 2017 18:15:17 GMT):
I found my issue. I was sending the batch to the validator and not the RestAPI. Now I'm sending it to the Rest API and everything seems to be normal except the fact that my match remains PENDING.

kelly_ (Mon, 16 Oct 2017 00:33:45 GMT):
@vbledar did you register you transaction processor with the validator

Dan (Mon, 16 Oct 2017 14:31:23 GMT):
@vbledar by register, Kelly means did the processes handshake. Depending on how you are launching you're stuff you should see log output like this from the validator and from your transaction processor:

Dan (Mon, 16 Oct 2017 14:31:37 GMT):
```sawtooth-validator-local | [2017-10-14 22:27:44.372 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 98 bytes sawtooth-validator-local | [2017-10-14 22:27:44.372 INFO processor_handlers] registered transaction processor: connection_id=9fb3b1fe9f3704c248bb0e7fafeb5af6bea77d341ffd51142029cdcebf0b9f982f8a9e24fc622cd4f0f3fc8e2de8ba539c41d0617b1b93e559e047f292d5f983, family=xo, version=1.0, encoding=csv-utf8, namespaces=['5b7349'] sawtooth-validator-local | [2017-10-14 22:27:44.373 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'c91ecbbee185480b' ``` sawtooth-xo-tp-python-local | [2017-10-14 22:27:44.373 INFO core] register attempt: OK

Dan (Mon, 16 Oct 2017 14:31:37 GMT):
```sawtooth-validator-local | [2017-10-14 22:27:44.372 DEBUG interconnect] ServerThread receiving TP_REGISTER_REQUEST message: 98 bytes sawtooth-validator-local | [2017-10-14 22:27:44.372 INFO processor_handlers] registered transaction processor: connection_id=9fb3b1fe9f3704c248bb0e7fafeb5af6bea77d341ffd51142029cdcebf0b9f982f8a9e24fc622cd4f0f3fc8e2de8ba539c41d0617b1b93e559e047f292d5f983, family=xo, version=1.0, encoding=csv-utf8, namespaces=['5b7349'] sawtooth-validator-local | [2017-10-14 22:27:44.373 DEBUG interconnect] ServerThread sending TP_REGISTER_RESPONSE to b'c91ecbbee185480b' ``` ```sawtooth-xo-tp-python-local | [2017-10-14 22:27:44.373 INFO core] register attempt: OK ```

Dan (Mon, 16 Oct 2017 15:40:43 GMT):
If I'm running the validator and friends on dockers, but want to spin up a native process for my transaction processor, is there some trick for port mapping? i.e. I'm using sawtooth-local.yaml to fire off most of the processes which are talking over a docker 'network'. I want to fire up my TP on the host os and have it reach port 4004 of the docker managed validator process.

boydjohnson (Mon, 16 Oct 2017 15:49:25 GMT):
you could `docker inspect` the validator container and see if it says the actual IP address of that container.

Dan (Mon, 16 Oct 2017 15:58:47 GMT):
thanks @boydjohnson that told me what I needed

GhadiShayban (Mon, 16 Oct 2017 17:54:59 GMT):
I have a question about canonical encodings for the Sawtooth state tree. As it is today, the validator uses HASH(ValueByteArray) in the state tree to form the merkle tree. I wonder if it has ever been considered to make sawtooth's hashing polymorphic -- i.e. allow a user supplied hash function, that way the user can calculate an *information-based* hash, irrespective of encoding. right now the leaf of the state tree appears to be [K -> V] where V == hash(valueblob) has it been explored to make the leaf representation [K -> hashvalue, blobref] (This would mean blobref is _not used_ for the merkle tree)

GhadiShayban (Mon, 16 Oct 2017 17:54:59 GMT):
I have a question about canonical encodings for the Sawtooth state tree. As it is today, the validator uses HASH(ValueByteArray) in the state tree to form the merkle tree. I wonder if it has ever been considered to make sawtooth's hashing polymorphic -- i.e. allow a user supplied hash function, that way the user can calculate an *information-based* hash, irrespective of encoding. right now the leaf of the state tree appears to be [K -> V] where V == hash(valueblob) has it been explored to make the leaf representation [K -> hashvalue, blobref] ?? (This would mean blobref is _not used_ for the merkle tree)

GhadiShayban (Mon, 16 Oct 2017 17:54:59 GMT):
I have a question about canonical encodings for the Sawtooth state tree. As it is today, the validator uses HASH(ValueByteArray) in the state tree to form the merkle tree. I wonder if it has ever been considered to make sawtooth's hashing polymorphic -- i.e. allow a user supplied hash function, that way the user can calculate an *information-based* hash, irrespective of encoding. right now the leaf of the state tree appears to be [K -> V] where V == hash(valueblob) has it been explored to make the leaf representation [K -> hashvalue, blobref] ?? (This would mean blobref is _not used_ for the merkle tree, but hashvalue is deterministically derived from the blob)

GhadiShayban (Mon, 16 Oct 2017 17:57:47 GMT):
AFAICT no encoding system besides CBOR takes into account canonical encoding, and canonical encodings have nontrivial costs -- you have to give up things like value caching & entropy coding, etc.

GhadiShayban (Mon, 16 Oct 2017 17:58:14 GMT):
I don't expect a quick answer, but it's worth pondering.

parisa (Mon, 16 Oct 2017 18:17:36 GMT):
I get this error when starting a validator '''ERROR cli] Cannot have a genesis_batch_file and an existing chain''' 66423363

parisa (Mon, 16 Oct 2017 18:43:23 GMT):
When trying to start a validator I get this error "Cannot have a genesis_batch_file and an existing chain" . what does this mean?

vbledar (Mon, 16 Oct 2017 18:43:49 GMT):
@kelly_ & @Dan Thank you both. Everything is running smoothly. Batch is committed now in the chain.

vbledar (Mon, 16 Oct 2017 18:45:53 GMT):
Is it possible to change the zmq from 127.0.0.1:4004 to another interface? Since I'm running my setup on an Ubuntu inside VirtualBox I would like to have it under 10.0.2.15:4004.

kelly_ (Mon, 16 Oct 2017 18:49:39 GMT):
@parisa you may have existing files from a previous blockchain

parisa (Mon, 16 Oct 2017 19:03:53 GMT):
@kelly_ how do I start a validator for the existing blockchain (I used `sudo -u sawtooth sawtooth-validator`)? or how do I remove the files from the previous blockchain

vbledar (Mon, 16 Oct 2017 19:07:35 GMT):
@parisa I'm using the following: sudo -u sawtooth sawtooth-validator -B 10.0.2.15:4004 -vv

parisa (Mon, 16 Oct 2017 19:30:14 GMT):
@vbledar what is 10.0.2.15 address here?

parisa (Mon, 16 Oct 2017 19:30:15 GMT):
* I actually ended up removing all of the existing files for now and then start the validator node .. but I'm still trying to understand what caused that error and how to fix it next time

parisa (Mon, 16 Oct 2017 19:31:28 GMT):
66423363

vbledar (Mon, 16 Oct 2017 19:35:11 GMT):
In my case I'm running inside VirtualBox. In order to make my validator visible to my host OS i need to bind it to the virtual network interface. In any case my example is wrong. The "-B 10.0.2.15:4004" should be "--bind network:tcp://10.0.2.15:4004"

vbledar (Mon, 16 Oct 2017 19:36:19 GMT):
In any case, the command you gave should have worked on the existing chain! That's how it works for me.

Dan (Mon, 16 Oct 2017 21:16:37 GMT):
@parisa when the validator starts up it looks in it's data directory. if it sees a file called `genesis.batch` that's a sign that you want to create a new chain. If there's already data from an old chain though we don't want to destroy that automatically. Hence the warning. Is it possible you ran the command to create the genesis batch a second time? if not then maybe the batch wasn't removed by the validator the first time.

Dan (Mon, 16 Oct 2017 21:16:37 GMT):
@parisa when the validator starts up it looks in it's data directory. if it sees a file called `genesis.batch` that's a sign that you want to create a new chain. If there's already data from an old chain though we don't want to destroy that automatically. Hence the warning. Is it possible you ran the command to create the genesis batch a second time? if not then maybe the batch wasn't removed the first time.

parisa (Tue, 17 Oct 2017 00:20:19 GMT):
@Dan I'm not exactly sure but It's possible that I ran '''genesis.batch''' two times and had two blockchains, and as a result the '''sawtooth-validator''' didn't know which of them is the active one. This time what I did was deleting the old blockchain files and I didn't have any problem running validator on the new blockchain... but what @vbledar mentioned is helpful if I wanted to keep both blockchains on purpose. Thanks for the answers!

parisa (Tue, 17 Oct 2017 00:25:41 GMT):
@Dan I'm not exactly sure but it's possible that I ran 'genesis.batch' two times and this had created two blockchains. I removed the files from the first blockchain and I didn't face any further problem running a validator on the remaining blockchain. what @vbledar would be useful if I wanted to keep both blockchains. Thanks for the answers!

pschwarz (Tue, 17 Oct 2017 14:09:57 GMT):
@parisa in that case, you would have two completely separate chains. The two nodes cannot peer, since they have separate genesis blocks. When starting up peer nodes, you should not run the genesis steps. If that is not clear in the documentation we should remedy that :thinking:

brianz (Tue, 17 Oct 2017 19:49:21 GMT):
Has joined the channel.

vbledar (Tue, 17 Oct 2017 20:13:36 GMT):
Does anyone know why the sawtooth-sdk in javascript is using zmq for? I would not like to go through the code if someone already knows the answer.

kelly_ (Tue, 17 Oct 2017 20:50:16 GMT):
zmq is how the transaction processor connects to the core validator

vbledar (Tue, 17 Oct 2017 20:59:26 GMT):
Would it make sense then to create a sawtooth-sdk-client module in node which contains only the client used objects (signer and encoders)? I was trying to make use of the SDK in a single app page using webpack and I was facing issues with ZMQ due to some binary file that ZMQ is introducing when loaded in the application.

pschwarz (Tue, 17 Oct 2017 21:27:19 GMT):
There are a couple of gotchas with the sdk and webpack, but it's pretty easy to work around

pschwarz (Tue, 17 Oct 2017 21:29:10 GMT):
If you simply require the client items directly, (like so): ``` const { signer, TransactionEncoder, BatchEncoder } = require('sawtooth-sdk/client') ``` webpack doesn't see the ZMQ dependencies at all

pschwarz (Tue, 17 Oct 2017 21:31:04 GMT):
Alternatively, you can use webpack to ignore it, via a `resolve` entry: ``` resolve: { alias: { zeromq$: path.resolve(__dirname, './/mock_zeromq.js') } } ``` where `mock_zeromq.js` is just an empty file.

vbledar (Tue, 17 Oct 2017 21:47:07 GMT):
@pschwarz Thanks, it worked like a charm.

pschwarz (Tue, 17 Oct 2017 22:07:40 GMT):
:thumbsup:

mfford (Wed, 18 Oct 2017 13:20:52 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, October 19th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, October 19th Time: 10-11am CDT We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi Agenda: 1. Introductions-Mark Ford 2. Trackable Commodities with Sawtooth Supply Chain –Zac Delventhal 3. Using Open SSL Keys with Seth -Adam Ludvik

mredmundto (Wed, 18 Oct 2017 16:01:48 GMT):
Hello team, this is Edmund and I joined the sprint planning on Monday. I am looking at the first task on the help wanted list (STL-344) which is to add a xo.toml config file. The first thing I am doing is to get the xo game running. I can xo init --username jill but when I input xo create game1, I am getting. `Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused’,))` After some googling I found this same issue, just wonder if you could kindly point me to the right direction. Many thanks in advance. https://jira.hyperledger.org/browse/STL-215?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

boydjohnson (Wed, 18 Oct 2017 16:16:54 GMT):
Hi @mredmundto, are you doing this from within a docker container?

mredmundto (Wed, 18 Oct 2017 16:29:42 GMT):
@boydjohnson yes

boydjohnson (Wed, 18 Oct 2017 16:31:27 GMT):
To get xo to work, then, `xo init --url http://rest-api:8080` if rest-api is the name of the rest api container. My understanding is that folks are not happy with the xo cli and there will be changes.

mbd 1 (Wed, 18 Oct 2017 18:13:48 GMT):
Has joined the channel.

Dan (Wed, 18 Oct 2017 20:50:32 GMT):
is the intended validator behavior for a transaction process response of 2="internal error" to just re-request processing of that same transaction?

boydjohnson (Wed, 18 Oct 2017 20:53:21 GMT):
That is the correct behavior. People have questioned exactly when that is the correct error. I would expect more intermittent error would describe internal error better.

Dan (Wed, 18 Oct 2017 20:53:56 GMT):
Thanks. If something is borked it is an infinitely borking loop.

boydjohnson (Wed, 18 Oct 2017 20:54:51 GMT):
infinitely is a long time. It might not be infinite.

Dan (Wed, 18 Oct 2017 20:55:04 GMT):
mine is :D

jcbombardelli (Wed, 18 Oct 2017 21:28:43 GMT):
Has joined the channel.

podfrogs (Wed, 18 Oct 2017 23:32:22 GMT):
Can the Transaction Processor be running in another server?

benjaminverhaegen (Thu, 19 Oct 2017 09:18:35 GMT):
Has joined the channel.

benjaminverhaegen (Thu, 19 Oct 2017 09:20:07 GMT):
Hello, i have a little problem trying out the "Using sawtooth on Ubuntu 16.04" tutorial when executing the command "sawtooth block list" i get the following error: "Error: (503): Service unavailable"

benjaminverhaegen (Thu, 19 Oct 2017 09:20:27 GMT):
My validator says the following: "Unable to get chain head from block store"

benjaminverhaegen (Thu, 19 Oct 2017 09:20:36 GMT):
somebody knows how to fix this?

bamboo (Thu, 19 Oct 2017 12:10:56 GMT):
hi, everyone, im beginer in sawtooth, someone can explain for me about Byzantine fault tolerance? thank you

bamboo (Thu, 19 Oct 2017 12:10:56 GMT):
hi, everyone, im beginer in sawtooth, someone can explain for me about `Byzantine fault tolerance` ? thank you

zac (Thu, 19 Oct 2017 13:16:44 GMT):
@benjaminverhaegen Sounds like you don't have a genesis block. Did you `sawtooth genesis` before you `sawtooth validator`ed?

benjaminverhaegen (Thu, 19 Oct 2017 13:18:04 GMT):
@zac yes i did all the steps provided in the tutorial. Started again on a clean Ubuntu and the problem was gone. Thanks for the help!

zac (Thu, 19 Oct 2017 13:18:59 GMT):
@bamboo Other people here can explain it better than me, but the short version is it is cryptographically secure. A hostile actor won't be able to change the blockchain.

kelly_ (Thu, 19 Oct 2017 17:43:02 GMT):
@mfford do you know where I can get a download of the technical forum from today?

kelly_ (Thu, 19 Oct 2017 17:53:17 GMT):
or is that a question for @tkuhrt

mfford (Thu, 19 Oct 2017 17:54:10 GMT):
It usually becomes available within a day. Once it does, I'll crop it and repost it

tkuhrt (Thu, 19 Oct 2017 17:54:14 GMT):
That is me...I am at a conference and have not had a chance to get it available.

kelly_ (Thu, 19 Oct 2017 17:57:44 GMT):
ok no worries, thanks!

larry (Thu, 19 Oct 2017 18:28:19 GMT):
Has joined the channel.

GhadiShayban (Thu, 19 Oct 2017 19:23:41 GMT):
Wondering if anyone had marinated on https://chat.hyperledger.org/channel/sawtooth?msg=2NFWzDwc2uvDe76pW

Dan (Thu, 19 Oct 2017 19:45:53 GMT):
I think the (Key, Value) pair is stored in state by mapping the Key to a Radix Address and the value is recorded as the value. The mapping of key to address is whatever the author wants under the namespace. Often that is namespace+hash(key), but there are more sophisticated address encodings. @jsmitchell can likely correct me.

GhadiShayban (Thu, 19 Oct 2017 19:45:54 GMT):
Let me walk back making a concrete proposal here. I would like the ability to store certain things on-chain, like a W3C verifiable claim (VC). VC's have a defined hash based on information not representation.

GhadiShayban (Thu, 19 Oct 2017 19:45:54 GMT):
Let me walk back making a concrete proposal here. I would like the ability to store certain things on-chain, like a W3C verifiable claim (VC). VC's have a defined hash based on information content not representation.

GhadiShayban (Thu, 19 Oct 2017 19:47:22 GMT):
(I can always refer to these things off chain with a pointer to them)

GhadiShayban (Thu, 19 Oct 2017 19:55:53 GMT):
A Verifiable Claim is a bad example because these are signed using a secret, necessarily off-chain. A more sensible example is a transaction processor that needs to agree on output -- in terms of information content, not byte-equality.

Dan (Thu, 19 Oct 2017 20:10:41 GMT):
Oh I see you aren't asking about the radix addressing, you want the hash used to compute the merkle root to be something variable that expresses whether or not the data at a node has some characteristic. That might be possible with an adaptation that extracts the value you are agreeing to from the blob and then hashes that value but I'm not sure it is necessary. Maybe you could frame the problem to expose why the bytes would need to be different but the data the same.

vbledar (Thu, 19 Oct 2017 21:32:01 GMT):
Anyone knows how to make the Rest API available on a client running on the browser? I mean without receiving the annoying "No 'Access-Control-Allow-Origin' header is present on the requested resource.". I found this STL-313 which is still open, but perhaps someone has a workaround of some kind.

kelly_ (Fri, 20 Oct 2017 15:04:11 GMT):
@pschwarz may know a workaround

pschwarz (Fri, 20 Oct 2017 15:09:37 GMT):
There is basic support for CORS in the REST API. The referenced issue is for more comprehensive support - e.g. defining which hosts the server will accept, etc

pschwarz (Fri, 20 Oct 2017 15:10:12 GMT):
You need to add the correct headers to your requests in your browser app

pschwarz (Fri, 20 Oct 2017 15:23:25 GMT):
This means you need to include the header `Origin`

pschwarz (Fri, 20 Oct 2017 15:24:07 GMT):
If it's not working, there's a bug with the Rest API

pschwarz (Fri, 20 Oct 2017 15:27:20 GMT):
@vbledar :point_up:

mfford (Fri, 20 Oct 2017 18:40:19 GMT):
The recording for the Oct 10th Sawtooth Technical Forum is now available in "Meeting Recordings" here: https://drive.google.com/drive/folders/0B_NJV6eJXAA1VnFUakRzaG1raXc

mfford (Fri, 20 Oct 2017 18:40:19 GMT):
The recording for the Oct 10th HL Sawtooth Technical Forum is now available in "Meeting Recordings" here: https://drive.google.com/drive/folders/0B_NJV6eJXAA1VnFUakRzaG1raXc

mfford (Fri, 20 Oct 2017 18:42:23 GMT):
The agenda for that meeting included: 1. Trackable Commodities with Sawtooth Supply Chain –Zac Delventhal 2. Using Open SSL Keys with Seth -Adam Ludvik

mfford (Fri, 20 Oct 2017 18:44:37 GMT):
@kelly_ :point_up_2_tone1:

kelly_ (Fri, 20 Oct 2017 19:10:45 GMT):
huzzah! @mfford

kelly_ (Fri, 20 Oct 2017 19:11:58 GMT):
any video?

kelly_ (Fri, 20 Oct 2017 19:15:37 GMT):
@tkuhrt :)

mfford (Fri, 20 Oct 2017 20:49:32 GMT):
^I thought the permissions thing was cleared up?

mfford (Fri, 20 Oct 2017 20:49:52 GMT):
Should be a video too

zac (Fri, 20 Oct 2017 21:19:25 GMT):
there are videos in there

kelly_ (Fri, 20 Oct 2017 21:21:31 GMT):
I don't see a 10/19 video..

kelly_ (Fri, 20 Oct 2017 21:21:45 GMT):
i see m4a (audio) and a txt file for the chat

kelly_ (Fri, 20 Oct 2017 21:21:46 GMT):
no mp4

podfrogs (Sat, 21 Oct 2017 11:32:00 GMT):
@mfford : I asked the question on separating the Web, Transaction Processor and Other Sawtooth components on different servers during your Thursday call. I was able to separate the three (Web + TP running on Azure and other Sawtooth running in Amazon) and the setup is working. I am using Azure Services Fabric to run these.

vbledar (Sat, 21 Oct 2017 14:02:13 GMT):
@pschwarz Origin is included by default by the browser itself. When the OPTIONS preflight request occurs I receive a 405 back.

crow15 (Sat, 21 Oct 2017 15:54:31 GMT):
Is a replay of "Hyperledger Sawtooth Tech Forum" available?

mredmundto85 (Sun, 22 Oct 2017 05:24:20 GMT):
Has joined the channel.

bamboo (Sun, 22 Oct 2017 09:55:33 GMT):
which `programming language` is used for transaction and transaction family in sawtooth? Someone can answer my question? thank you.

jarvis26 (Sun, 22 Oct 2017 14:25:04 GMT):
Has joined the channel.

jarvis26 (Sun, 22 Oct 2017 14:26:24 GMT):
I am currently working on HL fabric and was just going through HL Sawtooth. The introduction says that it is tailored for supply chain and IOT applications. How is writing a supply chain application in fabric different from the one that would be written in sawtooth?

Dan (Sun, 22 Oct 2017 20:34:38 GMT):
@bamboo one of the cool things about sawtooth is you can a variety of languages. we have SDKs for python, javascript, java, go, rust, and c++. There are tutorials available for python, java, and javascript. https://sawtooth.hyperledger.org/docs/core/nightly/master/app_developers_guide.html

Dan (Sun, 22 Oct 2017 21:39:08 GMT):
Hi @jarvis26. Sawtooth has several important features. Two quick ones are, 1) state agreement and 2) a customizable supply chain application 1: This prevents possible corruption at all nodes. Each node is explicitly agreeing to every byte/bit of information in the database. Not all blockchains enforce this which can result in nodes that believe they are in agreement but have progressive errors. 2: This Supply Chain Transaction Family (our parlance for business logic, smart contract, pick your favorite term) can be customized to your liking. It includes telemetry support so items can be tracked with various metadata like temperature and location. https://sawtooth.hyperledger.org/docs/core/nightly/master/transaction_family_specifications/track_and_trade_transaction_family.html This past week's tech talk happened to cover this item. I think we'll see a link to the recording of the presentation on this channel soon.

Dan (Sun, 22 Oct 2017 21:39:48 GMT):
@jarvis26 see also this demo (produced on older code recently updated for the above): https://01.org/sawtooth/

aviralwal (Mon, 23 Oct 2017 10:19:54 GMT):
Has joined the channel.

pschwarz (Mon, 23 Oct 2017 14:08:54 GMT):
@vbledar Let me back up: how are you sending your requests?

Dan (Mon, 23 Oct 2017 18:32:31 GMT):
https://www.hyperledger.org/blog/2017/10/23/sparts-project-software-parts-ledger-utilizing-the-blockchain-to-establish-trust-with-open-source-across-a-supplychain

VipinB (Mon, 23 Oct 2017 19:03:19 GMT):
Hi guys, any more documentation on sawtooth Identity Services that we can use as inputs into Identity WG docs. Particularly useful would be 1. Interface to legacy systems/x.5xx systems 2. Revocation 3. Anything on generic pki.

VipinB (Mon, 23 Oct 2017 19:03:44 GMT):
I did not want to use at here...

conroydave (Tue, 24 Oct 2017 00:42:38 GMT):
Has left the channel.

bamboo (Tue, 24 Oct 2017 12:17:42 GMT):
thank @Dan

VijendraKulkarni (Tue, 24 Oct 2017 18:34:23 GMT):
Has joined the channel.

vbledar (Tue, 24 Oct 2017 18:45:12 GMT):
@pschwarz I'm using axios library to create the post request. The request is from the browser so the preflight OPTIONS is done automatically. What I saw in the rest api code is that method add_cors_headers does not include "OPTIONS" in the "Access-Control-Allow-Methods". My guess is that is why I'm getting the 405 back. I tried to add also the OPTIONS in the add_cors_headers, but it seems that building and installing the new version didn't work as expected. When I try now to start the rest api I'm getting the an error message. File "/usr/local/bin/sawtooth-rest-api", line 9, in load_entry_point('sawtooth-rest-api==0.9.1.dev1', 'console_scripts', 'sawtooth-rest-api')() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point return ep.load() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load return self.resolve() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/local/lib/python3.5/dist-packages/sawtooth_rest_api-0.9.1.dev1-py3.5.egg/sawtooth_rest_api/rest_api.py", line 35, in File "/usr/local/lib/python3.5/dist-packages/sawtooth_rest_api-0.9.1.dev1-py3.5.egg/sawtooth_rest_api/messaging.py", line 26, in ImportError: No module named 'sawtooth_rest_api.protobuf'

pschwarz (Tue, 24 Oct 2017 18:47:48 GMT):
Do you have the parameter `withCredentials: true` on your requests?

vbledar (Tue, 24 Oct 2017 18:51:11 GMT):
No, I don't. But I have to check were I should set that.

vbledar (Tue, 24 Oct 2017 18:57:28 GMT):
I saw were I need to set the parameter, but unfortunately I have destroyed my rest api and it won't start. Need to fix that one first before trying withCredentials. Any idea what I've done wrong with my rest api?

vbledar (Tue, 24 Oct 2017 19:22:36 GMT):
@pschwarz Do you know how to compensate for this error message "ImportError: No module named 'sawtooth_rest_api.protobuf'"

pschwarz (Tue, 24 Oct 2017 19:23:43 GMT):
Are you building from the git repo, or were you modifying the installed code (via the debs)

pschwarz (Tue, 24 Oct 2017 19:23:43 GMT):
Are you building from the git repo, or were you modifying the installed code (via the debs)?

vbledar (Tue, 24 Oct 2017 19:32:06 GMT):
@pschwarz Building from the git repo.

pschwarz (Tue, 24 Oct 2017 20:23:07 GMT):
Did you use `/bin/build_all` or another method?

pschwarz (Tue, 24 Oct 2017 20:23:07 GMT):
Did you use `./bin/build_all` or another method?

pschwarz (Tue, 24 Oct 2017 20:23:07 GMT):
Did you use `/bin/build_all` or another method?

vbledar (Tue, 24 Oct 2017 20:26:08 GMT):
@pschwarz build_all didn't work for my ubuntu setup. I was the pytho3 build in the sawtooth rest api directory and after that python3 install.

pschwarz (Tue, 24 Oct 2017 20:27:10 GMT):
If you're going that route, you'll need to run `/bin/protogen` beforehand.

pschwarz (Tue, 24 Oct 2017 20:27:44 GMT):
That may require some python packages to be installed. Generally, we build all this stuff via docker

pschwarz (Tue, 24 Oct 2017 20:27:49 GMT):
Or the dbs

pschwarz (Tue, 24 Oct 2017 20:27:49 GMT):
Or install the debs

vbledar (Tue, 24 Oct 2017 20:38:11 GMT):
@pschwarz I removed and reinstalled the debs. Now the rest api is starting. I also placed an apache2 as a proxy and can handle the cors issue accordingly.

vbledar (Tue, 24 Oct 2017 20:38:24 GMT):
@pschwarz Thanks for your time.

pschwarz (Tue, 24 Oct 2017 21:11:10 GMT):
Glad it works!

Dan (Tue, 24 Oct 2017 23:22:09 GMT):
Any maintainers on Delta Sub or Events reply to this? https://lists.hyperledger.org/pipermail/hyperledger-stl/2017-October/000098.html

Dan (Tue, 24 Oct 2017 23:23:40 GMT):
I believe the answer may also have implications on https://lists.hyperledger.org/pipermail/hyperledger-stl/2017-October/000103.html if there are TP requirements to fulfill events/receipts.

akmishra (Wed, 25 Oct 2017 05:08:03 GMT):
Has joined the channel.

akmishra (Wed, 25 Oct 2017 11:23:13 GMT):
I have written my own TP based on the sdk/examples in python. I now want to write a cli like xo and do actions like xo init, create etc. for my custom TP. I have referenced the xo_cli.py and have written my own cli.py based on that, but am unable to get it into the docker client.

akmishra (Wed, 25 Oct 2017 11:25:37 GMT):
how do I get my custom cli into docker client? I had done ./bin/build_all -l python to build and then docker-compose -f docker/compose/sawtooth.yaml up

akmishra (Wed, 25 Oct 2017 11:25:56 GMT):
as suggested in sawtooth_xo.yaml

akmishra (Wed, 25 Oct 2017 11:27:05 GMT):
The directory structure and implementation is similar to

Dan (Wed, 25 Oct 2017 14:52:18 GMT):
@akmishra That sounds like a lot of quick progress! take a look at the client definition in this compose file: docker/compose/sawtooth-local.yaml. It is based on this image `sawtooth-dev-python`. The trick is that it will map in the directory that has the python code. ``` volumes: - ../../:/project/sawtooth-core ```.

vbledar (Wed, 25 Oct 2017 15:52:52 GMT):
@pschwarz could you try and speculate why executing the same code to submit a batch using node is successful, but executing the same code from browser (chrome) fails validation? I'm even using same private key. Of course using node prints in the console a buffer object, but on the browser prints a uint8array.

jsmitchell (Wed, 25 Oct 2017 16:31:47 GMT):
@zac ^

tkuhrt (Wed, 25 Oct 2017 16:56:28 GMT):
Question from the edX forums for the Introduction to Hyperledger Technologies course that I am hoping someone can point me to some documentation to include in the answer: ``` is there any downtime/recovery time ..if a node in the network goes down..in syncing up the ledger ? is there a central repo to sync from..or what's the process.? ```

boydjohnson (Wed, 25 Oct 2017 17:04:30 GMT):
The ledger is synced from the validator's peers. When it receives a new block it will ask for predecessors of that block if it doesn't have that blocks predecessors. This can take some time if the validator was down for many blocks.

tkuhrt (Wed, 25 Oct 2017 17:15:29 GMT):
Thanks, Boyd

akmishra (Wed, 25 Oct 2017 17:31:20 GMT):
request timesout for repo.sawtooth.me frequently

akmishra (Wed, 25 Oct 2017 17:33:33 GMT):
is it just me?

Dan (Wed, 25 Oct 2017 18:02:30 GMT):
I'm getting 50ms ping times for it and I just ran a build_all without issue.

vbledar (Wed, 25 Oct 2017 19:03:36 GMT):
Has anyone built a client application running on the browser and been able to submit a batch successfully? I'm using the javascript sdk, but so far have been unable to submit the batch. I'm receiving the following in the validator's logs: [2017-10-25 20:31:59.956 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 2641 bytes [2017-10-25 20:31:59.959 DEBUG signature_verifier] transaction signature invalid for txn: [2017-10-25 20:31:59.960 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'36344e6c9f704b47' The weird part is that using the exact same code, but running it with node everything works fine.

pschwarz (Wed, 25 Oct 2017 19:36:21 GMT):
We built a sample application that was able to do this: https://github.com/IntelLedger/omi-summer-lab/tree/master/omi-client

Dan (Wed, 25 Oct 2017 19:58:06 GMT):
Can I get some :eyes: on https://github.com/hyperledger/sawtooth-core/pull/1017 and https://github.com/hyperledger/sawtooth-core/pull/1018 before another refactoring PR comes through and causes merge evilness?

Dan (Wed, 25 Oct 2017 19:58:29 GMT):
Those dots are supposed to be eyes. :eye: :eye:

zac (Wed, 25 Oct 2017 20:57:43 GMT):
@vbledar I've written a few browser clients that submit transactions at this point

zac (Wed, 25 Oct 2017 20:57:52 GMT):
Could you upload your JS so I can take a look?

zac (Wed, 25 Oct 2017 20:58:43 GMT):
I'd also be curious to see a console.log of a complete transaction if you have that

Dan (Wed, 25 Oct 2017 22:21:40 GMT):
Thanks for the :eye::eye:s on the PRs. I rebased the c++ SDK pr, and jenkins is subsequently choking on unit tests. Mentioning incase others running into build failures. https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-1017/3/console

kelly_ (Wed, 25 Oct 2017 22:54:22 GMT):
@JamesKempf we are getting ready to put out the 1.0 release of Sawtooth before the end of the year. We are going to collect quotes from companies that have been contributing to/using sawtooth for a release by the linux foundation. please DM if you have something you'd like to contribute

JamesKempf (Thu, 26 Oct 2017 07:49:39 GMT):
@kelly_, will the 1.0 release also include an updated version of Seth/Burrow as well?

sgermanz (Thu, 26 Oct 2017 12:44:35 GMT):
Has joined the channel.

sgermanz (Thu, 26 Oct 2017 12:50:17 GMT):
Hi everywone! I'm using hyperledger sawtooth for a project with docker. And I want to know how can I scale to support a higher level of requests. Right now I have only one validator. I read in the documentation about validator networks https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/validator_network.html . But I didn't find any examples or documentation about how to implement that. Thanks in advance!

sgermanz (Thu, 26 Oct 2017 12:50:17 GMT):
Hi everyone! I'm using hyperledger sawtooth for a project with docker. And I want to know how can I scale to support a higher level of requests. Right now I have only one validator. I read in the documentation about validator networks https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/validator_network.html . But I didn't find any examples or documentation about how to implement that. Thanks in advance!

Timote (Thu, 26 Oct 2017 13:47:06 GMT):
Has joined the channel.

kelly_ (Thu, 26 Oct 2017 14:00:59 GMT):
@JamesKempf yes we are making it rpc compatible with ethereum and improving it's integration with existing ethereum development tools

boydjohnson (Thu, 26 Oct 2017 15:27:07 GMT):
@sgermanz This, https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_smoke.yaml, docker compose file shows a 3 validator network with the default 'static' peering. Options for the validator that you might want to know about are `--scheduler parallel` which increases performance, and `--peering dynamic` where in a large network the validator controls how many peers it has.

sgermanz (Thu, 26 Oct 2017 18:18:14 GMT):
Thanks. So, if I want to add more validators to my network dinamically... should I add rest-apis and transaction processors linked to the new validators?And bind the new validator to the existent ones?

pschwarz (Thu, 26 Oct 2017 18:41:05 GMT):
Not bind but "seed" the peering with one of the original ones (probably the first one will be sufficient). The each need a corresponding set of transaction processors, but only need rest-api's if you plan on submitting transactions or querying state from the specific validator instance

AbelVillavicencio (Fri, 27 Oct 2017 05:00:46 GMT):
Has joined the channel.

karthikworks (Fri, 27 Oct 2017 08:39:07 GMT):
Has joined the channel.

duncanjw (Fri, 27 Oct 2017 12:00:29 GMT):
Has joined the channel.

akmishra (Fri, 27 Oct 2017 12:36:19 GMT):
I've setup sgx and everything as per the documentation. Now, how do I enable poet consensus to be used in validators, to run example applications, when compiling from source.

BeeKay (Sat, 28 Oct 2017 16:45:49 GMT):
Has joined the channel.

HvDoes (Sat, 28 Oct 2017 21:14:08 GMT):
Has joined the channel.

HvDoes (Sat, 28 Oct 2017 21:14:34 GMT):
Hi! New to this and trying to install sawtooth on Mac

HvDoes (Sat, 28 Oct 2017 21:14:48 GMT):
I got this error message

HvDoes (Sat, 28 Oct 2017 21:14:52 GMT):
Error response from daemon: Container 2d69a0a3fe5cfe000ebba5671f813ec44fd18a09305a3ff3d015472ba74dfaf6 is not running

HvDoes (Sat, 28 Oct 2017 21:15:18 GMT):
Anyone who knows?

HvDoes (Sat, 28 Oct 2017 21:15:18 GMT):
Well...it is working anyway ;-)

myin2000 (Sun, 29 Oct 2017 12:48:28 GMT):
Has joined the channel.

tradesage (Sun, 29 Oct 2017 13:32:28 GMT):
Has joined the channel.

meridian (Sun, 29 Oct 2017 15:08:56 GMT):
Has joined the channel.

meridian (Sun, 29 Oct 2017 15:47:36 GMT):
Are there gonna be forums setup for Sawtooth ?

meridian (Sun, 29 Oct 2017 15:47:44 GMT):
instead of just a mailing list ?

ivtpz (Sun, 29 Oct 2017 17:31:23 GMT):
Has joined the channel.

zorrothefox (Mon, 30 Oct 2017 01:30:53 GMT):
Has joined the channel.

qixiaozzz (Mon, 30 Oct 2017 02:30:40 GMT):
Has joined the channel.

Dan (Mon, 30 Oct 2017 13:15:55 GMT):
Hi @meridian every other week there is a Sawtooth technical forum with a conference call / screen sharing. We go over new features / recent code changes in that meeting. You can email Mark Ford and he'll add you to the invite list. I suppose you might mean like a support forum though? We pretty much handle all that on this chat.

meridian (Mon, 30 Oct 2017 13:16:15 GMT):
yea a support forum

meridian (Mon, 30 Oct 2017 13:16:28 GMT):
its not just sawtooth, but I see it all the time in the fabric channel as well

meridian (Mon, 30 Oct 2017 13:17:09 GMT):
a lot of stuff is on gerrit, trying to find tickets to things that are similar to ur questions, etc

meridian (Mon, 30 Oct 2017 13:17:55 GMT):
from my experience in crypto-based blockchain development, fragmentation of resources makes the barrier to entry a bit higher for new developers

Dan (Mon, 30 Oct 2017 14:10:34 GMT):
That's a good idea. What kind of forums do you use in other projects? I find stackexchange/overflow seems to dominate lately. I don't think any of the sawtooth maintainers are active there though.

zac (Mon, 30 Oct 2017 15:17:53 GMT):
I think Fabric has a StackOverflow

zac (Mon, 30 Oct 2017 15:18:30 GMT):
I mostly only end up there when Google takes me there, but it would be easy enough to add a bookmark and keep an eye on it

zac (Mon, 30 Oct 2017 15:18:30 GMT):
I mostly only end up there when Google takes me, but it would be easy enough to add a bookmark and keep an eye on it

zac (Mon, 30 Oct 2017 15:29:23 GMT):
Looks like you can get tag-specific emails too: https://stackexchange.com/filters/309554/my-filter

meridian (Mon, 30 Oct 2017 16:19:45 GMT):
i know ethereum has its own forums that are semi-private for internal development, but considering the nature of development of hyperledger foundation vs ethereum foundation kind of makes sense

meridian (Mon, 30 Oct 2017 16:20:18 GMT):
probably a landing page with resources would be most helpful, and a forum for general discussion + pointing people to where to ask hfor help

meridian (Mon, 30 Oct 2017 16:20:42 GMT):
like 90% of the questions can be answered on stack/git/gerrit/jira

meridian (Mon, 30 Oct 2017 16:21:08 GMT):
or if your adventuress the mailing list :)

ganbold (Tue, 31 Oct 2017 11:28:11 GMT):
Can Sawtooth run without Docker?

urkidi (Tue, 31 Oct 2017 12:58:09 GMT):
Has joined the channel.

Dan (Tue, 31 Oct 2017 13:05:54 GMT):
Absolutely. There are directions for installing on ubuntu (it's really just add the repo and then `apt-get install sawtooth`) I saw the email question about BSD.

ganbold (Tue, 31 Oct 2017 13:18:53 GMT):
thanks, I will try it on FreeBSD when I get a chance

grovnick (Tue, 31 Oct 2017 14:52:23 GMT):
Given the architecture, I think it should be possible to develop a TP for example on Windows with Python. The python sdk does not quite install out of the box. Are there any plans to support this mode of development?

zac (Tue, 31 Oct 2017 14:58:39 GMT):
Someone correct me if I'm wrong, but I believe we are targeting pip deployment for 1.0, which is fairly soon.

zac (Tue, 31 Oct 2017 15:03:35 GMT):
I don't know if anyone has used the Python SDK on Windows before, but it seems to me that the easiest thing would be to just clone the repo and add the source to your python path . . . does Windows have a python path?

amundson (Wed, 01 Nov 2017 01:47:54 GMT):
You should be able to get a TP working on Windows, with the rest of Sawtooth running within a Linux VM or Docker. I often use docker-compose to spin up a sawtooth network and then connect a TP I'm running native on my Mac. TPs connect to the validator on port TCP/4004 by default. However, none of the core developers install the TPs or SDKs on Windows so there might be some rough edges getting going. However, we will accept Windows compatibility patches and feel free to ask questions as you go along.

grovnick (Wed, 01 Nov 2017 10:36:22 GMT):
I also tried by cloning. In both cases the pkg-config is missing on Windows and it is not so easy to install. I suspect there may be other issues. It would be good to know if someone is already working on this and an estimate of when it will be available.

amundson (Wed, 01 Nov 2017 12:39:56 GMT):
is that when running build_all?

amundson (Wed, 01 Nov 2017 12:44:35 GMT):
For a transaction processor on Windows, you want only the python sdk which is in sawtooth-core/sdk/python. The only build step necessary is to run ./bin/protogen. After that, you can run "python setup.py install" in sawtooth-core/sdk/python or set PYTHON_PATH to the sawtooth-core/sdk/python directory.

amundson (Wed, 01 Nov 2017 12:45:02 GMT):
(python3 setup.py install)

Dan (Wed, 01 Nov 2017 14:53:00 GMT):
@zac in sawtooth-supply-chain `bin/build_all` references dockers but there is no `./docker/` directory. Did that get removed on purpose?

zac (Wed, 01 Nov 2017 14:54:01 GMT):
Some of those scripts might be left over from the sawtooth-core directory, and still need to be modified to be usable in sawtooth-supply-chain

zac (Wed, 01 Nov 2017 14:54:34 GMT):
I haven't been modifying them, so I'm not sure which works exactly, but if `build_all` looks like it fundamentally wouldn't work, that might be true

zac (Wed, 01 Nov 2017 14:54:34 GMT):
I haven't been the one updating them, so I'm not sure which works exactly, but if `build_all` looks like it fundamentally wouldn't work, that might be true

zac (Wed, 01 Nov 2017 14:55:11 GMT):
as for the docker directory, yes that was removed on purpose

zac (Wed, 01 Nov 2017 14:56:06 GMT):
We are going for a more standard docker approach, so at the root level there would be a `docker-compose.yaml`, and then both the `server/` and `processor/` directories will have their own `Dockerfile`

zac (Wed, 01 Nov 2017 14:57:24 GMT):
We also have `-installed` versions of each of those, in the same directory. The installed version will be for people who just want to get it running, while the default ones will be for developers and will reflect the current code base

zac (Wed, 01 Nov 2017 14:57:40 GMT):
Not all of this is 100% in place, but that is the general idea

zac (Wed, 01 Nov 2017 14:58:15 GMT):
in any case, I suspect the real question here is, "how the heck do I run this?"

zac (Wed, 01 Nov 2017 14:58:51 GMT):
and you should _probably_ be able to just `docker-compose up` from the root directory

zac (Wed, 01 Nov 2017 14:58:59 GMT):
might be some kinks though

Dan (Wed, 01 Nov 2017 15:03:20 GMT):
thanks I'll give that a whirl

zac (Wed, 01 Nov 2017 15:03:48 GMT):
might have to `./bin/protogen` . . .

chris (Wed, 01 Nov 2017 15:08:03 GMT):
Has joined the channel.

chris (Wed, 01 Nov 2017 15:11:11 GMT):
Hello everybody, I'm a noob developer in an immersive program. I'm journeying down my first experience with the block chain and Sawtooth. There's a lot of info in the docs and I'm having a hard time putting it all together. Are there any solid video tutorials out yet?

Dan (Wed, 01 Nov 2017 15:16:58 GMT):
@zac looks like it's running, thanks! Now to figure out UI.

Dan (Wed, 01 Nov 2017 15:20:35 GMT):
@chris sounds like you may need a mission :). What would you like to do? Here's one option... try the App Developers guide. Start with getting sawtooth up and running. If you are on a mac I recommend the docker instructions. If you happen to have an ubuntu 16.04 machine you can do the native install path instead. https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

drozd (Wed, 01 Nov 2017 15:23:32 GMT):
@chris take a look at the sawtooth section of https://www.edx.org/course/blockchain-business-introduction-linuxfoundationx-lfs171x

drozd (Wed, 01 Nov 2017 15:24:48 GMT):
(you have to sign up, but it's free)

chris (Wed, 01 Nov 2017 15:25:26 GMT):
I'm on a Mac. We're building an order tracking system. The UI is very simple, just a dashboard built in React that shows receipt of order, fulfillment tracking, and shipping status. The block chain should log when the order is made, the fulfillment process, and shipping process. I took that course and reviewed the guid, but I'm unsure of file structure and even what all moving parts need to be present to make a complete application.

chris (Wed, 01 Nov 2017 15:26:36 GMT):
I think I'll go back through the EDX course paying particular attention to Sawtooth. Hopefully I can get it up and running lol.

chris (Wed, 01 Nov 2017 15:31:54 GMT):
I feel like I missed the Sawtooth portion because it's making a lot more sense. Please forgive lol.

sam (Wed, 01 Nov 2017 15:32:12 GMT):
Has joined the channel.

chris (Wed, 01 Nov 2017 15:37:24 GMT):
Btw, thanks for the resources!

zac (Wed, 01 Nov 2017 15:37:43 GMT):
@chris There are a couple of necessary and/ore useful components you might think about building with Sawtooth: 1. A "transaction processor". This will interface the Sawtooth validator (the thing actually managing the blockchain), and will parse the payloads of your transactions and modify blockchain state appropriately. 2. Then you need to think about how you get blockchain data from the validator to your client. The simplest thing is probably to just boot up the Sawtooth REST API, which will accept HTTP/JSON requests and forward those on to the validator. 2b. However, a common pattern is to write a custom application-specific REST API. This can simplify things for your client, and you can do neat tricks like keep a local copy of state for more complex queries. It will need to communicate with the validator using ZMQ/Protobuf however, which might be a little daunting at first, so maybe best for version 2.

chris (Wed, 01 Nov 2017 15:39:14 GMT):
Oh gosh, lol. Yeah, I think we'll stick with using the Sawtooth REST API.

zac (Wed, 01 Nov 2017 15:39:55 GMT):
If you are looking for a pretty minimal JavaScript application, I built one for a talk on Sawtooth development. It has an example of both a client and a transaction processor, and just uses the default REST API to communicate. https://github.com/delventhalz/transfer-chain-js

chris (Wed, 01 Nov 2017 15:42:15 GMT):
That's so awesome!! I'll definitely fork that! I'm trying to understand "state". I understand state in React and React Native, so I get the concept. But in the tutorial, when it discusses "state" does this mean "stored on the block chain" where if I have a batch that is not committed to state, they are not on the block chain, but if I have a batch that's been committed to state, that batch is logged to the block chain?

kolawoleOlulana (Wed, 01 Nov 2017 15:44:46 GMT):
Has joined the channel.

zac (Wed, 01 Nov 2017 15:45:47 GMT):
Yeah, when I am talking about "blockchain state", I am referring to the data that has been created by transactions and their interactions with transaction processors

zac (Wed, 01 Nov 2017 15:47:30 GMT):
I don't know if I would say it is technically "on the blockchain", since the strictly speaking the blockchain is a collection transactions, batches, and blocks. And those objects are what validators pass to each other.

zac (Wed, 01 Nov 2017 15:47:56 GMT):
But validators each store a copy of this state, and can recreate it using the transactions on the chain, and the transaction processors.

chris (Wed, 01 Nov 2017 15:49:27 GMT):
Ahh, I see. So what's most important for us to understand is that a batch is either committed to state or not and once committed, the validator will either validate or invalidate the batch?

zac (Wed, 01 Nov 2017 15:50:41 GMT):
well, I think it is worth drawing a bit of a distinction between the blockchain, and state

zac (Wed, 01 Nov 2017 15:50:49 GMT):
validators have copies of both

zac (Wed, 01 Nov 2017 15:51:22 GMT):
but the blockchain is the source of truth which is sent to peers on the validator network

zac (Wed, 01 Nov 2017 15:51:36 GMT):
And _batches_ are committed to the _blockchain_

zac (Wed, 01 Nov 2017 15:51:50 GMT):
That is where they would live once validated

zac (Wed, 01 Nov 2017 15:52:29 GMT):
Any changes to state that are called for by transactions within a batch will get written to state once the batch is committed

zac (Wed, 01 Nov 2017 15:52:40 GMT):
but they are not stored together

chris (Wed, 01 Nov 2017 15:56:06 GMT):
Ahh, I see. Much clarify, many thanks.

Dan (Wed, 01 Nov 2017 16:00:23 GMT):
state = the contents of the database. The blockchain/distributed ledger is a distributed database. The datastructure that is a chain of blocks is a list of transactions. Everyone uses blockchain colloquially though to mean the distributed database.

zac (Wed, 01 Nov 2017 16:01:04 GMT):
It might be helpful to have the lifecycle of a batch, which looks something like this: 1. A client creates one or more transactions which contain commands to modify state, and signs them. 2. The client then batches these transactions together, and signs the batch. 3. The batch is submitted, likely through a REST API, and reaches a validator. 4. The validator looks at the structure of the batch, checks the signatures, and confirms the batch is "valid". It does not know anything about the commands (i.e. payload) within the transactions. 5. The validator sends the batch off to other validators in the network, which will all repeat steps 4-6 on their own. 6. The transactions are then passed off to an appropriate transaction processor, which _does_ know how to understand the commands. It can run further validation, and also send orders back to the validator about how state should be modified. 6b. If any transaction is invalid for any reason, the whole batch will be rejected and no state changes will be applied. 7. When a validator wins a block, it will take any valid but uncommitted batches it has, add them to the new block, and then modify state accordingly. 8. This new block will be sent to other validators.

Dan (Wed, 01 Nov 2017 16:02:37 GMT):
@zac with the supply chain dockers running, how do I bring up a UI? I see there's a "server" container running and what IP it's mapped to. Pointing a browser at the connection info provided by `docker inspect` was not successful :).

chris (Wed, 01 Nov 2017 16:02:53 GMT):
That is great. Thanks for the explanation.

sam (Wed, 01 Nov 2017 16:22:51 GMT):
Does anyone know how to make multiple parties? like in the example with the Tuna going to the store?

zac (Wed, 01 Nov 2017 16:29:45 GMT):
@Dan server has nothing at the root route by default

zac (Wed, 01 Nov 2017 16:30:07 GMT):
You should be able to access the asset client at `localhost:3000/asset`

zac (Wed, 01 Nov 2017 16:30:24 GMT):
Or ping the api at `localhost:3000/api/info`

zac (Wed, 01 Nov 2017 16:30:41 GMT):
If neither of those work, then something is probably busted with the server

zac (Wed, 01 Nov 2017 16:35:54 GMT):
@sam what is a "party" in this context?

sam (Wed, 01 Nov 2017 16:43:45 GMT):
A seller shipping to a buyer. Where the Buyer can see if the seller has shipped the item and if the shipping is in process.

Dan (Wed, 01 Nov 2017 16:45:13 GMT):
@zac thanks that worked.

sam (Wed, 01 Nov 2017 16:45:43 GMT):
Like would you add another asset and transfer to the state?

chris (Wed, 01 Nov 2017 16:49:12 GMT):
@zac Sam and I are on the same team working on the same project.

zac (Wed, 01 Nov 2017 16:51:40 GMT):
@Dan Excellent, you may have to run scripts locally in order to seed data (including the "asset" type)

zac (Wed, 01 Nov 2017 16:55:33 GMT):
@chris @sam It's going to depend a lot on your implementation. We do have a similar PoC out there that might inform your work. Though we haven't written much documentation for it yet, and there is a fair amount going on: https://github.com/hyperledger/sawtooth-supply-chain

zac (Wed, 01 Nov 2017 16:56:21 GMT):
I'm not sure I quite understand the specific question though.

zac (Wed, 01 Nov 2017 16:57:44 GMT):
In our PoC we define "Records" which correspond to physical items in the supply chain, and "Agents" which are actors who interact with the supply chain

zac (Wed, 01 Nov 2017 16:58:10 GMT):
A Record records a time stamped history of both the "owner" and "custodian" of the physical item

zac (Wed, 01 Nov 2017 16:59:09 GMT):
So in the scenario where an item has been bought and is in transit, there would be one Record and three Agents in the system (buyer, shipper, seller).

zac (Wed, 01 Nov 2017 16:59:31 GMT):
The seller would still be the "owner", and the shipper would be the current "custodian"

zac (Wed, 01 Nov 2017 16:59:49 GMT):
Once the buyer received the item, they would become both the owner and the custodian.

zac (Wed, 01 Nov 2017 17:00:28 GMT):
This is all custom logic we wrote ourselves though. It could have been anything and Sawtooth would accommodate the design.

zac (Wed, 01 Nov 2017 17:01:36 GMT):
Does that help?

sam (Wed, 01 Nov 2017 17:04:40 GMT):
Yes this makes since, so in the Sawtooth Tuna Chain example that is present it is just not showing up in the Tuna list? Example 1 key transfer to another key?

sam (Wed, 01 Nov 2017 17:04:48 GMT):
@zac

mfford (Wed, 01 Nov 2017 17:05:27 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, November 2nd from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum!   Here are the details:   Title: Hyperledger Sawtooth Technical Forum Day: Thursday, November 2nd Time: 10-11am CDT   We are using the HL Sawtooth Zoom account for these calls:   Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone:  Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free)   Meeting ID: 655 382 678   International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi   Agenda: 1.       Introductions-Mark Ford 2.      Sawtooth Events-Adam Ludvik 3. CII Best Practices Badge-Tom Barnes 4.      Open Forum

zac (Wed, 01 Nov 2017 17:24:03 GMT):
@sam Sawtooth Supply Chain is a spiritual successor to the Tuna project. I believe they handled it in a similar way. One public key is an owner, and one public key is a custodian. And those properties can be changed to reflect changes in ownership or possession.

kelly_ (Wed, 01 Nov 2017 17:27:08 GMT):
@zac are these the correct instructions

kelly_ (Wed, 01 Nov 2017 17:27:21 GMT):
System requirements Git Docker I’m on a Mac, but Ubuntu should work the same. Steps to get supply chain blockchain setup: 1. Git clone https://github.com/hyperledger/sawtooth-supply-chain.git 2. Navigate to sawtooth-supply-chain folder 3. Run docker-compose up in root directory 4. Navigate your browser to localhost:3000/asset

zac (Wed, 01 Nov 2017 17:29:53 GMT):
yes*

kelly_ (Wed, 01 Nov 2017 17:30:06 GMT):
awesome

kelly_ (Wed, 01 Nov 2017 17:30:25 GMT):
i need to figure out some proxy settings for my new mac i think cause my docker compose is failing on the vpn

zac (Wed, 01 Nov 2017 17:30:30 GMT):
*you _might_ have to `./bin/protogen` before you docker-compose up, I don't remember

zac (Wed, 01 Nov 2017 17:31:26 GMT):
**I don't believe docker compose runs any of the seeding scripts yet, so you'll need to go to the `server/` directory and `npm run make-asset` before you can actually submit any new assets.

kelly_ (Wed, 01 Nov 2017 17:31:48 GMT):
ERROR: Service 'supply-chain-tp' failed to build: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

kelly_ (Wed, 01 Nov 2017 17:31:52 GMT):
I'm assuming that is a proxy thing

kelly_ (Wed, 01 Nov 2017 17:32:01 GMT):
I'm going to set my proxy in the docker software and see if that works

kelly_ (Wed, 01 Nov 2017 17:32:17 GMT):
yup that did it

kelly_ (Wed, 01 Nov 2017 17:33:28 GMT):
does npm run make-asset seed the supply chain with assets?

kelly_ (Wed, 01 Nov 2017 17:33:35 GMT):
or just enable you to then run a seeding script

zac (Wed, 01 Nov 2017 17:35:13 GMT):
make asset just adds the `"asset"` RecordType to the blockchain

zac (Wed, 01 Nov 2017 17:35:13 GMT):
make-asset just adds the `"asset"` RecordType to the blockchain

kelly_ (Wed, 01 Nov 2017 17:35:30 GMT):
got it, cool

zac (Wed, 01 Nov 2017 17:35:37 GMT):
`npm run seed-sample-assets` will give you some samples

zac (Wed, 01 Nov 2017 17:35:47 GMT):
(run make-asset first)

kelly_ (Wed, 01 Nov 2017 17:36:17 GMT):
:ok_hand:

kelly_ (Wed, 01 Nov 2017 17:36:19 GMT):
thanks

kelly_ (Wed, 01 Nov 2017 18:05:19 GMT):
@zac i got webserver and validator up and working

kelly_ (Wed, 01 Nov 2017 18:05:23 GMT):
npm make asset fails

kelly_ (Wed, 01 Nov 2017 18:05:43 GMT):
do you think that has to do with not running protogen

kelly_ (Wed, 01 Nov 2017 18:06:12 GMT):
the error i get is when it's running core_types.json it looks like

kelly_ (Wed, 01 Nov 2017 18:06:14 GMT):
exit status 1

kelly_ (Wed, 01 Nov 2017 18:06:25 GMT):
failed at supply_chain_server@0.0.0 make-asset script

zac (Wed, 01 Nov 2017 18:06:38 GMT):
hrmmm

zac (Wed, 01 Nov 2017 18:06:54 GMT):
what gets logged exactly when you `npm run make-asset`?

kelly_ (Wed, 01 Nov 2017 18:07:34 GMT):
> supply_chain_server@0.0.0 make-asset /Users/kolson/Desktop/supply/sawtooth-supply-chain/server > DATA="../../asset_client/sample_data/core_types.json" node ./scripts/seed_core_types.js module.js:538 throw err; ^ Error: Cannot find module 'request-promise-native' at Function.Module._resolveFilename (module.js:536:15) at Function.Module._load (module.js:466:25) at Module.require (module.js:579:17) at require (internal/module.js:11:18) at Object. (/Users/kolson/Desktop/supply/sawtooth-supply-chain/server/scripts/seed_core_types.js:19:17) at Module._compile (module.js:635:30) at Object.Module._extensions..js (module.js:646:10) at Module.load (module.js:554:32) at tryModuleLoad (module.js:497:12) at Function.Module._load (module.js:489:3) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! supply_chain_server@0.0.0 make-asset: `DATA="../../asset_client/sample_data/core_types.json" node ./scripts/seed_core_types.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the supply_chain_server@0.0.0 make-asset script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm WARN Local package.json exists, but node_modules missing, did you mean to install? npm ERR! A complete log of this run can be found in: npm ERR! /Users/kolson/.npm/_logs/2017-11-01T18_07_17_537Z-debug.log

zac (Wed, 01 Nov 2017 18:08:04 GMT):
looks like you gotta `npm install`

kelly_ (Wed, 01 Nov 2017 18:08:18 GMT):
in the server/ directory?

zac (Wed, 01 Nov 2017 18:08:22 GMT):
yep

zac (Wed, 01 Nov 2017 18:09:12 GMT):
I'd like to get docker image up that you can exec into and run scripts, but that has been buggy, and I haven't really been able to devote much time to it

zac (Wed, 01 Nov 2017 18:09:25 GMT):
so you'll need to install the dependencies locally

kelly_ (Wed, 01 Nov 2017 18:09:27 GMT):
great it works now

zac (Wed, 01 Nov 2017 18:09:36 GMT):
kewl

kelly_ (Wed, 01 Nov 2017 18:09:45 GMT):
now i'm trying the seeding script

kelly_ (Wed, 01 Nov 2017 18:10:08 GMT):
once i get this I will modify the readme.md for sawtooth-supply-chain with these simple instructions

zac (Wed, 01 Nov 2017 18:10:27 GMT):
Dan is working on this too, and his make-asset batch never got committed because his TP isn't actually running

kelly_ (Wed, 01 Nov 2017 18:10:58 GMT):
ok got an error on the seed script

kelly_ (Wed, 01 Nov 2017 18:11:05 GMT):
after creating agents . . .

kelly_ (Wed, 01 Nov 2017 18:11:15 GMT):
I got error: cannot read property of 'message' of undefined

zac (Wed, 01 Nov 2017 18:11:25 GMT):
if you `curl localhost:8008/batch_status?id={the batch id you got back from make-asset}` you can check to see if it actually committed

zac (Wed, 01 Nov 2017 18:11:33 GMT):
I suspect it did not

zac (Wed, 01 Nov 2017 18:11:57 GMT):
and without the asset type in state, the seed script will fail

zac (Wed, 01 Nov 2017 18:12:08 GMT):
that error message is admittedly terrible

zac (Wed, 01 Nov 2017 18:12:14 GMT):
but I believe that is the problem

kelly_ (Wed, 01 Nov 2017 18:12:31 GMT):
I am getting activity on my terminal, I saw that it got a get and a post request

kelly_ (Wed, 01 Nov 2017 18:12:40 GMT):
and the interconnect sent a client batch submit request

zac (Wed, 01 Nov 2017 18:13:35 GMT):
for Dan, the TP wasn't running, so the batch is just sitting in the validator, waiting for the appropriate TP to come online

kelly_ (Wed, 01 Nov 2017 18:13:43 GMT):
oh i got you

zac (Wed, 01 Nov 2017 18:13:55 GMT):
if you curl the batch status, it will probably say "UNKNOWN"

kelly_ (Wed, 01 Nov 2017 18:13:55 GMT):
yea now that i look at my logs i see a 'waiting for transaction processor'

zac (Wed, 01 Nov 2017 18:14:04 GMT):
yeah

zac (Wed, 01 Nov 2017 18:14:43 GMT):
oh, you know what, I think I know what the problem is . . .

zac (Wed, 01 Nov 2017 18:14:58 GMT):
yup

zac (Wed, 01 Nov 2017 18:15:12 GMT):
the docker-compose file needs an update that never actually got turned into a PR

zac (Wed, 01 Nov 2017 18:15:41 GMT):
line 80 should have `-vv tcp://validator:4004` added to the end

zac (Wed, 01 Nov 2017 18:15:49 GMT):
I will submit a PR with this

zac (Wed, 01 Nov 2017 18:15:54 GMT):
@Dan ^

kelly_ (Wed, 01 Nov 2017 18:17:19 GMT):
@zac does this have an impact for our AMI submission

kelly_ (Wed, 01 Nov 2017 18:17:41 GMT):
or will ami just fetch the latest and greatest stuff from repo

zac (Wed, 01 Nov 2017 18:18:09 GMT):
No, I believe Ryan updated this in the repo he submitted to Amazon

zac (Wed, 01 Nov 2017 18:18:15 GMT):
But it never made it into GitHub

kelly_ (Wed, 01 Nov 2017 18:20:46 GMT):
would a 'sudo -u sawtooth supply_chain_tp -vv tcp://validator4004' in the root directory connect the tp?

kelly_ (Wed, 01 Nov 2017 18:21:18 GMT):
if not I'll probably just wait for the new docker

zac (Wed, 01 Nov 2017 18:23:30 GMT):
I don't believe it would

kelly_ (Wed, 01 Nov 2017 18:23:35 GMT):
ok no worries

zac (Wed, 01 Nov 2017 18:23:56 GMT):
you can add that code to the end of line 80 and compose down and then compose up and it should work though

zac (Wed, 01 Nov 2017 18:24:01 GMT):
if you don't want to wait

kelly_ (Wed, 01 Nov 2017 18:29:08 GMT):
Ok will give it a whirl

kelly_ (Wed, 01 Nov 2017 18:30:06 GMT):
one more quick question

kelly_ (Wed, 01 Nov 2017 18:30:09 GMT):
when i look at the validaotr

kelly_ (Wed, 01 Nov 2017 18:30:12 GMT):
in the yaml

kelly_ (Wed, 01 Nov 2017 18:30:22 GMT):
it says endpoint tcp://validator:8800

zac (Wed, 01 Nov 2017 18:30:31 GMT):
PR is here: https://github.com/hyperledger/sawtooth-supply-chain/pull/19

kelly_ (Wed, 01 Nov 2017 18:31:01 GMT):
and then bind component and network are at tcp://eth0:4004

kelly_ (Wed, 01 Nov 2017 18:31:10 GMT):
so is validator:8800 correct?

zac (Wed, 01 Nov 2017 18:31:15 GMT):
it is

zac (Wed, 01 Nov 2017 18:31:21 GMT):
I don't know what it means though

kelly_ (Wed, 01 Nov 2017 18:31:44 GMT):
ok, i tried modifying, down and up and it doesnt look like it registers the TP

zac (Wed, 01 Nov 2017 18:33:04 GMT):
what happens if you `npm run make-asset` and then curl the batch status?

kelly_ (Wed, 01 Nov 2017 18:35:39 GMT):
when i run npm make asset

kelly_ (Wed, 01 Nov 2017 18:35:56 GMT):
my validator says 'waiting for transaction processor supply chain

kelly_ (Wed, 01 Nov 2017 18:36:21 GMT):
it tells me no transaction processors registered for that type

kelly_ (Wed, 01 Nov 2017 18:42:39 GMT):
maybe i'll try one more thing -- what is the protogen command i need to run

kelly_ (Wed, 01 Nov 2017 18:42:53 GMT):
I just dug into the container running sawtooth supply chain tp

kelly_ (Wed, 01 Nov 2017 18:43:05 GMT):
and i think it had module error related to protobuf

kelly_ (Wed, 01 Nov 2017 18:45:51 GMT):
i ran ./bin/protogen in sawtooth-supply-chain directory and i got grpc.tools not found

kelly_ (Wed, 01 Nov 2017 18:48:58 GMT):
I'm not sure if there is a new issue since changing that field, but i am getting a traceback on supply-chain-tp

kelly_ (Wed, 01 Nov 2017 18:49:57 GMT):
'no module named supply_chain_processor.protobuf'

kelly_ (Wed, 01 Nov 2017 18:50:02 GMT):
import error

zac (Wed, 01 Nov 2017 19:00:08 GMT):
ah yeah, that import error is because you didn't `./bin/protogen`

zac (Wed, 01 Nov 2017 19:00:15 GMT):
there may be dependency issues there

zac (Wed, 01 Nov 2017 19:03:31 GMT):
protogen should be a part of `processor/Dockerfile` probably, I am less familiar with that whole story though, and I don't really have the capacity at the moment to start poking at it

zac (Wed, 01 Nov 2017 19:04:35 GMT):
For now, I would install the missing python dependencies locally and then `./bin/protogen` before you `docker-compose up`

kelly_ (Wed, 01 Nov 2017 19:12:26 GMT):
ok great thanks

kelly_ (Wed, 01 Nov 2017 19:12:37 GMT):
i wonder if i have some outdated python or pip issues

kelly_ (Wed, 01 Nov 2017 19:12:56 GMT):
i will update python, pip and grpc / grpc tools and then do protogen

sam (Wed, 01 Nov 2017 19:17:44 GMT):
Can you have multiple assets to a state?

kelly_ (Wed, 01 Nov 2017 19:22:42 GMT):
@zac IT'S ALIVE!

zac (Wed, 01 Nov 2017 19:22:57 GMT):
yay!

zac (Wed, 01 Nov 2017 19:23:08 GMT):
@sam You can save whatever you want to state.

zac (Wed, 01 Nov 2017 19:23:25 GMT):
There is no formal concept of an "asset"

zac (Wed, 01 Nov 2017 19:23:38 GMT):
It is entirely up to the logic of your transaction processor

zac (Wed, 01 Nov 2017 19:25:27 GMT):
but it would be a very weird transaction processor that only allowed on asset in state at a time

zac (Wed, 01 Nov 2017 19:25:27 GMT):
but it would be a very weird transaction processor that only allowed one asset in state at a time

sam (Wed, 01 Nov 2017 19:26:52 GMT):
So you can have muliptle saves in a state. How would you do this?

zac (Wed, 01 Nov 2017 19:29:42 GMT):
I recommend looking at the intkey example in sawtooth-core or that transfer-chain-js example

zac (Wed, 01 Nov 2017 19:30:14 GMT):
This is a pretty good document here: https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/global_state.html

sam (Wed, 01 Nov 2017 19:30:54 GMT):
Thanks!

zac (Wed, 01 Nov 2017 19:30:54 GMT):
But the long and short is this: Blockchain state stored in a merkle tree

zac (Wed, 01 Nov 2017 19:31:40 GMT):
where each node is designated by a single byte

zac (Wed, 01 Nov 2017 19:31:40 GMT):
i.e., a tree where each node is designated by a single byte

zac (Wed, 01 Nov 2017 19:33:11 GMT):
``` 00 / | \ 00 01 ... ```

zac (Wed, 01 Nov 2017 19:33:52 GMT):
For Sawtooth this goes 35 nodes deep, and you store your data in those deepest nodes

zac (Wed, 01 Nov 2017 19:34:33 GMT):
you can forget most of this, but remember that every location where you can store state data is designated by a 70-character hex string

zac (Wed, 01 Nov 2017 19:34:59 GMT):
the first six characters are a prefix that designates your transaction family

zac (Wed, 01 Nov 2017 19:35:19 GMT):
the remaining 64 are up to you to divvy up however you like

zac (Wed, 01 Nov 2017 19:35:56 GMT):
at each of these 70-character addresses, you can store literally any binary data you want

zac (Wed, 01 Nov 2017 19:36:49 GMT):
so, for transfer-chain, there were two types of data stored in state, Assets, and Transfers

zac (Wed, 01 Nov 2017 19:40:20 GMT):
the Addresses were constructed like this: ``` Asset address == 19d832 + 00 + ``` ``` Transfer address == 19d832 + 01 + ```

zac (Wed, 01 Nov 2017 19:40:20 GMT):
An Asset addresses was constructed like this: ``` 19d832 + 00 + ``` And a Transfer address was constructed like this: ``` 19d832 + 01 + ```

zac (Wed, 01 Nov 2017 19:42:47 GMT):
The actual data was just an JS object that had been JSON.stringified and then converted into binary with Node.js's Buffer interface.

zac (Wed, 01 Nov 2017 19:43:06 GMT):
So each address was one object in state

zac (Wed, 01 Nov 2017 19:43:47 GMT):
And each object in state got their own address (assuming unique names and no hash collisions)

zac (Wed, 01 Nov 2017 19:44:04 GMT):
You can see this put into practice here: https://github.com/delventhalz/transfer-chain-js/blob/master/processor/handlers.js

sam (Wed, 01 Nov 2017 19:55:44 GMT):

Screen Shot 2017-11-01 at 1.53.19 PM.png

sam (Wed, 01 Nov 2017 19:56:36 GMT):
If i where to create another record with this code how would i do that. This is what im confused about

zac (Wed, 01 Nov 2017 19:58:18 GMT):
`state.get([address])` is going to return the contents of one particular 70-character address in state

zac (Wed, 01 Nov 2017 19:59:44 GMT):
it returns it as a JS object with the structure `{ address: data }`, because you may ask for more than one address at a time

zac (Wed, 01 Nov 2017 20:00:11 GMT):
hence the plural name "entries"

zac (Wed, 01 Nov 2017 20:01:07 GMT):
"entry" is the data at the actual address we want. Remember it is binary data, so when we look at "entry.length" we are checking how many bytes are there.

zac (Wed, 01 Nov 2017 20:02:01 GMT):
This transaction processor was written against an older version of Sawtooth that could not delete address keys, and so would "delete" things from state by setting them to just empty binary objects

zac (Wed, 01 Nov 2017 20:02:53 GMT):
So the code here checks to see if there is something at this _one_ address, and if that thing has more than 0 bytes. If so, then someone is trying to reuse the same name, and so the transaction is invalid.

zac (Wed, 01 Nov 2017 20:03:14 GMT):
This code is enforcing one Asset _per state address_, not one Asset total

zac (Wed, 01 Nov 2017 20:03:14 GMT):
yeah, much of that API surface is already out of date, and more will be as we transition to 1.0

zac (Wed, 01 Nov 2017 20:03:14 GMT):
This code is enforcing one Asset _per state address_, not one Asset total

Dan (Wed, 01 Nov 2017 20:39:47 GMT):
@sam is that a screen shot from the online course?

sam (Wed, 01 Nov 2017 21:11:06 GMT):
yes it is!

Dan (Wed, 01 Nov 2017 21:59:11 GMT):
I should really go look at that content. It's hard to have training material in sync with current development. Hopefully if there are old examples they still teach enough that the current methods will be easier to understand.

zac (Wed, 01 Nov 2017 22:01:06 GMT):
yeah, much of the API surface of the Sawtooth SDK shown here is already out of date

zac (Wed, 01 Nov 2017 22:01:15 GMT):
and more will be as we transition to 1.0

zac (Wed, 01 Nov 2017 22:01:52 GMT):
After 1.0 it will be easier to keep stuff like this up to date though

zac (Wed, 01 Nov 2017 22:06:38 GMT):
(not that this repo was ever meant to be an official example . . .)

msg2muthu (Thu, 02 Nov 2017 01:09:23 GMT):
Has joined the channel.

msg2muthu (Thu, 02 Nov 2017 01:09:31 GMT):
Hello, I am Muthu learning Sawtooth framework. I am getting the following error while running 'xo create' command for using XO Transaction Processor root@47369194c6d1:/# xo init --username naran set username: naran set url: http://127.0.0.1:8080 writing file: /root/.sawtooth/keys/naran.priv writing file: /root/.sawtooth/keys/naran.addr root@47369194c6d1:/# xo create game1 Error: HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',)) root@47369194c6d1:/# Please guide me if you have faced this issue.

Dan (Thu, 02 Nov 2017 01:43:00 GMT):
Hi @msg2muthu if you are following these directions, https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html, then you might try to repeat the sections where you start the sawtooth processes. It looks like something in your environment is not running.

askmish (Thu, 02 Nov 2017 09:58:35 GMT):
Has joined the channel.

msg2muthu (Thu, 02 Nov 2017 11:12:33 GMT):
i followed same, but it failed. i was able to curl http://127.0.0.1:8080/batches in browser. not sure why xo create not able to connect.

msg2muthu (Thu, 02 Nov 2017 11:12:33 GMT):
@Dan i followed same, but it failed. i was able to curl http://127.0.0.1:8080/batches in browser. not sure why xo create not able to connect.

askmish (Thu, 02 Nov 2017 12:46:27 GMT):
@msg2muthu could you try this: xo init --username naran --url http://rest-api:8080

msg2muthu (Thu, 02 Nov 2017 13:45:17 GMT):
Thanks @askmish , It is working now.

zac (Thu, 02 Nov 2017 14:28:34 GMT):
It has to do with how Docker does networking

zac (Thu, 02 Nov 2017 14:29:11 GMT):
On your host machine, any ports that are being forwarded will just be on `localhost`

zac (Thu, 02 Nov 2017 14:29:41 GMT):
within each container though, that won't be the case, they will be at a host named after the docker container

zac (Thu, 02 Nov 2017 14:29:48 GMT):
so in this case, `rest-api`

zac (Thu, 02 Nov 2017 14:30:33 GMT):
(unless you were _in_ the rest-api container, then it would be `localhost`)

msg2muthu (Thu, 02 Nov 2017 15:17:12 GMT):
Thanks @zac , i think that since i have run docker-compose with sawtooth-default.yaml, it is binding rest-api:8080. i will try with out running rest-api container and try to run xo create and let you know.

zac (Thu, 02 Nov 2017 15:23:48 GMT):
no, you need the rest-api

zac (Thu, 02 Nov 2017 15:23:58 GMT):
I may have been unclear

zac (Thu, 02 Nov 2017 15:24:07 GMT):
you want that container

zac (Thu, 02 Nov 2017 15:24:30 GMT):
if you are on your host machine, or in the res-api container, the URL will be `localhost:8080`

zac (Thu, 02 Nov 2017 15:24:49 GMT):
if you are in another docker container, the URL will be `rest-api:8080`

zac (Thu, 02 Nov 2017 15:25:19 GMT):
Same thing, just different URLs depending on where you are trying to access it from

sam (Thu, 02 Nov 2017 16:26:33 GMT):
hey can someone give step by step process of how to run sawtooth-supply-chain?

zac (Thu, 02 Nov 2017 16:44:59 GMT):
There are still a few kinks to work out, so let me know if you have trouble

zac (Thu, 02 Nov 2017 16:45:09 GMT):
But you should be able to just follow the setup instructions here:

zac (Thu, 02 Nov 2017 16:45:19 GMT):
https://github.com/hyperledger/sawtooth-supply-chain/blob/master/README.md

amundson (Thu, 02 Nov 2017 16:49:49 GMT):
we are planning to spin a 0.8.10 release tomorrow morning

sam (Thu, 02 Nov 2017 17:37:02 GMT):
if you are uploading your project to heroku do you just need the sawtooth-default.yaml on heroku?

sam (Thu, 02 Nov 2017 17:37:49 GMT):
im just not sure if i do that how will the tcp and the http link

JohnHClark3 (Thu, 02 Nov 2017 17:52:56 GMT):
Has joined the channel.

zac (Thu, 02 Nov 2017 18:16:03 GMT):
I have never used docker with heroku before

zac (Thu, 02 Nov 2017 18:16:20 GMT):
Assuming it is supported, I would assume it would work more or less like it does on your local machine

teious (Thu, 02 Nov 2017 18:34:52 GMT):
Has joined the channel.

chris (Thu, 02 Nov 2017 20:22:34 GMT):
I'd like to do a fetch request to a deployed sawtooth app. Any reference materials available?

amundson (Thu, 02 Nov 2017 20:35:43 GMT):
what do you mean by fetch request?

chris (Thu, 02 Nov 2017 20:53:22 GMT):
I want to grab transactions from the block chain using a React app

zac (Thu, 02 Nov 2017 20:53:59 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/latest/rest_api.html

boydjohnson (Thu, 02 Nov 2017 21:29:09 GMT):
@chris might mean state updates. Which would be a little more complicated.https://github.com/hyperledger/sawtooth-supply-chain/tree/master/server This node server handles state delta subscription, if I am not wrong @zac.

zac (Thu, 02 Nov 2017 21:30:22 GMT):
that's a little more involved than just a GET request

zac (Thu, 02 Nov 2017 21:30:40 GMT):
though maybe that's not what he meant

chris (Thu, 02 Nov 2017 21:41:50 GMT):
What I'd like to do is grab the current state of the blockchain so that I can iterate over it and display certain transactions in a dashboard

zac (Thu, 02 Nov 2017 21:54:14 GMT):
what deployed sawtooth app?

chris (Thu, 02 Nov 2017 22:30:29 GMT):
I feel like I'm super confused. I was under the impression that we would build the sawtooth app and then deploy it to somewhere like Heroku. We're attempting to build a very tiny, and minimally functional order tracking system, but we're not even sure of all the moving parts. I'm a very new developer with 4 months experience in JavaScript. I've built a React JS app that I would like to use to grab transactions from the blockchain and display them in the dashboard. We've used the sawtooth tuna example to build the back end, but we're not even sure if we built a back end?

chris (Thu, 02 Nov 2017 22:36:06 GMT):
We just don't know what a fully functional block chain app looks like. We've built decoupled full-stack apps using front end frameworks with Node.js back end using Express, Knex, and PostgreSQL. Beyond that, we have very minimal knowledge of what the back end should look like for use with the block chain. Maybe this project is a bit much for us to chew (especially since we only have 5 days from inception to presentation), but we're super excited about the block chain and want to learn how to use it.

zac (Fri, 03 Nov 2017 01:49:29 GMT):
I think the best answer I can give you is that I think you want to spend some time at a broader level. You are diving into some fairly low level implementation details, which might teach you about working with Sawtooth, but won't teach you much about what a blockchain is or what it is good for.

zac (Fri, 03 Nov 2017 01:52:31 GMT):
Sawtooth is a general purpose blockchain intended for consortiums of users. This means there is no predefined set of logic about what happens on the blockchain, and there is no global blockchain network for you to just plug into and start messing around with. This is unlike Bitcoin, where the blockchain does one thing (trades bitcoin), and there is one bitcoin network that already exists out there.

zac (Fri, 03 Nov 2017 01:53:52 GMT):
With Sawtooth, it is all up to you. _You_ decide what data you want to the blockchain to track, what logic you want it to execute, and you are in charge of how the blockchain network is deployed and communicated with.

zac (Fri, 03 Nov 2017 01:55:08 GMT):
So building a front-end for a Sawtooth network is probably not the place you want to start. It is meaningless without a well-defined set of back-end logic.

zac (Fri, 03 Nov 2017 01:57:40 GMT):
Now, you could play around with the [Sawtooth Supply Chain](https://github.com/hyperledger/sawtooth-supply-chain) app linked above. It is essentially the Tuna trading demo from the video. And you could replace the existing front-end clients with something you built yourself, but I don't think you will learn much about Sawtooth or blockchains from this. You will mostly just learn about the Supply Chain app.

zac (Fri, 03 Nov 2017 02:04:47 GMT):
What might be better is to build a complete Sawtooth app on your own, meaning a Transaction Processor, and a client that communicates with the Sawtooth REST API. Look at the [IntKey](https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_python), or [Transfer Chain](https://github.com/delventhalz/transfer-chain-js) examples for inspiration. These are simple concepts, that can show you where to get started, and are both [well](https://sawtooth.hyperledger.org/docs/core/releases/latest/transaction_family_specifications/integerkey_transaction_family.html) [documented](http://slides.com/delventhalz/blockchain-apps#/). The [Application Developer's Guide](https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html) also includes a lot of helpful information.

zac (Fri, 03 Nov 2017 02:04:47 GMT):
What might be better is to build a complete Sawtooth app on your own, meaning a Transaction Processor, and a client that communicates with the Sawtooth REST API. Look at the [IntKey](https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples/intkey_python), or [Transfer Chain](https://github.com/delventhalz/transfer-chain-js) examples for inspiration. These are simple concepts, but fully executed from end to end. They can help show you where to get started and are both [well](https://sawtooth.hyperledger.org/docs/core/releases/latest/transaction_family_specifications/integerkey_transaction_family.html) [documented](http://slides.com/delventhalz/blockchain-apps#/). The [Application Developer's Guide](https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html) also includes a lot of helpful information.

meridian (Fri, 03 Nov 2017 03:56:11 GMT):
i built a qr code scanning mobile app that i side loaded onto a phone to track a package in a system in sawtooth

meridian (Fri, 03 Nov 2017 03:56:22 GMT):
im literally working on that exact concept

meridian (Fri, 03 Nov 2017 03:56:35 GMT):
what zac said is 100%

meridian (Fri, 03 Nov 2017 03:56:53 GMT):
damn no emoji's on rocket chat, thats how u know this is serious business here folks

rjones (Fri, 03 Nov 2017 04:45:15 GMT):
👊🔥

chokha (Fri, 03 Nov 2017 06:48:59 GMT):
Has joined the channel.

meridian (Fri, 03 Nov 2017 12:57:41 GMT):
In my defense i had been awake for almost 20 hours :O

chris (Fri, 03 Nov 2017 13:33:38 GMT):
That's where I believe I'm at. I should probably do a ton more reading.

msg2muthu (Fri, 03 Nov 2017 13:35:56 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=mbkJzQW5d3fTwHNiG) @zac Thanks @zac, I understand it.

bennettneale (Fri, 03 Nov 2017 16:19:30 GMT):
Has joined the channel.

sttysane (Fri, 03 Nov 2017 20:09:25 GMT):
Has joined the channel.

sttysane (Fri, 03 Nov 2017 20:13:11 GMT):
Let me know if this is too high level. I read this in the docs "Modifications to state are performed by creating and applying transactions. A client creates a transaction and submits it to the validator. The validator applies the transaction which causes a change to state." Do many validators actually verify the transaction?

Dan (Fri, 03 Nov 2017 20:23:34 GMT):
All validators will verify the transaction.

Dan (Fri, 03 Nov 2017 20:24:49 GMT):
As a user you'd send a transaction to one validator. That validator will broadcast it to the other validators. All of the validators will check the transaction. Each validator will only update their local state if they agree to the transaction (and they received it as part of a valid block).

Dan (Fri, 03 Nov 2017 20:26:03 GMT):
@amundson I don't remember what is the difference between `sawtooth keygen` and `sawtooth admin keygen`

sttysane (Fri, 03 Nov 2017 21:02:51 GMT):
Thanks @Dan, and each transaction family has a set of Validators?

pschwarz (Fri, 03 Nov 2017 21:37:53 GMT):
@Dan: the differences between the keygens is subtle: `sawtooth keygen` generates a public/private key pair that a _user_ can use to sign transactions and/or batches `sawtooth admin keygen` generates a public/private key pair that a _validator_ can use to sign blocks

pschwarz (Fri, 03 Nov 2017 21:38:41 GMT):
This will be made more clear in the docs for 1.0

ajenie (Sat, 04 Nov 2017 16:24:51 GMT):
Has joined the channel.

ajenie (Sat, 04 Nov 2017 16:27:41 GMT):
Hi, i'm very new with Sawtooth. I'm trying to just build a network with two validators running in two different virtual machines. I set `--peering dynamic` but i look into */var/log/sawtooth/validator-debug.log*, the validator can't find any peer. How does validator's topology search work? Thanks in advance.

ajenie (Sat, 04 Nov 2017 16:27:41 GMT):
Hi, i'm very new with Sawtooth. I'm trying to just build a network with two validators running in two different virtual machines. Each runs as Docker container in its respective vm. I set `--peering dynamic` and map the port to the respective vm's ip address. I look into */var/log/sawtooth/validator-debug.log* and the validator can't find any peer. How does validator's topology search work? Is this design even possible? Thanks in advance.

ganbold (Sat, 04 Nov 2017 17:06:25 GMT):
@Dan https://lists.hyperledger.org/pipermail/hyperledger-stl/2017-November/000116.html

Dan (Sat, 04 Nov 2017 18:36:56 GMT):
@ganbold nice work!

Dan (Sat, 04 Nov 2017 18:40:47 GMT):
@ajenie there's a _seed_ setting to tell a validator where to start it's network building. `-s SEEDS`.

ajenie (Sun, 05 Nov 2017 03:17:28 GMT):
@Dan thanks indeed for the information. I'll take a look at that parameter.

AuHuR (Sun, 05 Nov 2017 08:59:26 GMT):
Has joined the channel.

BurnzZ (Sun, 05 Nov 2017 10:29:39 GMT):
Has joined the channel.

hhimanshu (Sun, 05 Nov 2017 16:36:25 GMT):
Has joined the channel.

mulderbm (Sun, 05 Nov 2017 19:30:02 GMT):
Has joined the channel.

tommling (Sun, 05 Nov 2017 20:11:20 GMT):
Hey fam, just moved to new version hitting a small problem. I am running into (0.8.9-1) running ubuntu 16.04. The Validator/TP/Rest modules are working intended except I hit a debug message """ [ DEBUG permission_verifier] Chain head is not set yet. Permit all."""

tommling (Sun, 05 Nov 2017 20:11:20 GMT):
Hey fam, just moved to new version hitting a small problem. I am running into (0.8.9-1) running ubuntu 16.04. The Validator/TP/Rest modules are working intended except I hit a debug message *[ DEBUG permission_verifier] Chain head is not set yet. Permit all.*

tommling (Sun, 05 Nov 2017 20:11:20 GMT):
Hey fam, just moved to new version hitting a small problem. I am running into (0.8.9-1) running ubuntu 16.04. The Validator/TP/Rest modules are working intended except I hit a debug message `[ DEBUG permission_verifier] Chain head is not set yet. Permit all.`

tommling (Sun, 05 Nov 2017 20:13:59 GMT):
I am generating keys and the genesis block as required

miguelcalero (Sun, 05 Nov 2017 21:43:07 GMT):
Has joined the channel.

BeeKay (Sun, 05 Nov 2017 21:50:41 GMT):
how do you clear docker output before running tests? I keep coming up with an error that says "XXX that has to be created by this script already exists". XXX is different each time.

ganbold (Mon, 06 Nov 2017 02:55:28 GMT):
@Dan how Sawtooth nodes communicate/connect to each other? Are there any illustration which shows the processes related to it? I would like to run 2 nodes and test Sawtooth XO game

Dan (Mon, 06 Nov 2017 04:00:49 GMT):
@BeeKay I'm not sure which script you are running but sometimes `--force` on a docker compose script will force it to overwrite things like key files.

Dan (Mon, 06 Nov 2017 04:04:29 GMT):
@ganbold they 'gossip' with each other. If you want to run two nodes, you start one and then give that node's connection info as the SEED connection for the second node. There's some docker compose files in the integration directory that do this. They need to be run with a command that's something like bin/run_docker_test. (sorry I'm away from my source reference at the moment). That's all from sawtooth-core. Otherwise if you have two machines you can start sawtooth like you would for production using linux - still using the first node's connection string as the seed connection for the second (or third, or fourth..) node.

ganbold (Mon, 06 Nov 2017 04:19:10 GMT):
@Dan very cool, so with multiple nodes, nodes' validator will start with other nodes' validator address via -s or --seeds tcp://hostname1:port,tcp://hostname2:port etc

dniHze (Mon, 06 Nov 2017 10:14:14 GMT):
Has joined the channel.

anton_petrashkevich (Mon, 06 Nov 2017 14:29:06 GMT):
Has joined the channel.

dniHze (Mon, 06 Nov 2017 15:14:31 GMT):
Hi there. I'm trying to use python SDK for my project. Getting this error: `ModuleNotFoundError: No module named 'sawtooth_sdk.protobuf'` when trying to use `TransactionEncoder`. Any ideas what the hell is going on with it?

ganbold (Mon, 06 Nov 2017 15:25:50 GMT):
I think you should try running bin/protogen

ganbold (Mon, 06 Nov 2017 15:25:59 GMT):
and then try

kelly_ (Mon, 06 Nov 2017 15:30:55 GMT):
agreed, you will need GRPC and grpc tools

dniHze (Mon, 06 Nov 2017 15:31:11 GMT):
Well, i just intalled sawtooth-sdk as a dependency via pip, so I can't understand what you talking about @ganbold

kelly_ (Mon, 06 Nov 2017 15:31:24 GMT):
GRPC - $ python3 -m pip install grpcio GRPC Tools - $ python3 -m pip install grpcio-tools

kelly_ (Mon, 06 Nov 2017 15:32:30 GMT):
if you already have those then you can do ./bin/protogen

ganbold (Mon, 06 Nov 2017 15:32:34 GMT):
per https://github.com/hyperledger/sawtooth-core/blob/master/sdk/README.md ```Now that grpc is installed, the protobuf files need to be generated. The protogen script generates python classes based on the proto files found in the protos directory and writes them into sawtooth-core/sdk/python/sawtooth_sdk.protobuf and sawtooth-core/validator/sawtooth_validator/protobuf: % cd /project/sawtooth-core % ./bin/protogen ```

kenvhnguyen (Mon, 06 Nov 2017 16:50:19 GMT):
Has joined the channel.

cam.ross (Mon, 06 Nov 2017 19:45:48 GMT):
Has joined the channel.

TimWalton (Mon, 06 Nov 2017 20:17:10 GMT):
Has joined the channel.

bogoreser (Mon, 06 Nov 2017 20:42:24 GMT):
Has joined the channel.

bogoreser (Mon, 06 Nov 2017 20:42:44 GMT):
Has left the channel.

BeeKay (Tue, 07 Nov 2017 02:58:49 GMT):
@Dan - I created a pull request for STL-802. Please can you look and ensure everything is correct. I missed the Signed-off by originally and had to amend my commit.

Dan (Tue, 07 Nov 2017 04:26:18 GMT):
Great! I'm going to be unavailable for a few days, but I'm sure the other maintainers will review.

dv29 (Tue, 07 Nov 2017 12:19:49 GMT):
Has joined the channel.

grkvlt (Tue, 07 Nov 2017 13:33:28 GMT):
Has joined the channel.

grkvlt (Tue, 07 Nov 2017 13:34:47 GMT):
hi there. i'm building a sawtooth blockchain project, but have been having difficulty building some of the rust components

grkvlt (Tue, 07 Nov 2017 13:35:10 GMT):
i want to use the smallbank workload generator for testing, but building the rust SDK gives me this error

grkvlt (Tue, 07 Nov 2017 13:35:22 GMT):
```

grkvlt (Tue, 07 Nov 2017 13:35:22 GMT):
``` error[E0583]: file not found for module `client_batch` --> src/messages/mod.rs:26:9 | 26 | pub mod client_batch; | ^^^^^^^^^^^^ | = help: name the file either client_batch.rs or client_batch/mod.rs inside the directory "src/messages" ```

grkvlt (Tue, 07 Nov 2017 13:36:04 GMT):
I'm using rustc 1.21.0 (3b72af97e 2017-10-09) if that helps?

grkvlt (Tue, 07 Nov 2017 13:36:04 GMT):
I'm using rustc 1.21.0 (3b72af97e 2017-10-09) on OSX if that helps?

grkvlt (Tue, 07 Nov 2017 14:19:21 GMT):
ok, i think i solved this - you have to run `cargo install protobuf` before `bin/build_rust`

pschwarz (Tue, 07 Nov 2017 18:59:22 GMT):
@grkvlt cool

kelly_ (Tue, 07 Nov 2017 20:08:24 GMT):
@grkvlt thanks for the PR!

oatmealraisin (Wed, 08 Nov 2017 00:43:44 GMT):
Hello! For the validator in docker/compose/sawtooth-default.yaml, is there any reason that networking wouldn't work in a Container orchestration solution such as Kubernetes?

oatmealraisin (Wed, 08 Nov 2017 00:43:54 GMT):
I had a working deployment going, but I updated the image today x.x

Dan (Wed, 08 Nov 2017 08:33:25 GMT):
@zac in the supply chain demo is there a way to save the google maps api key in my environment?

ahp (Wed, 08 Nov 2017 12:15:41 GMT):
Has joined the channel.

grkvlt (Wed, 08 Nov 2017 13:07:08 GMT):
@oatmealraisin i have a deployment of sawtooth validators using Docker SDN with the overlay driver, and I expect you could also do something similar with K8s using Flannel or one of its other SDN drivers, yes. I haven't tried a K8s deployment yet, but its one of the production architectures we are looking at...

grkvlt (Wed, 08 Nov 2017 13:07:08 GMT):
@oatmealraisin I have a multi-host deployment of sawtooth validators using Docker SDN with the overlay driver, and I expect you could also do something similar with K8s using Flannel or one of its other SDN drivers, yes. I haven't tried a K8s deployment yet, but its one of the production architectures we are looking at...

grkvlt (Wed, 08 Nov 2017 13:07:08 GMT):
@oatmealraisin I have a multi-host deployment of Sawtooth with validators networked using Docker SDN with the overlay driver, and I expect you could also do something similar with K8s using Flannel or one of its other SDN drivers, yes. I haven't tried a K8s deployment yet, but its one of the production architectures we are looking at...

grkvlt (Wed, 08 Nov 2017 13:07:08 GMT):
@oatmealraisin I have a multi-host deployment of Sawtooth with validators networked using Docker SDN and the overlay driver, and I expect you could also do something similar with K8s using Flannel or one of its other SDN drivers, yes. I haven't tried a K8s deployment yet, but its one of the production architectures we are looking at...

grkvlt (Wed, 08 Nov 2017 13:12:29 GMT):
Can anyone @here help me with generating a transaction input file for the `smallbank_workload` batch submission tool? I have the Docker image for the workload generator built, but I can't see where I should be generating the input transactions. Is there an example in the `sawtooth-core` repo somewhere?

zac (Wed, 08 Nov 2017 15:00:05 GMT):
@Dan Yep. The server will look for a `MAPS_API_KEY`, first as an environment variable, then as a key in `server/config.json`

zac (Wed, 08 Nov 2017 15:01:26 GMT):
Furthermore, when you enter it via the web app, it _should_ be saving it to the config.json file, so you shouldn't have to enter it again unless you are rebuilding everything from scratch.

zac (Wed, 08 Nov 2017 15:01:50 GMT):
That parts a little hacky though, so I wouldn't be super surprised if it broke for some reason.

zac (Wed, 08 Nov 2017 15:01:50 GMT):
That part's a little hacky though, so I wouldn't be super surprised if it broke for some reason.

zac (Wed, 08 Nov 2017 15:03:08 GMT):
@oatmealraisin I haven't worked with Kubernetes myself, but I know some folks have used Sawtooth with it before. Should work fine.

maoxine (Wed, 08 Nov 2017 16:33:03 GMT):
Has joined the channel.

pd93 (Wed, 08 Nov 2017 16:37:16 GMT):
@kelly_ I have the same issue as @dniHze had yesterday. To give a bit more information... I've installed `grpcio` and `grpcio-tools`, but the instructions that @ganbold linked do not apply if you installed the Sawtooth SDK via `pip` and you are not working inside of a Vagrant environment (unless I'm mistaken). I don't have the `sawtooth-core` repo cloned, so I'm not able to run the `bin/protogen` script you mentioned. Surely these classes should be generated before the module is published to `pip`? I'm new to Sawtooth and I'm revising Python after quite a break, so please bear with me if I ask stupid questions

maoxine (Wed, 08 Nov 2017 16:38:59 GMT):
Hi, I'm doing a master's project using Sawtooth to instantiate a private permissioned ledger between a small number of nodes, but i'm completely new to sawtooth; I saw the Sawtooth lake tutorial at https://sawtooth.hyperledger.org/docs/core/releases/0.7/tutorial.html but I couldn't find the tutorial for sawtooth-core, are they basically the same and can I follow the same steps?? Sorry for being such a noob but is completely new.

Jimskie (Wed, 08 Nov 2017 16:49:49 GMT):
Has joined the channel.

boydjohnson (Wed, 08 Nov 2017 16:55:34 GMT):
Hi @maoxine 0.7 is legacy now, and 0.8 is stable. Checkout https://sawtooth.hyperledger.org/docs/core/releases/0.8/app_developers_guide/ubuntu.html for getting sawtooth running with Ubuntu. There was a major rearchitecture between 0.7 and 0.8 so they are incompatible.

jsmitchell (Wed, 08 Nov 2017 17:17:36 GMT):
@grkvlt i can help you with the smallbank stuff

grkvlt (Wed, 08 Nov 2017 17:19:23 GMT):
@jsmitchell awesome, thx. what should i be looking for?

grkvlt (Wed, 08 Nov 2017 17:19:23 GMT):
@jsmitchel awesome, thx. what should i be looking for?

grkvlt (Wed, 08 Nov 2017 17:19:23 GMT):
@jsmitchel awesome, thx. what should i be looking for?

grkvlt (Wed, 08 Nov 2017 17:19:23 GMT):
@jsmitchell awesome, thx. what should i be looking for?

jsmitchell (Wed, 08 Nov 2017 17:20:15 GMT):
are you able to execute the smallbank-workload command?

grkvlt (Wed, 08 Nov 2017 17:20:36 GMT):
yes, i built it from the rust sources, but it wants an input file...

jsmitchell (Wed, 08 Nov 2017 17:20:38 GMT):
ok

jsmitchell (Wed, 08 Nov 2017 17:20:41 GMT):
there are a few steps

jsmitchell (Wed, 08 Nov 2017 17:21:10 GMT):
the first step will generate a yaml file containing the smallbank transactions

jsmitchell (Wed, 08 Nov 2017 17:21:30 GMT):
this format is not sawtooth specific. the intent was it could be used as input for any blockchain workload tools.

jsmitchell (Wed, 08 Nov 2017 17:22:30 GMT):
you will do `smallbank-workload playlist create -a 10 -n 1000 -o smallbank_playlist.yaml`

jsmitchell (Wed, 08 Nov 2017 17:22:42 GMT):
-a is the number of accounts to create

jsmitchell (Wed, 08 Nov 2017 17:23:05 GMT):
-n is the number of operation transactions to create against those accounts

jsmitchell (Wed, 08 Nov 2017 17:23:22 GMT):
you can always provide --help to this tool to get command line option help

grkvlt (Wed, 08 Nov 2017 17:23:32 GMT):
understood. i'll try that...

jsmitchell (Wed, 08 Nov 2017 17:23:55 GMT):
once it generates that, you can look at that smallbank_playlist.yaml file -- the transactions are pretty readable

jsmitchell (Wed, 08 Nov 2017 17:23:59 GMT):
ok, so that's step 1

jsmitchell (Wed, 08 Nov 2017 17:25:13 GMT):
the next step turns that input file into sawtooth specific transactions

grkvlt (Wed, 08 Nov 2017 17:26:45 GMT):
i get ```

grkvlt (Wed, 08 Nov 2017 17:26:45 GMT):
i get ``` thread 'main' panicked at 'Unset payload type: create_account {customer_name: "customer_000000" initial_savings_balance: 1000000 initial_checking_balance: 1000000}', src/playlist.rs:358:16 ``` running the `playlist create` command?

grkvlt (Wed, 08 Nov 2017 17:26:45 GMT):
i get ```thread 'main' panicked at 'Unset payload type: create_account {customer_name: "customer_000000" initial_savings_balance: 1000000 initial_checking_balance: 1000000}', src/playlist.rs:358:16 ``` running the `playlist create` command?

grkvlt (Wed, 08 Nov 2017 17:27:31 GMT):
i did `./target/release/smallbank_workload playlist create -a 10 -n 1000 -o smallbank_playlist.yaml`

jsmitchell (Wed, 08 Nov 2017 17:28:10 GMT):
hmm

grkvlt (Wed, 08 Nov 2017 17:29:02 GMT):
i can give you the backtrace as well: ``` stack backtrace: 0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace 1: std::panicking::default_hook::{{closure}} 2: std::panicking::default_hook 3: std::panicking::rust_panic_with_hook 4: std::panicking::begin_panic 5: std::panicking::begin_panic_fmt 6: as core::iter::iterator::Iterator>::next 7: smallbank_workload::main 8: __rust_maybe_catch_panic 9: std::rt::lang_start ```

grkvlt (Wed, 08 Nov 2017 17:29:02 GMT):
i can give you the backtrace as well: ```stack backtrace: 0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace 1: std::panicking::default_hook::{{closure}} 2: std::panicking::default_hook 3: std::panicking::rust_panic_with_hook 4: std::panicking::begin_panic 5: std::panicking::begin_panic_fmt 6: as core::iter::iterator::Iterator>::next 7: smallbank_workload::main 8: __rust_maybe_catch_panic 9: std::rt::lang_start ```

jsmitchell (Wed, 08 Nov 2017 17:30:50 GMT):
@grkvlt are you on current master?

grkvlt (Wed, 08 Nov 2017 17:30:59 GMT):
yes

jsmitchell (Wed, 08 Nov 2017 17:32:27 GMT):
this is probably related to some breaking changes that went in with some of the protobuf objects

jsmitchell (Wed, 08 Nov 2017 17:32:37 GMT):
@agunde @pschwarz ^

agunde (Wed, 08 Nov 2017 17:36:51 GMT):
Ya, that Unset payload went in recently.

grkvlt (Wed, 08 Nov 2017 17:39:22 GMT):
got it - was a missing line: ``` payload.set_payload_type(SBPayloadType::CREATE_ACCOUNT); ```

grkvlt (Wed, 08 Nov 2017 17:39:28 GMT):
I'll make a PR

grkvlt (Wed, 08 Nov 2017 17:39:59 GMT):
yeah, it works now. it wasn't setting the payload type for the initial create account txn before

grkvlt (Wed, 08 Nov 2017 17:43:20 GMT):
https://github.com/hyperledger/sawtooth-core/pull/1088

jsmitchell (Wed, 08 Nov 2017 17:43:46 GMT):
so, either a protogen issue or the smallbank stuff is currently broken?

grkvlt (Wed, 08 Nov 2017 17:45:07 GMT):
no, looks like the workload generator just wan't updated. with that PR i now have a YAML file with 1000 txn definitions in it

agunde (Wed, 08 Nov 2017 17:46:24 GMT):
@jsmitchel @grkvlt is correct, there was a place where the payload was not being set. This didnt matter before the the addition of the default UNSET to the protobuf enum, because it defaulted to CREATE_ACCOUNT value .

agunde (Wed, 08 Nov 2017 17:46:24 GMT):
@jsmitchell l @grkvlt is correct, there was a place where the payload was not being set. This didnt matter before the the addition of the default UNSET to the protobuf enum, because it defaulted to CREATE_ACCOUNT value .

agunde (Wed, 08 Nov 2017 17:46:24 GMT):
@jsmitchell @grkvlt is correct, there was a place where the payload was not being set. This didnt matter before the the addition of the default UNSET to the protobuf enum, because it defaulted to CREATE_ACCOUNT value .

pschwarz (Wed, 08 Nov 2017 17:46:50 GMT):
That's what I thought, just hadn't had a chance to look at the code :)

jsmitchell (Wed, 08 Nov 2017 17:48:02 GMT):
ok, next step is `smallbank-workload process`

jsmitchell (Wed, 08 Nov 2017 17:48:02 GMT):
ok, next step is `smallbank-workload playlist process`

jsmitchell (Wed, 08 Nov 2017 17:48:11 GMT):
sorry

jsmitchell (Wed, 08 Nov 2017 17:48:26 GMT):
`smallbank-workload playlist process`

jsmitchell (Wed, 08 Nov 2017 17:49:11 GMT):
`smallbank-workload playlist process -i smallbank_playlist.yaml -k keyfile.key -o smallbank.txns

jsmitchell (Wed, 08 Nov 2017 17:49:11 GMT):
`smallbank-workload playlist process -i smallbank_playlist.yaml -k keyfile.key -o smallbank.txns`

grkvlt (Wed, 08 Nov 2017 17:49:25 GMT):
ok, thx. what is the `keyfile` i need here?

jsmitchell (Wed, 08 Nov 2017 17:49:38 GMT):
you will need to generate a key with `sawtooth keygen` to use to sign the transactions

jsmitchell (Wed, 08 Nov 2017 17:49:45 GMT):
it is the private key

grkvlt (Wed, 08 Nov 2017 17:50:36 GMT):
ah, and i did that already during validator startup, so use the `my_key.priv` file (well, it has a different name in my setup) from that?

jsmitchell (Wed, 08 Nov 2017 17:51:06 GMT):
so, there is the validator private key and whatever 'user' private keys that you generate

jsmitchell (Wed, 08 Nov 2017 17:51:17 GMT):
you are probably fine to reuse that my_key.priv

jsmitchell (Wed, 08 Nov 2017 17:51:53 GMT):
once you have generated the signed transactions, you need to batch them up (batches are sawtooth's unit of submission/atomic change)

jsmitchell (Wed, 08 Nov 2017 17:52:34 GMT):
`smallbank-workload batch -i smallbank.txns -k keyfile.key -n 10 -o smallbank.batches`

jsmitchell (Wed, 08 Nov 2017 17:52:44 GMT):
-n is the number of transactions to include in a batch

jsmitchell (Wed, 08 Nov 2017 17:53:30 GMT):
now you will have a file of batches you can submit to sawtooth

jsmitchell (Wed, 08 Nov 2017 17:54:25 GMT):
`smallbank-workload submit -i smallbank.batches -r 1 -t http://localhost:8080`

jsmitchell (Wed, 08 Nov 2017 17:54:36 GMT):
-r is the number of batches per second to submit to the target

jsmitchell (Wed, 08 Nov 2017 17:54:56 GMT):
obviously, replace the value of -t with whatever host:port is running your sawtooth rest api

grkvlt (Wed, 08 Nov 2017 17:57:45 GMT):
awesome! that seems to be working perfectly, thanks guys

grkvlt (Wed, 08 Nov 2017 17:58:26 GMT):
```Input: smallbank.batches Target: http://sawtooth01:8080 Rate: 1 target: http://sawtooth01:8080 target rate: 1 count: 1 effective rate: 9.396461076639932 per sec target: http://sawtooth01:8080 target rate: 1 count: 2 effective rate: 1.0695991950513057 per sec target: http://sawtooth01:8080 target rate: 1 count: 3 effective rate: 0.9997318958990853 per sec target: http://sawtooth01:8080 target rate: 1 count: 4 effective rate: 1.0002537353653038 per sec target: http://sawtooth01:8080 target rate: 1 count: 5 effective rate: 0.996880866435177 per sec target: http://sawtooth01:8080 target rate: 1 count: 6 effective rate: 0.9955984760625018 per sec ```

jsmitchell (Wed, 08 Nov 2017 17:59:30 GMT):
sweet!

jsmitchell (Wed, 08 Nov 2017 17:59:50 GMT):
the cool thing about this is that it's totally reproduceable

jsmitchell (Wed, 08 Nov 2017 17:59:57 GMT):
even between platforms

grkvlt (Wed, 08 Nov 2017 18:00:40 GMT):
yep, that's what i'm interested in - i want to do some tests on various configurations of sawtooth to get a feel for the way our production deployment should be structured.

grkvlt (Wed, 08 Nov 2017 18:01:17 GMT):
do you know if there's any sort of sizing guide for deployments in the docs anywhere? i couldn't find much about it yet...

oatmealraisin (Wed, 08 Nov 2017 18:01:41 GMT):
I figured out the issue. It doesn't seem like the default transaction processors (intkey, settings, xo) retry connecting to the validator

oatmealraisin (Wed, 08 Nov 2017 18:01:53 GMT):
So if the validator isn't ready when they all get spun up, they will hang

oatmealraisin (Wed, 08 Nov 2017 18:02:02 GMT):
Is there any way to have them retry on interval?

jsmitchell (Wed, 08 Nov 2017 18:03:36 GMT):
@oatmealraisin they should all retry/reconnect

jsmitchell (Wed, 08 Nov 2017 18:03:51 GMT):
if they are not, then that is a bug

jsmitchell (Wed, 08 Nov 2017 18:04:15 GMT):
@grkvlt what's the use case?

grkvlt (Wed, 08 Nov 2017 18:24:30 GMT):
@jsmitchell we're trying to build a cryptocurrency, using sawtooth for permissioned blockchain and seth for evm smart contracts

jsmitchell (Wed, 08 Nov 2017 18:29:34 GMT):
cool!

grkvlt (Wed, 08 Nov 2017 18:42:10 GMT):
hm, those smallbank transactions don't seem to get committed... i configured `sawtooth.validator.transaction_families` to include `smallbank` but i see 100 batches pending on grafana?

grkvlt (Wed, 08 Nov 2017 18:42:10 GMT):
hm, those smallbank transactions don't seem to get committed... i configured `sawtooth.validator.transaction_families` to include `smallbank` but i just see 100 batches pending on grafana?

jsmitchell (Wed, 08 Nov 2017 18:42:36 GMT):
did you start up a smallbank transaction processor?

jsmitchell (Wed, 08 Nov 2017 18:43:28 GMT):
if you look at the validator logs, you should either see a line about the smallbank transaction processor registering, or you should see a line about 'waiting for the transaction processor' when it tries to process the first smallbank transaction

grkvlt (Wed, 08 Nov 2017 18:43:40 GMT):
yes, docker shows it running. i'll check the logs ```fd20d302cdae scotcoin/sawtooth-smallbank-tp-go:latest "smallbank-tp-go -..." 15 minutes ago Up 15 minutes 4004/tcp smallbanklocalnode_smallbank-tp-go_1 ```

grkvlt (Wed, 08 Nov 2017 18:45:39 GMT):
```validator | [2017-11-08 18:27:10.075 INFO processor_handlers] registered transaction processor: connection_id=fe5f1969be546d213c039450ce4552f1ebb88eece356ad236a412c7f5edf29f75a434c21ff7a64f974d4dddb3aa57734e6bfc4c101c67a2e064d933bb1b4c7cc, family=smallbank, version=1.0, encoding=application/protobuf, namespaces=['332514'] smallbank-tp | 2017/11/08 18:27:10.079338 processor.go:355: [INFO] Successfully registered handler (smallbank, 0x494190, application/protobuf, [332514]) ```

grkvlt (Wed, 08 Nov 2017 18:45:54 GMT):
this looks like what you are talking about?

jsmitchell (Wed, 08 Nov 2017 18:45:57 GMT):
yep

jsmitchell (Wed, 08 Nov 2017 18:46:04 GMT):
that's all good

jsmitchell (Wed, 08 Nov 2017 18:46:44 GMT):
what do the validator logs say once transactions start coming in?

grkvlt (Wed, 08 Nov 2017 18:47:28 GMT):
ah, there's a bunch of POSTs to `/batches` but then there's a 504 error, looks like ```rest-api | [2017-11-08 18:40:44.356 INFO helpers] POST /batches HTTP/1.1: 202 status, 192 size, in 0.007825 s rest-api | [2017-11-08 18:40:45.358 INFO helpers] POST /batches HTTP/1.1: 202 status, 192 size, in 0.007745 s rest-api | [2017-11-08 18:40:46.360 INFO helpers] POST /batches HTTP/1.1: 202 status, 192 size, in 0.008734 s rest-api | [2017-11-08 18:41:21.154 INFO helpers] GET /state?address=000000 HTTP/1.1: 200 status, 1198 size, in 0.008904 s rest-api | [2017-11-08 18:41:28.610 INFO helpers] -: 504 status, 182 size, in 0.000260 s ```

grkvlt (Wed, 08 Nov 2017 18:47:45 GMT):
that last line seems wrong

jsmitchell (Wed, 08 Nov 2017 18:48:30 GMT):
any validator log messages associated with batch verification and block processing?

grkvlt (Wed, 08 Nov 2017 18:49:16 GMT):
in the debug log i see this: ```[18:40:26.422 [Thread-45] executor DEBUG] failing transaction 58fb6f470cc17d44d4b935eeb7a7d95443aa209328ce114799ce4b8f6dc5c0800a4178b386b3b3e5ac69fdf8dee8301195f181d702f7475d97b6986d7f9d4c32 of type (name=smallbank,version=1.0,encoding=) since it isn't required in the configuration [18:40:26.423 [_PublisherThread] publisher DEBUG] Batch 87d47f6570616901c81df5d405d2cad37ee0d49782f47b2e2ddeb9be118ffa9e695b9e6634b51be43f0b5dbf5e25dbcb8122615fa56137f4419c8f9788c3ff6d invalid, not added to block. [18:40:26.423 [_PublisherThread] publisher DEBUG] Abandoning block (2, S:, P:825416f7): no batches added [18:40:27.315 [InterconnectThread-1] interconnect DEBUG] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 6969 bytes [18:40:27.318 [Thread-10] interconnect DEBUG] ServerThread sending GOSSIP_MESSAGE to b'9d3d70d02ccdda86e1ada64-943486893c776fc9090e630' [18:40:27.318 [Thread-10] interconnect DEBUG] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'48a7fa406a3641e1' ```

boydjohnson (Wed, 08 Nov 2017 18:50:39 GMT):
That looks like it is missing the encoding.

grkvlt (Wed, 08 Nov 2017 18:50:55 GMT):
strange, i set that in the configuration

jsmitchell (Wed, 08 Nov 2017 18:50:58 GMT):
encoding was removed in a recent change

jsmitchell (Wed, 08 Nov 2017 18:51:09 GMT):
@pschwarz @agunde ^

jsmitchell (Wed, 08 Nov 2017 18:52:07 GMT):
@grkvlt you can actually leave the sawtooth.validator.transaction_families setting empty - the default behavior is to allow any transaction type unless that list is set.

grkvlt (Wed, 08 Nov 2017 18:52:42 GMT):
good to know

grkvlt (Wed, 08 Nov 2017 18:56:29 GMT):
is there a way of interrogating sawtooth as to the current state of the 0mq network, i.e. how many validators, txn processors etc and where they are/what they are doing?

grkvlt (Wed, 08 Nov 2017 18:57:38 GMT):
also, do i need a _Validator Registry Transaction Family_ processor configured?

maoxine (Wed, 08 Nov 2017 19:30:15 GMT):
@boydjohnson thanks so much, i really appreciate it.

boydjohnson (Wed, 08 Nov 2017 19:30:29 GMT):
No problem, @maoxine

maoxine (Wed, 08 Nov 2017 19:33:49 GMT):
@boydjohnson although do you know about whether the docker implementation is easy to use because i don't have ubuntu, only centos and I'm not sure my ubuntu virtual machine has enough memory for sawtooth?

boydjohnson (Wed, 08 Nov 2017 19:34:44 GMT):
yeah, docker is easy to use with sawtooth.

maoxine (Wed, 08 Nov 2017 19:35:15 GMT):
@boydjohnson okay thanks, i shall stop bothering you

boydjohnson (Wed, 08 Nov 2017 19:35:40 GMT):
No problem. Come back if you need more pointers or have results to share.

jsmitchell (Wed, 08 Nov 2017 20:44:23 GMT):
@grkvlt you need validator registry if you are running poet

jsmitchell (Wed, 08 Nov 2017 20:44:35 GMT):
which you should be if you are running multiple validators

jsmitchell (Wed, 08 Nov 2017 20:44:56 GMT):
also I know @agunde is currently working on being able to query peering state

grkvlt (Wed, 08 Nov 2017 20:45:49 GMT):
@jsmitchell thx, so i don't need it yet. i have got the transactions being committed from the workload generator now, too - i had to update my docker images i was using, and then everything was ok and the commands you gave me worked perfectly

jsmitchell (Wed, 08 Nov 2017 20:46:20 GMT):
nice

srongzhe (Thu, 09 Nov 2017 00:51:37 GMT):
Has joined the channel.

yoni (Thu, 09 Nov 2017 11:08:20 GMT):
Has joined the channel.

grkvlt (Thu, 09 Nov 2017 14:27:48 GMT):
hi there. it looks like commit https://github.com/hyperledger/sawtooth-core/commit/c3c5bfeda36af7883e034c39f33f6e9260c95c41 removed some message types (`STATE_DELTA_SUBSCRIBE_REQUEST` in particular) that are required/used by the supply-chain demo app - https://github.com/hyperledger/sawtooth-supply-chain/blob/db43a730e8d7f9867d71a0daa877a1ff7702176a/server/blockchain/index.js#L53 - is there a simple replacement for these messages that i could use?

amundson (Thu, 09 Nov 2017 14:30:01 GMT):
@grkvit supply chain is currently using sawtooth-core 0.8 (the 0-8 branch or published docker images)

amundson (Thu, 09 Nov 2017 14:30:40 GMT):
the state delta subscription messages were replaced by the event subsystem and related messages

msg2muthu (Thu, 09 Nov 2017 14:33:03 GMT):
Hi, I am able to get response for blocks in client container (rest-api), but no responses from host machine using "curl http://localhost:8080/blocks" in my Windows system. Could you please help me to fix this issue so that i will be able to run few examples. Thanks in advance.

kelly_ (Thu, 09 Nov 2017 14:52:55 GMT):
@msg2muthu are you running your validator in a docker or natively

kelly_ (Thu, 09 Nov 2017 14:53:43 GMT):
maybe try curl http://rest_api:8080/blocks

grkvlt (Thu, 09 Nov 2017 14:56:16 GMT):
yes, i just realised that. i might use this as a way for me to get up to speed on using the Sawtooth APIs then, and update the app for the latest version...!

amundson (Thu, 09 Nov 2017 14:57:01 GMT):
@grkvlt if you do make progress on that, we can branch sawtooth-supply-chain and put the 0.8 version in a 0-8 branch

grkvlt (Thu, 09 Nov 2017 14:57:24 GMT):
ok, will let you know how i get on @amundson

amundson (Thu, 09 Nov 2017 14:57:53 GMT):
@adamludvik and @pschwarz are event experts

amundson (Thu, 09 Nov 2017 14:58:06 GMT):
not to call them out or anything, but it's true

grkvlt (Thu, 09 Nov 2017 14:58:29 GMT):
;) thanks, i'm only just getting started using Sawtooth so help is appreciated

msg2muthu (Thu, 09 Nov 2017 15:10:28 GMT):
@kelly_ Thanks for your response, http://rest_api:8080/blocks is working fine inside client container (root@5eb33ce27fcf:/# ) only, curl http://localhost:8080/blocks is working in VM ([vagrant@localhost ~]$), none of them is working from host machine (msg2muthu@DT-12344241 MINGW64 ~).

msg2muthu (Thu, 09 Nov 2017 15:10:28 GMT):
i did not strike the content, i think editor strike through, pls consider that statement too.

msg2muthu (Thu, 09 Nov 2017 15:12:26 GMT):
@kelly_ Thanks for your response.

msg2muthu (Thu, 09 Nov 2017 15:15:46 GMT):
@kelly_ Thanks for your response. http://rest-api:8080/blocks is working in Client Container [root@5eb33ce27fcf:/#], http://localhost:8080/blocks is working in VM [vagrant@localhost ~], none of them is working in host machine [msg2muthu@DT-12344241 MINGW64 ~].

GhadiShayban (Thu, 09 Nov 2017 15:49:52 GMT):
#headsup @pschwarz https://jira.hyperledger.org/browse/STL-849 I'll add debug logs to that shortly.

pschwarz (Thu, 09 Nov 2017 15:50:41 GMT):
Thanks

pschwarz (Thu, 09 Nov 2017 15:51:15 GMT):
Is that against master/nightlies? Or 0.8?

GhadiShayban (Thu, 09 Nov 2017 15:51:48 GMT):
0.8.9

pschwarz (Thu, 09 Nov 2017 15:51:57 GMT):
:thumbsup:

GhadiShayban (Thu, 09 Nov 2017 15:56:33 GMT):
updated it with logs @pschwarz

anton_petrashkevich (Thu, 09 Nov 2017 16:25:40 GMT):
How to switch for POS\DPOS consensus? Write my own? Have anyone done that already?

msg2muthu (Thu, 09 Nov 2017 16:31:40 GMT):
can i get response for /blocks from host machine or am i understanding incorrectly from "Use curl to confirm that you can connect to the REST API from the host. Enter the following command from the terminal window for your host system": please guide me.

GhadiShayban (Thu, 09 Nov 2017 16:37:21 GMT):
I'm not sure if this is related to the Websocket bug earlier, but it appears that the REST API gets hung upon from the validator frequently. Is there a known issue?

pschwarz (Thu, 09 Nov 2017 16:51:44 GMT):
Depends on the endpoint you're calling

pschwarz (Thu, 09 Nov 2017 16:52:21 GMT):
We have some performance issues with some of the listing endpoints, that may seem like it's hanging, depending on the size of your chain/

pschwarz (Thu, 09 Nov 2017 16:52:21 GMT):
We have some performance issues with some of the listing endpoints, that may seem like it's hanging, depending on the size of your chain

pschwarz (Thu, 09 Nov 2017 16:52:55 GMT):
A fix for block listing just went into master ~20min ago

pschwarz (Thu, 09 Nov 2017 16:53:23 GMT):
If it's other endpoints, it maybe a new issue

hhimanshu (Thu, 09 Nov 2017 16:53:52 GMT):
Has left the channel.

GhadiShayban (Thu, 09 Nov 2017 17:44:48 GMT):
just calling /batches

pschwarz (Thu, 09 Nov 2017 18:10:16 GMT):
Batches falls into that listing category

kelly_ (Thu, 09 Nov 2017 18:22:17 GMT):
@amundson do you know how to curl a rest api from the host that is operating in a vagrant VM?

kelly_ (Thu, 09 Nov 2017 18:22:27 GMT):
do you need to somehow pipe those ports out to the host

kelly_ (Thu, 09 Nov 2017 18:22:41 GMT):
@anton_petrashkevich we do not have pos/dpos, you would need to write your own

kelly_ (Thu, 09 Nov 2017 18:24:20 GMT):
@msg2muthu in your vagrant file there is a way to setup port forwarding

kelly_ (Thu, 09 Nov 2017 18:24:36 GMT):
https://www.vagrantup.com/docs/networking/forwarded_ports.html

kelly_ (Thu, 09 Nov 2017 18:25:57 GMT):
config.vm.network "forwarded_port", guest:8880, host: 8080, host_ip: "127.0.0.1"

kelly_ (Thu, 09 Nov 2017 18:26:00 GMT):
like that

GhadiShayban (Thu, 09 Nov 2017 19:11:04 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=KkDgq6mPvYCAXf7fd) @pschwarz interesting -- the size of the chain is brand new in this case

msg2muthu (Thu, 09 Nov 2017 19:25:24 GMT):
@kelly_ I tired same earlier as mentioned in the link as guest: 80 instead of guest:8080. Let me try with guest: 8080.

msg2muthu (Thu, 09 Nov 2017 19:44:09 GMT):
@kelly_ Thanks Kelly!!! It worked after port changed for guest to 8080.

kelly_ (Thu, 09 Nov 2017 19:45:18 GMT):
nice!

pschwarz (Thu, 09 Nov 2017 20:47:21 GMT):
Hmm. Does it have the same timeout issue?

tommling (Thu, 09 Nov 2017 21:27:33 GMT):
Hey fam, I'm bumping into a possible bug. A brief summary of the situation: In intkey txn family I am sending two batches, the first batch contains only a single 'set' transaction to initialize a state. The second batch I submit contains two transactions, one of which, I am sure refers to a valid state, the second state referenced is the state being set in the first batch. Below is are deets ^^ *System specs: Ubuntu 16.04, Running ST 0.8.9, * *Stack Trace:* ``` sawtooth-validator-default | [21:17:41.230 ERROR _base] exception calling callback for sawtooth-validator-default | Traceback (most recent call last): sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks sawtooth-validator-default | callback(self) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/dispatch.py", line 117, in _determine_next sawtooth-validator-default | if future.result().status == HandlerStatus.DROP: sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 398, in result sawtooth-validator-default | return self.__get_result() sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result sawtooth-validator-default | raise self._exception sawtooth-validator-default | File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run sawtooth-validator-default | result = self.fn(*self.args, **self.kwargs) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 106, in handle sawtooth-validator-default | response = self._respond(request) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 599, in _respond sawtooth-validator-default | statuses_dict, request.batch_ids, self._batch_tracker) sawtooth-validator-default | File "/usr/lib/python3/dist-packages/sawtooth_validator/state/client_handlers.py", line 496, in _format_batch_statuses sawtooth-validator-default | txn_info['transaction_id'] = txn_info.pop('id') sawtooth-validator-default | KeyError: 'id' ```

tommling (Thu, 09 Nov 2017 21:28:03 GMT):
note, I am submitting these batches synchronously

franckjhonatan (Fri, 10 Nov 2017 00:39:05 GMT):
Has joined the channel.

franckjhonatan (Fri, 10 Nov 2017 00:39:52 GMT):
Some know some video tutorial for deploy a simple application?

franckjhonatan (Fri, 10 Nov 2017 00:41:12 GMT):
now i am started with Ubuntu 16.4 the version 0.81

pradeeppadmarajaiah (Fri, 10 Nov 2017 11:46:24 GMT):
Has joined the channel.

grkvlt (Fri, 10 Nov 2017 12:47:52 GMT):
i had an idea that i might be able to deduce the validator/txn processor mesh network structure by querying 0MQ directly, has anyone @here done that or thinks its possible? there's a `GET_PEERS` message i could call recursively until it's mapped (using some graph traversal djikstra magic) maybe?

grkvlt (Fri, 10 Nov 2017 12:48:28 GMT):
or is there an easier way i'm missing?

jsmitchell (Fri, 10 Nov 2017 14:28:31 GMT):
@grkvlt https://github.com/hyperledger/sawtooth-core/pull/1091

jsmitchell (Fri, 10 Nov 2017 14:30:54 GMT):
you'll need to start with knowledge of the nodes in the network

jsmitchell (Fri, 10 Nov 2017 14:31:38 GMT):
otherwise, if you want to start from one node, you'll need to iteratively visit unvisited nodes you discover via those endpoints

jsmitchell (Fri, 10 Nov 2017 14:32:37 GMT):
but, if you've deployed them, just call that endpoint on each and build the graph

NicoPretorius (Fri, 10 Nov 2017 14:45:46 GMT):
Has joined the channel.

grkvlt (Fri, 10 Nov 2017 15:19:57 GMT):
nice, i'll give that a try. in my architecture i'll always know the location of the core cluster of nodes, so i can start from there...

msg2muthu (Fri, 10 Nov 2017 15:59:07 GMT):
Hi, I am trying to run Sawtooth Education project (https://github.com/hyperledger/education/tree/master/LFS171x/sawtooth-material) mentioned in the Course. I ran Validator using yaml provided and starting processor (npm start). But Transaction Processor is not getting registered with Validator. I am getting error "no transaction processor found" when i create user in Client UI. (Environment : Windows, Docker. Vagrant) Please guide me.

boydjohnson (Fri, 10 Nov 2017 16:02:08 GMT):
The npm command and the docker-compose are both being run in Vagrant?

brighty73 (Fri, 10 Nov 2017 16:03:49 GMT):
Has joined the channel.

msg2muthu (Fri, 10 Nov 2017 16:04:44 GMT):
@boydjohnson yes both are running in Vagrant.

boydjohnson (Fri, 10 Nov 2017 16:09:57 GMT):
@msg2muthu What output does `netstat -tp` give you?

brighty73 (Fri, 10 Nov 2017 16:10:07 GMT):
hi. I'm new to Sawtooth. Trying to compile the java examples and java SDK but seem to be missing the sawtooth.sdk.protobuf libraries. How can I get them ?

msg2muthu (Fri, 10 Nov 2017 16:11:33 GMT):
@boydjohnson where do i need to run this command, in client container or vagrant?

boydjohnson (Fri, 10 Nov 2017 16:11:56 GMT):
Hey @brighty73 The pom.xml for the java sdk expects the there to be a directory at /project/sawtooth-core/protos with the proto files. If you are building the java sdk outside of an environment with this you can update the pom.xml.

boydjohnson (Fri, 10 Nov 2017 16:12:03 GMT):
In vagrant.

boydjohnson (Fri, 10 Nov 2017 16:12:09 GMT):
@msg2muthu ^

brighty73 (Fri, 10 Nov 2017 16:13:30 GMT):
Let me see - was initially trying to just compile the XO_Java - but POM file could not get SDK libraries - so then tried to get the full SDK and compile it ( but it failed )

boydjohnson (Fri, 10 Nov 2017 16:14:57 GMT):
@brighty73 There should be a build script in sawtooth-core/bin that installs the sdk with maven before building the xo example. `sawtooth-core/bin/build_java_xo`.

msg2muthu (Fri, 10 Nov 2017 16:16:42 GMT):
@boydjohnson i am getting below output [vagrant@localhost ~]$ netstat -tp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost.localdoma:ssh gateway:61929 ESTABLISHED - tcp 0 0 localhost.localdoma:ssh gateway:61915 ESTABLISHED - tcp 0 0 localhost.localdoma:ssh gateway:61913 ESTABLISHED - [vagrant@localhost ~]$

boydjohnson (Fri, 10 Nov 2017 16:17:45 GMT):
I am unsure. @zac has more experience with the js sdk.

msg2muthu (Fri, 10 Nov 2017 16:19:02 GMT):
Thanks @boydjohnson . @zac could you pls check that?

brighty73 (Fri, 10 Nov 2017 16:20:28 GMT):
thanks - will give build script a try - thanks for your help

msg2muthu (Fri, 10 Nov 2017 16:20:48 GMT):
@zac below is the npm start output [vagrant@localhost ~]$ cd seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor/ [vagrant@localhost ~/seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor (master)]$ npm start 6: Pulling from node Digest: sha256:72dd1fefd15a3313e69871559c2198be107dd67ba81d8bf2973576e903496760 Status: Image is up to date for dt-00003646.corp.seic.com:5000/node:6 > Sawtooth-tuna-chain-processor@0.0.0 start /usr/src/app > node index.js Initializing JSON handler for Sawtooth Tuna Chain

msg2muthu (Fri, 10 Nov 2017 16:20:48 GMT):
@zac below is the npm start output [vagrant@localhost ~]$ cd seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor/ [vagrant@localhost ~/seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor (master)]$ npm start 6: Pulling from node Digest: sha256:72dd1fefd15a3313e69871559c2198be107dd67ba81d8bf2973576e903496760 Status: Image is up to date for dt-12343646.abcxyzcom:5000/node:6 > Sawtooth-tuna-chain-processor@0.0.0 start /usr/src/app > node index.js Initializing JSON handler for Sawtooth Tuna Chain

zac (Fri, 10 Nov 2017 16:22:18 GMT):
I feel a number of steps behind

agunde (Fri, 10 Nov 2017 16:22:19 GMT):
@brighty73 I think you need to run `sawtooth-core/bin/build_java_sdk` and then `sawtooth-core/bin/build_java_xo`.

zac (Fri, 10 Nov 2017 16:22:28 GMT):
This is a custom Transaction PRocessor written in JS?

msg2muthu (Fri, 10 Nov 2017 16:25:09 GMT):
@zac No, it is example of transfer-chain TP from Sawtooth Tuna Chain

zac (Fri, 10 Nov 2017 16:27:53 GMT):
I have no idea what this Tuna Chain thing is, but I keep getting asked about it . . .

zac (Fri, 10 Nov 2017 16:28:00 GMT):
This is from the edx course?

msg2muthu (Fri, 10 Nov 2017 16:31:02 GMT):
yes, it is in edx course, course has steps too. i tried same in my Mac, it is working fine. Issue is in Windows/Vagrant only.

brighty73 (Fri, 10 Nov 2017 16:32:53 GMT):
thanks agunde & boydjohnson - got it compiled in Eclipse

zac (Fri, 10 Nov 2017 16:41:14 GMT):
Well, it uses a hard-coded validator url: https://github.com/hyperledger/education/blob/master/LFS171x/sawtooth-material/sawtooth-tuna/processor/index.js#L14

zac (Fri, 10 Nov 2017 16:41:34 GMT):
If it is running in a different Docker container than the Validator, I suspect this busted it

msg2muthu (Fri, 10 Nov 2017 16:48:41 GMT):
@zac i see two listener 4004 and 8800. pls see the log from docker-compose below. sawtooth-validator-default | [2017-11-10 16:12:52.531 DEBUG core] txn receipt store file is /var/lib/sawtooth/txn_receipts-00.lmdb sawtooth-validator-default | [2017-11-10 16:12:52.542 DEBUG core] block store file is /var/lib/sawtooth/block-00.lmdb sawtooth-validator-default | [2017-11-10 16:12:52.548 DEBUG selector_events] Using selector: ZMQSelector sawtooth-validator-default | [2017-11-10 16:12:52.554 INFO interconnect] Listening on tcp://eth0:4004 sawtooth-validator-default | [2017-11-10 16:12:52.554 DEBUG dispatch] Added send_message function for connection ServerThread sawtooth-validator-default | [2017-11-10 16:12:52.791 DEBUG selector_events] Using selector: ZMQSelector sawtooth-validator-default | [2017-11-10 16:12:52.792 INFO interconnect] Listening on tcp://eth0:8800 sawtooth-validator-default | [2017-11-10 16:12:52.792 DEBUG dispatch] Added send_message function for connection ServerThread sawtooth-validator-default | [2017-11-10 16:12:52.792 DEBUG dispatch] Added send_last_message function for connection ServerThread Will it be helpful?

zac (Fri, 10 Nov 2017 16:49:16 GMT):
the port isn't the problem

zac (Fri, 10 Nov 2017 16:49:30 GMT):
each Docker container has its own `localhost`

zac (Fri, 10 Nov 2017 16:49:57 GMT):
`localhost` in the TP container is not the same as in the validator container

msg2muthu (Fri, 10 Nov 2017 16:50:50 GMT):
i had similar problem earlier with 8080 which is nor forwarding to host. so i have added forward_host in Vagrant file. it worked. do i need to do same thing like this?

zac (Fri, 10 Nov 2017 16:51:14 GMT):
If they are all getting set up in the same docker-compose file, Docker will expose the containers to each other using the key the container is under

zac (Fri, 10 Nov 2017 16:51:53 GMT):
i.e. `tcp://validator:4004`, `http://rest-api:8080`

zac (Fri, 10 Nov 2017 16:52:26 GMT):
(not sure if that's what the names are in your compose file)

msg2muthu (Fri, 10 Nov 2017 16:53:25 GMT):
i have these as follows sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \

zac (Fri, 10 Nov 2017 16:55:35 GMT):
what's the compose file you're using?

LEscobar-Driver (Fri, 10 Nov 2017 17:33:35 GMT):
Has joined the channel.

LEscobar-Driver (Fri, 10 Nov 2017 17:33:41 GMT):
hello everyone

LEscobar-Driver (Fri, 10 Nov 2017 17:33:44 GMT):
i have a question

LEscobar-Driver (Fri, 10 Nov 2017 17:34:10 GMT):
when I attempt to run my sawtooth-default.yaml file that you download

LEscobar-Driver (Fri, 10 Nov 2017 17:34:14 GMT):
I keep getting this error

LEscobar-Driver (Fri, 10 Nov 2017 17:34:28 GMT):
ERROR: Version in "./sawtooth-default.yaml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1. For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

LEscobar-Driver (Fri, 10 Nov 2017 17:34:34 GMT):
anyone know what this is about

LEscobar-Driver (Fri, 10 Nov 2017 17:34:41 GMT):
im on linux ubuntu

boydjohnson (Fri, 10 Nov 2017 17:38:09 GMT):
@LEscobar-Driver What is the `docker-compose` version? It seems like your docker or docker-compose libraries are out of date.

LEscobar-Driver (Fri, 10 Nov 2017 17:39:57 GMT):
docker-compose version 1.8.0, build unknown docker-py version: 1.9.0 CPython version: 2.7.12 OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016

LEscobar-Driver (Fri, 10 Nov 2017 17:40:32 GMT):
that is that I keep reading on forums

LEscobar-Driver (Fri, 10 Nov 2017 17:40:40 GMT):
however, I see no updates for any of my files

LEscobar-Driver (Fri, 10 Nov 2017 17:40:49 GMT):
i uninstalled and reinstalled as well

grkvlt (Fri, 10 Nov 2017 17:45:46 GMT):
what does `[_PublisherThread] publisher INFO] Block publishing is suspended until new chain head arrives.` mean?

grkvlt (Fri, 10 Nov 2017 17:46:28 GMT):
i have two vms, with a rest-api, validator and settings-tp on one and a validator,settings-tp and smallbank-tp on the other

grkvlt (Fri, 10 Nov 2017 17:47:09 GMT):
submitting txns to the rest api on the first vm causes them to be processed by the smallbank-tp on the second, so networking and 0mq is working

grkvlt (Fri, 10 Nov 2017 17:47:26 GMT):
but if i go to `/transactions` on the rest api at the first vm, i see nothing?

grkvlt (Fri, 10 Nov 2017 17:48:13 GMT):
i am initialising the validator like this on the first node: ``` sawtooth admin keygen --force && \ sawtooth keygen scotcoin --force && \ sawtooth config genesis -k /etc/sawtooth/keys/validator.priv -o genesis.batch && \ sawtooth admin genesis genesis.batch && \

grkvlt (Fri, 10 Nov 2017 17:48:13 GMT):
i am initialising the validator like this on the first node: ``` sawtooth admin keygen --force && \ sawtooth keygen scotcoin --force && \ sawtooth config genesis -k /etc/sawtooth/keys/validator.priv -o genesis.batch && \ sawtooth admin genesis genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator.sawtooth:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --peering dynamic \ --opentsdb-url http://influxdb.sawtooth:8086 \ --opentsdb-db metrics ``` and on the second like this: ``` sawtooth admin keygen --force && \ sawtooth keygen --force && \ sawtooth-validator -vv \ --endpoint tcp://${NODE}.sawtooth:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --peering dynamic \ --peers tcp://validator.sawtooth:8800 \ --seed tcp://validator.sawtooth:8800 \ --opentsdb-url http://influxdb.sawtooth:8086 \ --opentsdb-db metrics ```

grkvlt (Fri, 10 Nov 2017 17:50:05 GMT):
should i be copying something over to the second node?

LEscobar-Driver (Fri, 10 Nov 2017 17:51:03 GMT):
btw my docker version is this

LEscobar-Driver (Fri, 10 Nov 2017 17:51:04 GMT):
Docker version 17.09.0-ce, build afdb6d4

LEscobar-Driver (Fri, 10 Nov 2017 17:51:12 GMT):
i think it is out of date

LEscobar-Driver (Fri, 10 Nov 2017 17:51:14 GMT):
perhaps

LEscobar-Driver (Fri, 10 Nov 2017 17:52:53 GMT):
I know my docker install works though because hello-world is working

LEscobar-Driver (Fri, 10 Nov 2017 18:05:18 GMT):
nvm fixed it

LEscobar-Driver (Fri, 10 Nov 2017 18:05:23 GMT):
the fix is this

LEscobar-Driver (Fri, 10 Nov 2017 18:05:34 GMT):
go into your sawtooth-default.yaml file

LEscobar-Driver (Fri, 10 Nov 2017 18:05:45 GMT):
change the version from "2.1" to "2"

LEscobar-Driver (Fri, 10 Nov 2017 18:05:48 GMT):
worked for me

msg2muthu (Fri, 10 Nov 2017 18:43:43 GMT):
@zac i am using this file https://github.com/hyperledger/education/blob/master/LFS171x/sawtooth-material/sawtooth-default.yaml

zac (Fri, 10 Nov 2017 18:56:00 GMT):
How are you running the transaction processor? From a separate Docker container?

zac (Fri, 10 Nov 2017 18:58:38 GMT):
Is there a docker compose file for that, or are you running it from the command line?

msg2muthu (Fri, 10 Nov 2017 18:59:33 GMT):
same container, different terminal window. yes i am running from command line. drwxrwxrwx 1 vagrant vagrant 0 Nov 6 14:28 sawtooth-tuna [vagrant@localhost ~/seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material (master)]$ docker-compose -f sawtooth-default.yaml up Creating network "sawtoothmaterial_default" with the default driver Creating sawtooth-validator-default ... Creating sawtooth-validator-default ... done

agunde (Fri, 10 Nov 2017 19:00:28 GMT):
@grkvlt both validators need to have the same transaction processors, as they both will validate the transactions.

MicBowman (Fri, 10 Nov 2017 19:10:17 GMT):
is there any support for using vagrant to install sgx dev tools?

zac (Fri, 10 Nov 2017 19:12:38 GMT):
@msg2muthu The tuna processor is not in that compose file

zac (Fri, 10 Nov 2017 19:13:35 GMT):
docker-compose up would not start the processor with that file

zac (Fri, 10 Nov 2017 19:13:55 GMT):
I need to know how your start it to determine what the validator url should be

grkvlt (Fri, 10 Nov 2017 19:26:46 GMT):
@agunde that's interesting, i don't think i'd realised that was the way it worked - it's not explained very explicitly in the docs how to set up multi-node blockchain infra ;(

msg2muthu (Fri, 10 Nov 2017 19:26:59 GMT):
@zac when i ran "npm start" from other terminal in ( projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor) Mac, Tuna Processor (Family: transfer-chain) is getting registered. i see in log. It is not registered from Vagrant in Windows.

jsmitchell (Fri, 10 Nov 2017 19:27:20 GMT):
@rbuysse see @MicBowman 's question above. What is the build tooling for the poet sgx packages? Docker?

msg2muthu (Fri, 10 Nov 2017 19:29:00 GMT):
@zac i guess validator URL would be const VALIDATOR_URL = 'tcp://localhost:4004' which is in index.js

zac (Fri, 10 Nov 2017 19:29:53 GMT):
@msg2muthu Okay, I think I see now. You have the sawtooth-core components running in Docker. The tuna-processor is _not_ running in Docker, but is running in Vagrant in Windows. Are the core-components running in Docker in Vagrant, or in Docker on your Windows machine?

rbuysse (Fri, 10 Nov 2017 19:30:08 GMT):
@MicBowman @jsmitchell I'm not sure what the development environment looks like, I've only been working with building artifacts.

rbuysse (Fri, 10 Nov 2017 19:30:26 GMT):
all the dependencies for building are in a common docker image right now https://github.com/hyperledger/sawtooth-core/blob/master/ci/sawtooth-build-debs

jsmitchell (Fri, 10 Nov 2017 19:30:42 GMT):
that includes the sgx stuff?

jsmitchell (Fri, 10 Nov 2017 19:31:05 GMT):
ah, i see it

jsmitchell (Fri, 10 Nov 2017 19:31:09 GMT):
``` RUN wget https://download.01.org/intel-sgx/linux-1.8/sgx_linux_ubuntu16.04.1_x64_sdk_1.8.100.37689.bin && \ chmod +x sgx_linux_ubuntu16.04.1_x64_sdk_1.8.100.37689.bin && \ echo "yes" | ./sgx_linux_ubuntu16.04.1_x64_sdk_1.8.100.37689.bin && \ . /tmp/sgxsdk/environment && \ export SGXSDKInstallPath=/tmp/sgxsdk/ ```

MicBowman (Fri, 10 Nov 2017 19:34:30 GMT):
that doesn't get installed when using vagrant and the vagrantfile in tools?

jsmitchell (Fri, 10 Nov 2017 19:36:02 GMT):
@MicBowman I don't believe so, no

MicBowman (Fri, 10 Nov 2017 19:36:30 GMT):
so do the build tools build the enclave?

msg2muthu (Fri, 10 Nov 2017 19:36:35 GMT):
(../education/LFS171x/sawtooth-material/docker-compose ), so core components (Validators) is running in Docker in Vagrant, but npm start is running from Vagrant itself.

msg2muthu (Fri, 10 Nov 2017 19:36:56 GMT):
@zac ^

zac (Fri, 10 Nov 2017 19:38:01 GMT):
So, from within Vagrant, with the components running in Docker, what happens if you `curl localhost:8080/blocks`?

rbuysse (Fri, 10 Nov 2017 19:38:45 GMT):
@MicBowman yes. the relevant portion of the build script starts here: https://github.com/hyperledger/sawtooth-core/blob/master/bin/build_debs#L113

msg2muthu (Fri, 10 Nov 2017 19:39:47 GMT):
@zac i am getting response for this command } ], "head": "18aaee7d614aaa79b365dc03b494cd346d0637d2bbbb59fda2cc4adfe72788055fcc1446342be2f2f939d582ee1fea244c8ee98e241dedf9c516066b91066c84", "link": "http://localhost:8080/blocks?head=18aaee7d614aaa79b365dc03b494cd346d0637d2bbbb59fda2cc4adfe72788055fcc1446342be2f2f939d582ee1fea244c8ee98e241dedf9c516066b91066c84", "paging": { "start_index": 0, "total_count": 1 }

zac (Fri, 10 Nov 2017 19:40:47 GMT):
well, the REST API is able to talk to your Vagrant at least

zac (Fri, 10 Nov 2017 19:41:21 GMT):
but then you `npm start` in the processor directory and the processor does not connect to your validator?

MicBowman (Fri, 10 Nov 2017 19:41:28 GMT):
@rbuysse i'm going through the dev install docs & i'm having a bunch of errors... buildall fails immediately

zac (Fri, 10 Nov 2017 19:41:38 GMT):
(and otherwise starts properly)

msg2muthu (Fri, 10 Nov 2017 19:41:56 GMT):
@zac Exactly.

zac (Fri, 10 Nov 2017 19:43:42 GMT):
Well, I'm a bit at a loss then

msg2muthu (Fri, 10 Nov 2017 19:43:43 GMT):
@zac i see only the following in log in processor folder [vagrant@localhost ~/seidev/projects/sawtooth-examples/education/LFS171x/sawtooth-material/sawtooth-tuna/processor (master)]$ npm start 6: Pulling from node Digest: sha256:72dd1fefd15a3313e69871559c2198be107dd67ba81d8bf2973576e903496760 Status: Image is up to date for dt-00003646.corp.seic.com:5000/node:6 > Sawtooth-tuna-chain-processor@0.0.0 start /usr/src/app > node index.js Initializing JSON handler for Sawtooth Tuna Chain

zac (Fri, 10 Nov 2017 19:45:07 GMT):
When you start it on Mac you get more?

zac (Fri, 10 Nov 2017 19:45:13 GMT):
A message that it is connected?

msg2muthu (Fri, 10 Nov 2017 19:46:56 GMT):
Yes, In addition the message above, i am getting message like "Connected..", i dont have exact message now.

jsmitchell (Fri, 10 Nov 2017 19:49:31 GMT):
@MicBowman are you trying to use vagrant?

zac (Fri, 10 Nov 2017 19:49:44 GMT):
the OS thing might be a red herring, there have been a lot API updates lately, so perhaps your Docker images updated to something that won't work with tuna-chain

zac (Fri, 10 Nov 2017 19:50:53 GMT):
You could try changing all of the `latest` tags for hyperledger images in your compose file to `0.8. i.e. `hyperledger/sawtooth-validator:latest` -> `hyperledger/sawtooth-validator:0.8`

zac (Fri, 10 Nov 2017 19:50:53 GMT):
You could try changing all of the `latest` tags for hyperledger images in your compose file to `0.8`. i.e. `hyperledger/sawtooth-validator:latest` -> `hyperledger/sawtooth-validator:0.8`

zac (Fri, 10 Nov 2017 19:51:45 GMT):
Typically you don't get the connect messages because the validator URL is wrong though

MicBowman (Fri, 10 Nov 2017 19:51:58 GMT):
@jsmitchell yes

zac (Fri, 10 Nov 2017 19:52:11 GMT):
And it seems very much like it is right based on what you've told me

MicBowman (Fri, 10 Nov 2017 19:52:47 GMT):
given the errors i'm getting i think vagrant is failing with some proxy problems on the keyservers... and yes i have the vagrant proxy plugin installed and configured...

jsmitchell (Fri, 10 Nov 2017 19:52:55 GMT):
@MicBowman you will probably have a bad time with that. we've mostly moved to docker. Docs need to catch up.

MicBowman (Fri, 10 Nov 2017 19:53:02 GMT):
:-/

jsmitchell (Fri, 10 Nov 2017 19:53:06 GMT):
what OS are you on?

MicBowman (Fri, 10 Nov 2017 19:53:12 GMT):
anything that works

jsmitchell (Fri, 10 Nov 2017 19:53:15 GMT):
mac?

MicBowman (Fri, 10 Nov 2017 19:53:36 GMT):
umm... i'm not dead... and i would be before i ever used a mac :-)

jsmitchell (Fri, 10 Nov 2017 19:53:38 GMT):
linux?

MicBowman (Fri, 10 Nov 2017 19:53:43 GMT):
linux/windows

MicBowman (Fri, 10 Nov 2017 19:53:45 GMT):
tried both

jsmitchell (Fri, 10 Nov 2017 19:53:52 GMT):
ok, should be easy from within linux

msg2muthu (Fri, 10 Nov 2017 19:53:57 GMT):
@zac Let me try and update you

MicBowman (Fri, 10 Nov 2017 19:54:09 GMT):
linux environment is already virtualized

msg2muthu (Fri, 10 Nov 2017 19:54:13 GMT):
Thanks @zac for your help.

jsmitchell (Fri, 10 Nov 2017 19:54:22 GMT):
it's all docker containers, not vms

jsmitchell (Fri, 10 Nov 2017 19:55:12 GMT):
try installing docker compose and then doing ./bin/build_all

jsmitchell (Fri, 10 Nov 2017 19:55:27 GMT):
@rbuysse this ^ should work, right?

jsmitchell (Fri, 10 Nov 2017 19:55:35 GMT):
or @adamludvik

cianx (Fri, 10 Nov 2017 19:58:56 GMT):
why is the vagrant tools directoy still there and the public docs pointing at that as the core development environment if we are not using or maintaining it?

jsmitchell (Fri, 10 Nov 2017 19:59:18 GMT):
it's a solid question

jsmitchell (Fri, 10 Nov 2017 20:03:00 GMT):
I am spinning it up

jsmitchell (Fri, 10 Nov 2017 20:03:07 GMT):
to see if it's only a proxy issue

MicBowman (Fri, 10 Nov 2017 20:08:12 GMT):
this is the "last" error i found in the logs...

MicBowman (Fri, 10 Nov 2017 20:08:22 GMT):
default: hkp://keyserver.ubuntu.com:80 default: --recv-keys default: 8AA7AF1F1091A5FD default: gpg: keyserver receive failed: Connection timed out

jsmitchell (Fri, 10 Nov 2017 20:17:42 GMT):
@MicBowman it's running through the various docker stuff in ./bin/build_all in vagrant for me

jsmitchell (Fri, 10 Nov 2017 20:17:54 GMT):
haven't run into any issues yet

jsmitchell (Fri, 10 Nov 2017 20:18:00 GMT):
(i'm not behind a proxy)

MicBowman (Fri, 10 Nov 2017 20:18:03 GMT):
i couldn't get the vm built

jsmitchell (Fri, 10 Nov 2017 20:18:27 GMT):
oh, yeah, must be a proxy issue

jsmitchell (Fri, 10 Nov 2017 20:18:51 GMT):
@cianx ^ you've had this stuff working inside the intel network, right?

jsmitchell (Fri, 10 Nov 2017 21:18:25 GMT):
@MicBowman I was able to start up vagrant cleanly and run a full ./bin/build_all

jsmitchell (Fri, 10 Nov 2017 21:22:14 GMT):
when I tried to run ./bin/build_debs to get the sgx stuff to build, I ran out of disk space in the VM

jsmitchell (Fri, 10 Nov 2017 21:22:21 GMT):
(this is not something we do in vagrant)

cianx (Fri, 10 Nov 2017 23:41:20 GMT):
@jsmitchell Not for like 6 monthes. It was to fragile and bandwidth intensive to use as a development environment.

cianx (Fri, 10 Nov 2017 23:42:44 GMT):
From recent experiences, it appears that docker is just as bad. Neither Kelly or I could get docker-compose to honor proxy settings for the supply-chain docker example.

cianx (Fri, 10 Nov 2017 23:46:10 GMT):
Mic has the proper proxy plugin installed and the proper environment variables set.

Dan (Sat, 11 Nov 2017 02:16:10 GMT):
I regularly `build_all -x java` on ubuntu. (I skip java because that build would not work for me and it's absence did not impede me).

Dan (Sat, 11 Nov 2017 02:22:43 GMT):
I think Nick regularly uses vagrant. @drozd

cianx (Sat, 11 Nov 2017 05:28:44 GMT):
That is not really great message for a message for a product trying to hit release quality.

cianx (Sat, 11 Nov 2017 05:30:45 GMT):
And rocket chat is awesome.

cianx (Sat, 11 Nov 2017 05:31:07 GMT):

Screenshot_20171110-212508.png

cianx (Sat, 11 Nov 2017 05:31:19 GMT):
Totally usable

cianx (Sat, 11 Nov 2017 05:31:47 GMT):

Screenshot_20171110-213137.png

Tianjian (Sat, 11 Nov 2017 08:55:37 GMT):
Has joined the channel.

grkvlt (Sat, 11 Nov 2017 16:22:52 GMT):
@cianx the native OSX desktop RocketChat app works great for me...

cianx (Sat, 11 Nov 2017 16:27:27 GMT):
Unfortunately that doesn't help.

Dan (Sat, 11 Nov 2017 17:15:26 GMT):
On Windows I access rocket through chrome. On Android the app works fine for me.

tanya_ogwel (Sat, 11 Nov 2017 21:33:29 GMT):
Has joined the channel.

george (Sun, 12 Nov 2017 20:43:34 GMT):
Has joined the channel.

george (Sun, 12 Nov 2017 20:45:43 GMT):
Not technically a Sawtooth question but while I'm going through the edX course on Hyperledger I saw the video describing the use case of the IoT fish tracking sensors. Is anyone aware of these kind of sensors in printed label format?

rojanjose (Mon, 13 Nov 2017 04:11:55 GMT):
Has joined the channel.

Otherside (Mon, 13 Nov 2017 14:06:37 GMT):
ValueError: ('Unknown connection id:

LaurenceWBD (Mon, 13 Nov 2017 14:46:43 GMT):
Has joined the channel.

zac (Mon, 13 Nov 2017 16:47:57 GMT):
I haven't heard of anything like that, but I don't know a ton about IoT sensors

Dan (Mon, 13 Nov 2017 17:00:22 GMT):
@amundson or @rbuysse is this sawtooth-all script still being used? and if so should it remove this reference to 'sawtooth manage'? https://github.com/hyperledger/sawtooth-core/blob/master/ci/sawtooth-all#L40

rbuysse (Mon, 13 Nov 2017 17:07:27 GMT):
Uh, we're working on deprecating it. Lemme take a look once I get this Go stuff wrapped up.

pschwarz (Mon, 13 Nov 2017 20:38:48 GMT):
@dan @cianx We build the java examples and SDK via the CI system regularly with no problems. The problems that you both are seeing are most likely do to proxy settings. Maven, if I recall correctly, has a different way of getting the proxy information to use when fetching the java dependencies

pschwarz (Mon, 13 Nov 2017 20:38:48 GMT):
@Dan @cianx We build the java examples and SDK via the CI system regularly with no problems. The problems that you both are seeing are most likely do to proxy settings. Maven, if I recall correctly, has a different way of getting the proxy information to use when fetching the java dependencies

pschwarz (Mon, 13 Nov 2017 20:40:38 GMT):
I'm not entirely sure how we can integrate these sorts of instructions into our docker process for local use: https://medium.com/@petehouston/execute-maven-behind-a-corporate-proxy-network-5e08d075f744

jsmitchell (Mon, 13 Nov 2017 20:42:55 GMT):
we'll need to lean on folks experiencing these types of proxy issues to help troubleshoot and contribute fixes/doc updates

Dan (Mon, 13 Nov 2017 21:21:58 GMT):
@drozd I'm starting to look through #1101. I see it already has a couple thumbs up, but if you wouldn't mind waiting a bit to merge, I'd like to review.

cianx (Mon, 13 Nov 2017 21:38:02 GMT):
@jsmitchell That does not scale. Developers need to test their builds over the vpn.

jsmitchell (Mon, 13 Nov 2017 21:38:24 GMT):
yeah, and lots of VPNs have different constraints

jsmitchell (Mon, 13 Nov 2017 21:38:37 GMT):
we've been down this path with proxy stuff many times

jsmitchell (Mon, 13 Nov 2017 21:38:51 GMT):
we can't test these configurations

cianx (Mon, 13 Nov 2017 21:38:54 GMT):
I still don't understand why we are not publishing docker dev images.

cianx (Mon, 13 Nov 2017 21:39:20 GMT):
I am done burying weeks of work in to untested builds.

amundson (Mon, 13 Nov 2017 21:41:18 GMT):
dev images for what purpose? developing sawtooth? wouldn't you always want the latest?

cianx (Mon, 13 Nov 2017 21:42:21 GMT):
Yes, I everytime there was a configuration change I would expect the docker image latest would be updated.

amundson (Mon, 13 Nov 2017 21:43:25 GMT):
don't you already have that setup in your own dockerhub space?

amundson (Mon, 13 Nov 2017 21:44:39 GMT):
I'd like to be able to do more w/docker-compose builds instead of build_all

cianx (Mon, 13 Nov 2017 21:44:50 GMT):
yep, I did. I turned out to be a lot of over head to detect when a new image was added and figure out how to shim that under the build_all script

jsmitchell (Mon, 13 Nov 2017 21:45:36 GMT):
keeping up to date with 'git fetch upstream && git rebase upstream/master && ./bin/build_all' seems to work pretty well for me

jsmitchell (Mon, 13 Nov 2017 21:45:54 GMT):
but, if there are local proxy issues, i can understand how that would add a wrinkle

cianx (Mon, 13 Nov 2017 21:46:33 GMT):
Downloading prebuilt docker images is much faster and less bandwidth than rebuilding them.

cianx (Mon, 13 Nov 2017 21:47:34 GMT):
build_all is a bandwidth hog to rebuilds images that usually haven't changed. The only reason I would ever want to build them locally is if need to change one.

amundson (Mon, 13 Nov 2017 21:49:47 GMT):
well, we should solve these things in context of sawtooth-supply-chain, not sawtooth-core, then take what we have learned and apply it to sawtooth-core

amundson (Mon, 13 Nov 2017 21:51:31 GMT):
docker-compose down && docker-compose up --build

cianx (Mon, 13 Nov 2017 21:52:32 GMT):
interested to hear solutions, wasted about 4 hours last week trying to get `docker-compose up` to work behind a proxy for supplychain.

amundson (Mon, 13 Nov 2017 21:53:02 GMT):
where did it hang?

amundson (Mon, 13 Nov 2017 21:53:04 GMT):
"apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8AA7AF1F1091A5FD" ?

cianx (Mon, 13 Nov 2017 21:53:38 GMT):
yep, the docker build was not getting the correct proxy information.

amundson (Mon, 13 Nov 2017 21:54:01 GMT):
that uses pgp port, no support at all for proxy

amundson (Mon, 13 Nov 2017 21:54:25 GMT):
there is a workaround though

amundson (Mon, 13 Nov 2017 21:55:27 GMT):
"apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8AA7AF1F1091A5FD"

amundson (Mon, 13 Nov 2017 21:56:52 GMT):
I don't know how that interacts with the normal proxy variables. I assume about as well as apt-get.

Dan (Mon, 13 Nov 2017 22:03:21 GMT):
Fwiw, I don't seem to have an issue with building java anymore.

Dan (Mon, 13 Nov 2017 22:04:09 GMT):
But I've been a coward and not building behind a proxy.

Dan (Mon, 13 Nov 2017 22:05:06 GMT):
I did get some questions earlier today about the 'smart contract' development model. (where smart contract basically means transaction processor).

kelly_ (Mon, 13 Nov 2017 22:05:37 GMT):
I had to connect to a separate wifi network before docker-compose worked for supply chain

kelly_ (Mon, 13 Nov 2017 22:05:46 GMT):
now it works fine with up and down commands

kelly_ (Mon, 13 Nov 2017 22:06:05 GMT):
I tried setting both the docker proxy settings as well as my local proxy variables to no avail

amundson (Mon, 13 Nov 2017 22:06:40 GMT):
@kelly_ that is because docker is caching

Dan (Mon, 13 Nov 2017 22:06:45 GMT):
Regarding business logic development I think the flow is to install the language SDK of your choice. Develop your business logic. Test it against a dockerized version of Sawtooth. Then produce artifacts that can be installed alongside a sawtooth installation.

amundson (Mon, 13 Nov 2017 22:08:41 GMT):
that's the flow I've been using

amundson (Mon, 13 Nov 2017 22:09:14 GMT):
I've done both creating a docker container to run the TP and also run it native on the mac pointing to a docker environment

amundson (Mon, 13 Nov 2017 22:09:23 GMT):
(recently)

Dan (Mon, 13 Nov 2017 22:09:37 GMT):
Do we have guidance on where to install your TP? And does that require installing the language SDK on the target server?

amundson (Mon, 13 Nov 2017 22:09:41 GMT):
docker-compose restart is nice

amundson (Mon, 13 Nov 2017 22:10:49 GMT):
oh, just noticed it is after 4pm. can only answer questions related to Rust SDK now.

amundson (Mon, 13 Nov 2017 22:10:50 GMT):
:)

amundson (Mon, 13 Nov 2017 22:12:11 GMT):
@Dan you mean taking a strong position on the user's development environment for the TP? I thought we were against that.

Dan (Mon, 13 Nov 2017 22:13:05 GMT):
No I mean when you want to go install that TP on a production instance.

amundson (Mon, 13 Nov 2017 22:13:44 GMT):
that depends on a lot of things, like what language you chose, etc.

amundson (Mon, 13 Nov 2017 22:13:59 GMT):
if you are a kubernetes shop, by all means, install it there

amundson (Mon, 13 Nov 2017 22:14:50 GMT):
if it's on ubuntu 16.04 AWS images, then it really depends on language

Dan (Mon, 13 Nov 2017 22:14:59 GMT):
Let's say ubuntu. It looks like the built in TPs go into /usr/bin/

Dan (Mon, 13 Nov 2017 22:15:45 GMT):
And lets say (for starters) language of the custom TP is python.

amundson (Mon, 13 Nov 2017 22:15:56 GMT):
python - you could produce deb packages, that's what we do. users have to own their app code. they could python3 setup.py install it too, if that's how they roll. or even run it via some script in a directory checked out from their git repo.

amundson (Mon, 13 Nov 2017 22:16:56 GMT):
java - I think you install the TP into a running Tomcat or Websphere instance (joking, joking)

Dan (Mon, 13 Nov 2017 22:17:04 GMT):
:)

amundson (Mon, 13 Nov 2017 22:17:41 GMT):
(I'm not even sure that should be a joke.)

amundson (Mon, 13 Nov 2017 22:18:36 GMT):
javascript - it's node, so whatever node people do. I honestly don't think there is a credible non-docker approach to running node apps via deb package installs or the like

amundson (Mon, 13 Nov 2017 22:19:38 GMT):
go - probably package into deb, though you could copy the binary to the server and setup systemd if you didn't want to deal with packaging

amundson (Mon, 13 Nov 2017 22:20:46 GMT):
C++ - probably same as go; compile it and figure out deb packaging or punt on that and just copy what you need to the server

amundson (Mon, 13 Nov 2017 22:22:28 GMT):
but personally, I think kubernetes is a solid option for folks that don't have packaging experience and are able to otherwise deal with docker-compose

Dan (Mon, 13 Nov 2017 22:33:31 GMT):
Thanks. What about the sdk features? I'm not sure if there are runtime dependencies that are implied by the SDKs but wouldn't be satisfied by the default sawtooth install. Like this stuff out of small-bank... "sawtooth_sdk/logging" "sawtooth_sdk/processor" "sawtooth_sdk/protobuf/processor_pb2"

Dan (Mon, 13 Nov 2017 22:34:50 GMT):
@drozd FYI, I'm done poking at #1101. Could only find some doc nits. :)

amundson (Mon, 13 Nov 2017 22:39:45 GMT):
@Dan that also depends on the language as well; if the language isn't statically compiling the SDK into the TP, then the SDK becomes a runtime dependency

Dan (Mon, 13 Nov 2017 22:40:10 GMT):
thx.

rahulchan (Mon, 13 Nov 2017 23:50:24 GMT):
Has joined the channel.

amundson (Tue, 14 Nov 2017 15:08:43 GMT):
We will be spinning a 0.8.12 release soon, probably tomorrow.

amundson (Tue, 14 Nov 2017 15:09:29 GMT):
if you have backports you want in that release, coordinate with @agunde

GhadiShayban (Tue, 14 Nov 2017 15:44:02 GMT):
The fixes to enumerative REST endpoints etc. That's our top concern for backports, but I don't know a good list of commit SHAs to ask for. maybe Peter knows.

GhadiShayban (Tue, 14 Nov 2017 15:44:02 GMT):
@amundson The fixes to enumerative REST endpoints etc. That's our top concern for backports, but I don't know a good list of commit SHAs to ask for. maybe Peter knows.

GhadiShayban (Tue, 14 Nov 2017 15:44:02 GMT):
@amundson The fixes to enumerative REST endpoints. That's our top concern for backports, but I don't know a good list of commit SHAs to ask for. maybe Peter knows.

pschwarz (Tue, 14 Nov 2017 15:53:43 GMT):
Unfortunately, those fixes involved breaking changes

pschwarz (Tue, 14 Nov 2017 15:54:57 GMT):
We had to restructure the way we store data, which involved making use of some LMDB features so we could create traversable, lazy indexes

GhadiShayban (Tue, 14 Nov 2017 17:23:23 GMT):
Thanks @pschwarz -- I will try to repro STL-849 on master

Cryptobuster (Tue, 14 Nov 2017 23:06:50 GMT):
Has joined the channel.

ajksharma (Wed, 15 Nov 2017 08:07:19 GMT):
Has joined the channel.

dniHze (Wed, 15 Nov 2017 15:00:12 GMT):
Just a quick question: why I'm getting this kind of error and how to get rid of it? `Invalid Transaction Tried to get unauthorized address: ['e9d9deaecd3827f0804c91fd93359ae25ea97f5960df1c0609a6befb62b29179bd71bc']`

pschwarz (Wed, 15 Nov 2017 15:29:39 GMT):
Did you include that address in your list of inputs?

dniHze (Wed, 15 Nov 2017 15:32:03 GMT):
No, i didn't

dniHze (Wed, 15 Nov 2017 15:39:46 GMT):
thanks, @pschwarz

pschwarz (Wed, 15 Nov 2017 15:46:45 GMT):
:thumbup:

benoit.razet (Wed, 15 Nov 2017 18:08:52 GMT):
I have a quick question: on master (as of this morning), is anyone experiencing errors when running the tests at `test_network_permissioning` ? Thanks

jvilchez (Wed, 15 Nov 2017 18:14:13 GMT):
Has joined the channel.

benoit.razet (Wed, 15 Nov 2017 18:21:33 GMT):
^^ discard my message, I am trying something that may fix it.

agunde (Wed, 15 Nov 2017 18:26:00 GMT):
@benoit.razet is the test failing consistently, we have seen some intermediate failures due to the time it takes a block to be published.

benoit.razet (Wed, 15 Nov 2017 18:32:10 GMT):
you are right! I tried to run it 2 more times: the first time, it blocked and the second time seems to process just fine

pschwarz (Wed, 15 Nov 2017 21:46:35 GMT):
@GhadiShayban I'm not able to reproduce that error against master, though I'm also in a docker container. However, we've come across something that might be related, so I'll keep you posted.

GhadiShayban (Wed, 15 Nov 2017 21:47:59 GMT):
@pschwarz Thanks for trying to repro. I will say we have a slightly custom packaging, Ubuntu 17.04 + python setup.py install. (Did you happen to try it against 0.8?)

abelsilva (Thu, 16 Nov 2017 01:18:12 GMT):
Has joined the channel.

divssheth (Thu, 16 Nov 2017 07:54:04 GMT):
Has joined the channel.

balmeida (Thu, 16 Nov 2017 10:29:17 GMT):
Has joined the channel.

GhadiShayban (Thu, 16 Nov 2017 15:52:39 GMT):
@rbuysse or whoever: Why did the packaging scripts abandon the `python setup.py install` within docker? I don't have a problem with it, I was just looking for the rationale

jsmitchell (Thu, 16 Nov 2017 16:01:23 GMT):
@benoit.razet thanks for the PR! Did you see you had some lint issues?

jsmitchell (Thu, 16 Nov 2017 16:01:33 GMT):
https://build.sawtooth.me/job/Sawtooth-Hyperledger/job/sawtooth-core/job/PR-1117/2/console

jsmitchell (Thu, 16 Nov 2017 16:01:58 GMT):
down near the bottom of the run

benoit.razet (Thu, 16 Nov 2017 16:02:07 GMT):
yeah, I just saw it. Somehow I missed them when I looked at the logs.

benoit.razet (Thu, 16 Nov 2017 16:02:59 GMT):
should I push a new commit that fix those

benoit.razet (Thu, 16 Nov 2017 16:02:59 GMT):
?

jsmitchell (Thu, 16 Nov 2017 16:03:09 GMT):
that would be great

jsmitchell (Thu, 16 Nov 2017 16:12:32 GMT):
it would be best if you can squash it into the original commits and then force push

benoit.razet (Thu, 16 Nov 2017 16:15:42 GMT):
will do

benoit.razet (Thu, 16 Nov 2017 16:24:48 GMT):
I just squashed and push. Sorry for the lint errors

jsmitchell (Thu, 16 Nov 2017 16:46:00 GMT):
no worries @benoit.razet

jsmitchell (Thu, 16 Nov 2017 16:46:08 GMT):
we are constantly covered with lint!

mpr 10 (Thu, 16 Nov 2017 16:49:04 GMT):
Has joined the channel.

gokhankocak (Thu, 16 Nov 2017 16:58:08 GMT):
Has joined the channel.

chandrairawan (Fri, 17 Nov 2017 03:35:13 GMT):
Has joined the channel.

czarx (Fri, 17 Nov 2017 04:20:56 GMT):
Has joined the channel.

guoger (Fri, 17 Nov 2017 05:43:18 GMT):
Has joined the channel.

guoger (Fri, 17 Nov 2017 05:45:20 GMT):
hi, I noticed that Burrow EVM is integrated into Sawtooth. My question is how does Sawtooth incorporate the notion of 'gas' introduced by Ethereum? is there a default value of it, or user has to specifically set this? thx!

amolk (Fri, 17 Nov 2017 06:44:10 GMT):
Has joined the channel.

adamludvik (Fri, 17 Nov 2017 19:32:46 GMT):
You can specify any amount of gas, but the default is 90000. The price of gas is free.

Infodataway (Sat, 18 Nov 2017 10:34:22 GMT):
Has joined the channel.

ajenie (Sat, 18 Nov 2017 11:14:13 GMT):
Hi, I've been trying to build a multi-validators network but i still have some questions.

ajenie (Sat, 18 Nov 2017 11:14:13 GMT):
Hi, I've been trying to build a multi-validators network but i still have some questions. For ease of discussion, i've come up with some drawing. Below is the logical diagram.

ajenie (Sat, 18 Nov 2017 11:15:18 GMT):
For ease of discussion, i've come up with some drawing. Below is the logical diagram.

ajenie (Sat, 18 Nov 2017 11:15:51 GMT):

logical-diagram.jpg

ajenie (Sat, 18 Nov 2017 11:20:09 GMT):
For genesis node, i have two compose files: one for initialization and the other one for production. Below is the initialization:

ajenie (Sat, 18 Nov 2017 11:20:09 GMT):
For genesis node, i have two compose files: one for initialization and the other one for production.

ajenie (Sat, 18 Nov 2017 11:20:30 GMT):
```

ajenie (Sat, 18 Nov 2017 11:20:30 GMT):
```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth://root/.sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth keygen --force my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch \ \""````

ajenie (Sat, 18 Nov 2017 11:20:30 GMT):
For genesis node, i have two compose files: one for initialization and the other one for production. Below is the initialization compose file: ```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth://root/.sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth keygen --force my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch \ \""````

ajenie (Sat, 18 Nov 2017 11:20:30 GMT):
For genesis node, i have two compose files: one for initialization and the other one for production. Below is the initialization compose file: ```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth:/root/.sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth keygen --force my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch \ \""````

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ```xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth://root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ```xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth:/root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ``` xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth:/root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ```version: "2.1" services: xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth:/root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ```version: "2.1" services: settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/settings-tp/var/log/sawtooth:/var/log/sawtooth entrypoint: settings-tp -vv tcp://validator:4004 intkey-tp-python: image: hyperledger/sawtooth-tp_intkey_python:latest container_name: sawtooth-intkey-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/intkey-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: intkey-tp-python -vv tcp://validator:4004 xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth://root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:23:24 GMT):
and below is the production one: ```version: "2.1" services: settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/settings-tp/var/log/sawtooth:/var/log/sawtooth entrypoint: settings-tp -vv tcp://validator:4004 intkey-tp-python: image: hyperledger/sawtooth-tp_intkey_python:latest container_name: sawtooth-intkey-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/intkey-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: intkey-tp-python -vv tcp://validator:4004 xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator volumes: - /sawtooth/xo-tp-python/var/log/sawtooth:/var/log/sawtooth entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.160.0.3:4004:4004" - "10.160.0.3:8800:8800" volumes: - /sawtooth/validator/etc/sawtooth:/etc/sawtooth - /sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /sawtooth/validator/root/.sawtooth:/root/.sawtooth - /sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth-validator -vv \ --endpoint tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --scheduler parallel \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.160.0.3:8080:8080" depends_on: - validator volumes: - /sawtooth/rest-api/var/log/sawtooth:/var/log/sawtooth entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:31:12 GMT):
And for other validator, i'm using the following compose file: ```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.148.0.2:4004:4004" - "10.148.0.2:8800:8800" volumes: - /home/andre_jenie/sawtooth/validator/etc/sawtooth:/etc/sawtooth - /home/andre_jenie/sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /home/andre_jenie/sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /home/andre_jenie/sawtooth/validator/root/.sawtooth://root/.sawtooth - /home/andre_jenie/sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth-validator -vv \ --endpoint tcp://10.148.0.2:8800 \ --seeds tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.148.0.2:8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:31:12 GMT):
And for other validators, i'm using the following compose file: ```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.148.0.2:4004:4004" - "10.148.0.2:8800:8800" volumes: - /home/andre_jenie/sawtooth/validator/etc/sawtooth:/etc/sawtooth - /home/andre_jenie/sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /home/andre_jenie/sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /home/andre_jenie/sawtooth/validator/root/.sawtooth://root/.sawtooth - /home/andre_jenie/sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth-validator -vv \ --endpoint tcp://10.148.0.2:8800 \ --seeds tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.148.0.2:8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:31:12 GMT):
And for other validators, i'm using the following compose file: ```version: "2.1" services: validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "10.148.0.2:4004:4004" - "10.148.0.2:8800:8800" volumes: - /home/andre_jenie/sawtooth/validator/etc/sawtooth:/etc/sawtooth - /home/andre_jenie/sawtooth/validator/var/log/sawtooth:/var/log/sawtooth - /home/andre_jenie/sawtooth/validator/var/lib/sawtooth:/var/lib/sawtooth - /home/andre_jenie/sawtooth/validator/root/.sawtooth:/root/.sawtooth - /home/andre_jenie/sawtooth/validator/home/sawtooth:/home/sawtooth # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen --force && \ sawtooth-validator -vv \ --endpoint tcp://10.148.0.2:8800 \ --seeds tcp://10.160.0.3:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ --peering dynamic \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "10.148.0.2:8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080```

ajenie (Sat, 18 Nov 2017 11:35:06 GMT):
From peering point of view, everything works perfectly. However, when i tried to look at the block list from `10.148.0.2` node through its REST-API server, i've got the following error: ```root@8b997265ee08:/# curl http://10.148.0.2:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }```

ajenie (Sat, 18 Nov 2017 11:35:06 GMT):
From peering point of view, everything works perfectly. However, when i tried to look at the block list from `10.148.0.2` node through its REST-API server, i've got the following error: ```root@8b997265ee08:/# curl http://10.148.0.2:8080/blocks { "error": { "code": 15, "message": "The validator has no genesis block, and is not yet ready to be queried. Try your request again later.", "title": "Validator Not Ready" } }``` I ran this from _sawtooth-client-default_ container running on the same machine.

ajenie (Sat, 18 Nov 2017 11:44:12 GMT):
So, I have the questions: 1. I suppose that all other validators have the same copy of block store. But so far the only block store that i have is on genesis node. Am i missing something? 2. Using `--peering dynamic` i've got some message in the debug log: ```[10:36:03.712 [ConnectionManager] gossip DEBUG] Number of peers: 2 [10:36:03.713 [ConnectionManager] gossip DEBUG] Peers are: ['tcp://10.160.0.2:8800', 'tcp://10.148.0.2:8800'] [10:36:03.713 [ConnectionManager] gossip DEBUG] Unpeered candidates are: [] [10:36:04.714 [ConnectionManager] gossip DEBUG] Below minimum peer threshold. Doing topology search.``` Where can i configure the minimum peer threshold? 3. In the beginning of Validator's log, i see: ```[10:35:49.645 [MainThread] cli WARNING] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.``` Does this have anything to do with network permnissioning using policy file (.toml)? If it does, is there any examples that can be used to impose some security standard? Sorry for so many questions and thank you in advance.

ajenie (Sat, 18 Nov 2017 11:44:12 GMT):
So, I have the questions: 1. I suppose that all other validators should have the same copy of block store. But so far the only block store that i have is on genesis node. Am i missing something? 2. Using `--peering dynamic` i've got some message in the debug log: ```[10:36:03.712 [ConnectionManager] gossip DEBUG] Number of peers: 2 [10:36:03.713 [ConnectionManager] gossip DEBUG] Peers are: ['tcp://10.160.0.2:8800', 'tcp://10.148.0.2:8800'] [10:36:03.713 [ConnectionManager] gossip DEBUG] Unpeered candidates are: [] [10:36:04.714 [ConnectionManager] gossip DEBUG] Below minimum peer threshold. Doing topology search.``` Where can i configure the minimum peer threshold? 3. In the beginning of Validator's log, i see: ```[10:35:49.645 [MainThread] cli WARNING] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.``` Does this have anything to do with network permnissioning using policy file (.toml)? If it does, is there any examples that can be used to impose some security standard? Sorry for so many questions and thank you in advance.

ajenie (Sat, 18 Nov 2017 11:44:12 GMT):
So, I have the questions: 1. I suppose that all other validators should have the same copy of block store. But so far the only block store that i have is on genesis node. Am i missing something? 2. Using `--peering dynamic` i've got some message in the debug log: ```[10:36:03.712 [ConnectionManager] gossip DEBUG] Number of peers: 2 [10:36:03.713 [ConnectionManager] gossip DEBUG] Peers are: ['tcp://10.160.0.2:8800', 'tcp://10.148.0.2:8800'] [10:36:03.713 [ConnectionManager] gossip DEBUG] Unpeered candidates are: [] [10:36:04.714 [ConnectionManager] gossip DEBUG] Below minimum peer threshold. Doing topology search.``` Where can i configure the minimum peer threshold? 3. In the beginning of Validator's log, i see: ```[10:35:49.645 [MainThread] cli WARNING] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.``` Does this have anything to do with network permissioning using policy file _(.toml)_? If it does, is there any examples that can be used to impose some security standard? Sorry for so many questions and thank you in advance.

ajenie (Sat, 18 Nov 2017 11:44:12 GMT):
So, I have the questions: 1. I suppose that all other validators should have the same copy of block store. But so far the only block store that i have is on genesis node. Am i missing something? 2. Using `--peering dynamic` i've got some message in the debug log: ```[10:36:03.712 [ConnectionManager] gossip DEBUG] Number of peers: 2 [10:36:03.713 [ConnectionManager] gossip DEBUG] Peers are: ['tcp://10.160.0.2:8800', 'tcp://10.148.0.2:8800'] [10:36:03.713 [ConnectionManager] gossip DEBUG] Unpeered candidates are: [] [10:36:04.714 [ConnectionManager] gossip DEBUG] Below minimum peer threshold. Doing topology search.``` Where can i configure the minimum peer threshold? 3. In the beginning of Validator's log, i see: ```[10:35:49.645 [MainThread] cli WARNING] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.``` Does this have anything to do with network permissioning using policy file _(.toml)_? If it does, is there any examples that can be used to impose some standard security? Sorry for so many questions and thank you in advance.

jasoncys (Sat, 18 Nov 2017 12:02:26 GMT):
Has joined the channel.

jasoncys (Sat, 18 Nov 2017 12:10:58 GMT):
Hi, I tried with the Marketplace demo earlier today. I started with "creating a participant with a new key". After clicking the Submit button, I was shown with the message "Waiting for participant to be provisioned. This will take a few minutes ..." for hours. Then I tried to click on the "Block xxx" and "Hi, My Name" on the upper right-hand corner of the web page. The provision didn't seem to be successful. I restarted the browser (Safari on MacOS 10.13.1) and open the link "https://mktplace.sawtooth.me" where I can only see the "Loading ..." message. I tried going back after rebooting but still got the "Loading ..." message. Did anyone encounter the same problem before? How can I create another participant? Thanks in advance.

jasoncys (Sat, 18 Nov 2017 13:12:46 GMT):
[I deleted the cookie for sawtooth.me and was able to create a new participant. Nonetheless, still stuck at "Waiting for participant to be provisioned. This will take a few minutes ...". And the block being shown is *744*. ](https://chat.hyperledger.org/channel/sawtooth?msg=FuMNFMcNhbLYRDRD2)

agunde (Sat, 18 Nov 2017 16:38:16 GMT):
@ajenie An important node about validators is that all validators need to have the same transaction processors so they can all valid the batches included in the block.

agunde (Sat, 18 Nov 2017 16:39:51 GMT):
Currently the minimum peer threshold is hard coded in sawtooth_validator/sever/core.py. I will create a story to make sure this can be configurable.

agunde (Sat, 18 Nov 2017 16:55:58 GMT):
That network key pairs is actually a reference to zMQ's i TLS [3] like certificate exchange mechanism and protocol encryption capability which is transparent to the socket implementation. Here is link to an example https://github.com/zeromq/pyzmq/blob/master/examples/security/ironhouse.py

agunde (Sat, 18 Nov 2017 16:56:29 GMT):
You can generate keys using zmq.auth.create_certificates(keys_dir, "network")

agunde (Sat, 18 Nov 2017 16:57:05 GMT):
And then include those keys in the validator.toml config files.

agunde (Sat, 18 Nov 2017 17:00:39 GMT):
This is separate from the Network Permissioning that uses policies.

creativemonk (Sun, 19 Nov 2017 06:02:26 GMT):
Has joined the channel.

ajenie (Sun, 19 Nov 2017 07:37:52 GMT):
Hi @agunde, thank you indeed for your explanation. So, if i run the same TPs in all validator nodes, then the block store will be consistent accross? I'll test it out then.

ajenie (Sun, 19 Nov 2017 07:56:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=52Bxey9ErRLizdqPg) @agunde thanks for the information. I'll take a look at that.

ajenie (Sun, 19 Nov 2017 07:57:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=TaqQrvmeumDGok3LM) @agunde It'd be wonderful if this can be configured outside the source code. By the way, what's the default number?

ajenie (Sun, 19 Nov 2017 09:42:33 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=7MfsZvz7jkJY4DcHh) @agunde after i started up TPs on all my validator nodes, everything works perfectly okay now :) That's what i have missed. In the debug log i can see _chain_head_ and _block_chain_id_ now. Now i can take a look at validator's policy and protocol encryption capabilities that you mentioned. Thanks again.

ajenie (Sun, 19 Nov 2017 09:42:33 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=7MfsZvz7jkJY4DcHh) @agunde after i started up TPs on all my validator nodes, everything works perfectly okay now :) That's what i have missed. In the debug log i can see *chain_head* and *block_chain_id* now. Now i can take a look at validator's policy and protocol encryption capabilities that you mentioned. Thanks again.

drxos (Sun, 19 Nov 2017 14:16:00 GMT):
Has joined the channel.

zac (Sun, 19 Nov 2017 15:14:33 GMT):
@jasoncys I don't have access to the Marketplace blockchain right now, but if I had to guess, I'd say it's probably gone down. I'm having the same trouble as you.

zac (Sun, 19 Nov 2017 15:15:25 GMT):
It's the weekend for us right now, so we may not be able to get it back up until tomorrow.

yoni (Sun, 19 Nov 2017 15:15:37 GMT):
Hi, there is a difference between the sawtooth SDK that I get using git clone from https://github.com/hyperledger/sawtooth-core.git, and the SDK I get when downloading sawtooth on Ubuntu system with add-apt-repository "deb http://repo.sawtooth.me/ubuntu/nightly xenial universe" (or stable). Specifically I had a problem when importing the python class StateEntry, for Ubuntu repository it is in /sawtooth_sdk/processor/context.py and for docker/vagrant (git repository) it is missing Why is there a difference in the SDK repository and which version should be used?

jasoncys (Sun, 19 Nov 2017 15:15:58 GMT):
@zac thanks for the update.

zac (Sun, 19 Nov 2017 15:16:24 GMT):
No problem, thanks for trying to check it out!

zac (Sun, 19 Nov 2017 15:19:38 GMT):
@yoni StateEntry is being replaced with a normal dict for version 1.0, which is fast replacing. I believe the nightly build is published very night, but still if you are pulling from master, you may have a slightly newer version.

zac (Sun, 19 Nov 2017 15:19:38 GMT):
@yoni StateEntry is being replaced with a normal dict for version 1.0, which is fast approaching. I believe the nightly build is published very night, but still if you are pulling from master, you may have a slightly newer version.

zac (Sun, 19 Nov 2017 15:20:07 GMT):
I assume that change _just_ got merged.

zac (Sun, 19 Nov 2017 15:21:23 GMT):
Hrmmm, looks like it was merged 24 days ago: https://github.com/hyperledger/sawtooth-core/pull/1024

zac (Sun, 19 Nov 2017 15:22:44 GMT):
I don't handle the deb builds much, but is it possible you are pulling an older version, or maybe 0.8 (the current stable version)?

zac (Sun, 19 Nov 2017 15:23:49 GMT):
(there is an 0.8 branch on github, if that is what you want btw: https://github.com/hyperledger/sawtooth-core/tree/0-8)

yoni (Sun, 19 Nov 2017 15:24:51 GMT):
could it be that the deb build is not updated? i used: sudo apt-add-repository "deb http://repo.sawtooth.me/ubuntu/nightly xenial universe" as described in here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html#installation

yoni (Sun, 19 Nov 2017 15:25:55 GMT):
and thanks for the help :)

yoni (Sun, 19 Nov 2017 15:27:24 GMT):
First i got the stable one then i updated to the nightly

zac (Sun, 19 Nov 2017 15:44:08 GMT):
np

zac (Sun, 19 Nov 2017 15:45:19 GMT):
I haven't heard anything about the debs not getting updated, but it's possible. The API is in a lot of flux right now, but will settle down once 1.0 is out. I'd recommend probably sticking with 0.8 until then.

zac (Sun, 19 Nov 2017 15:45:45 GMT):
(we have Sawtooth Supply Chain pegged to 0.8 for now for example)

yoni (Sun, 19 Nov 2017 15:56:12 GMT):
Will do, waiting for 1.0... thanks @zac

zac (Sun, 19 Nov 2017 15:56:26 GMT):
:+1:

agunde (Sun, 19 Nov 2017 16:22:03 GMT):
@ajenie the default peer threshold is 3 and the max is 10

agunde (Sun, 19 Nov 2017 16:24:51 GMT):
Glad to here you got things working! let me know if you have any other questions!

saadmir (Mon, 20 Nov 2017 03:01:11 GMT):
Has joined the channel.

ajenie (Mon, 20 Nov 2017 05:19:01 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=S9hrNsQvMKutKhWaJ) @agunde Thanks for the information.

zac (Mon, 20 Nov 2017 07:16:09 GMT):
FYI, for those of you working off of `master`, the default REST API port has been changed from `8080` to `8008`. This should help prevent collisions in the future, but you may have to update your code.

nitefrog (Mon, 20 Nov 2017 09:07:03 GMT):
Has joined the channel.

umairmansha (Mon, 20 Nov 2017 13:26:00 GMT):
Has joined the channel.

Dan (Mon, 20 Nov 2017 19:53:40 GMT):
We have a new repo for the private-utxo stuff thanks to LF staff. https://github.com/hyperledger/sawtooth-private-utxo <-- @cianx

cianx (Mon, 20 Nov 2017 19:54:33 GMT):
thx

Dan (Mon, 20 Nov 2017 20:26:14 GMT):
@cianx I'll move the utxo docs over there

Dan (Mon, 20 Nov 2017 20:30:01 GMT):
and protos/

cianx (Mon, 20 Nov 2017 20:30:24 GMT):
Don't strain yourself

Dan (Mon, 20 Nov 2017 21:15:34 GMT):
Too late @cianx I pulled something.

Dan (Mon, 20 Nov 2017 21:15:58 GMT):
I think it was a request https://github.com/hyperledger/sawtooth-private-utxo/pull/1

yoni (Tue, 21 Nov 2017 06:14:34 GMT):
Hi, where is the c++ sawtooth sdk located on ubuntu? i could only find the python SDK /usr/lib/python3/dist-packages/sawtooth_sdk

askmish (Tue, 21 Nov 2017 08:20:33 GMT):
Just in case, someone else stumbles on getting 'docker up' behind-the-proxy-lines: apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy= --recv-keys 8AA7AF1F1091A5FD will work

askmish (Tue, 21 Nov 2017 08:20:33 GMT):
There's a lot you can do with --keyserver-options

askmish (Tue, 21 Nov 2017 08:20:33 GMT):
There's a lot you can do with --keyserver-options! If you're running 'vagrant up' behine-proxy-lines this should work: apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy= --recv-keys 8AA7AF1F1091A5FD

askmish (Tue, 21 Nov 2017 08:20:52 GMT):
*I meant 'vagrant up'

marksta (Tue, 21 Nov 2017 09:04:25 GMT):
Has joined the channel.

evandro.franco (Tue, 21 Nov 2017 10:47:00 GMT):
Has joined the channel.

divssheth (Tue, 21 Nov 2017 14:58:57 GMT):
Hi, I am trying to setup sawtooth on Ubuntu 16.04 using the following link https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html. All seems to work fine until I start the transaction processor. Running the command '*sudo -u sawtooth intkey-tp-python -v*' gives me the following error.

divssheth (Tue, 21 Nov 2017 14:59:11 GMT):
Traceback (most recent call last): File "/usr/bin/intkey-tp-python", line 9, in load_entry_point('sawtooth-intkey==0.8.12', 'console_scripts', 'intkey-tp-python')() File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 572, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 2749, in load_entry_point return ep.load() File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 2402, in load return self.resolve() File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 2408, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/lib/python3/dist-packages/sawtooth_intkey/processor/main.py", line 20, in from sawtooth_sdk.processor.core import TransactionProcessor File "/usr/local/lib/python3.5/dist-packages/sawtooth_sdk/processor/core.py", line 24, in from sawtooth_sdk.messaging.stream import RECONNECT_EVENT File "/usr/local/lib/python3.5/dist-packages/sawtooth_sdk/messaging/stream.py", line 27, in import sawtooth_sdk.protobuf.validator_pb2 as validator_pb2 ImportError: No module named 'sawtooth_sdk.protobuf'

jsmitchell (Tue, 21 Nov 2017 17:15:40 GMT):
@benoit.razet your PR is merged. I also raised a PR to add you to COMMITTERS

GhadiShayban (Tue, 21 Nov 2017 17:15:52 GMT):
I know you can't see the future, but are there any other outstanding compatibility breakages planned pre-1.0 branch?

jsmitchell (Tue, 21 Nov 2017 17:16:11 GMT):
@pschwarz ^

benoit.razet (Tue, 21 Nov 2017 17:16:37 GMT):
Thanks @jsmitchell that's awesome!

jsmitchell (Tue, 21 Nov 2017 17:16:50 GMT):
Thanks for the contribution!

pschwarz (Tue, 21 Nov 2017 17:28:58 GMT):
@GhadiShayban All of the compatibility breakages will be in the 1.0.0rc1 that should be published today

pschwarz (Tue, 21 Nov 2017 17:29:25 GMT):
There should not be anymore before the final 1.0 release

shahdhruv 2 (Wed, 22 Nov 2017 09:05:07 GMT):
Has joined the channel.

WendellNichols (Wed, 22 Nov 2017 14:22:15 GMT):
Has joined the channel.

jsmitchell (Wed, 22 Nov 2017 17:58:45 GMT):
@benoit.razet you are in COMMITTERS now which means your PRs will build automatically

benoit.razet (Wed, 22 Nov 2017 17:59:30 GMT):
thanks!

GhadiShayban (Wed, 22 Nov 2017 18:33:44 GMT):
Is the new sawtooth_signing Context object thread-safe?

jsmitchell (Wed, 22 Nov 2017 18:33:59 GMT):
@pschwarz ^

GhadiShayban (Wed, 22 Nov 2017 18:34:01 GMT):
(in python)

pschwarz (Wed, 22 Nov 2017 19:14:19 GMT):
Yes, I believe so

chandrairawan (Thu, 23 Nov 2017 02:17:11 GMT):
Has left the channel.

DrewLexmond (Thu, 23 Nov 2017 02:46:35 GMT):
Has joined the channel.

ajenie (Thu, 23 Nov 2017 05:02:18 GMT):
Hi all, just read in hyperledger blog that concensus algorithm in sawtooth is pluggable. How do i do that? Thanks in advance.

BDAP1729 (Thu, 23 Nov 2017 06:20:42 GMT):
Has joined the channel.

BDAP1729 (Thu, 23 Nov 2017 06:20:55 GMT):
Hi, I am new to sawtooth. I am Getting-Started with it on a ubuntu box (using vagrant). I am following the documentation at https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html to install it on the box. However, when i use the command "intkey create_batch", i get an "ImportError: cannot import name 'State Entry'". Can anyone help me out with this?

BDAP1729 (Thu, 23 Nov 2017 06:20:55 GMT):
Hi, I am new to sawtooth. I am Getting-Started with it on a ubuntu box (using vagrant). I am following the documentation at https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html to install it on the box. However, when i use the command "intkey create_batch", i get an "ImportError: cannot import name 'StateEntry'". Can anyone help me out with this?

zzying (Thu, 23 Nov 2017 08:25:20 GMT):
Has joined the channel.

BasanthVerma (Thu, 23 Nov 2017 10:37:38 GMT):
Has joined the channel.

grkvlt (Thu, 23 Nov 2017 23:10:46 GMT):
hi @here - i'm not sure i understand the difference between the `sawtooth-core` and `sawtooth-seth` repositories? the Seth version seems just to be a copy? how am i meant to use it now?

grkvlt (Thu, 23 Nov 2017 23:21:15 GMT):
also, seems incomplete? e.g. `bin/build_seth_go` is referenced, but doesn't exist...

grkvlt (Thu, 23 Nov 2017 23:25:53 GMT):
also, why does `build_all installed` seem to create Docker images that say `LABEL "install-type" "mounted"` still - am i doing something wrong? this is on `sawtooth-core`, btw

ruchit 2 (Thu, 23 Nov 2017 23:33:58 GMT):
Has joined the channel.

Dan (Fri, 24 Nov 2017 02:18:36 GMT):
@grkvlt we just moved Seth to its own repo. Probably will have some rough edges for a few days.

michaelcwang2 (Fri, 24 Nov 2017 02:51:54 GMT):
Has joined the channel.

vinit_3101 (Fri, 24 Nov 2017 07:49:28 GMT):
Has joined the channel.

Dan (Fri, 24 Nov 2017 16:20:29 GMT):
@ajenie here's a gist showing changing between devmode and poet repeatedly. Note there was a bug discovered with the transaction flag --wait (to make the CLI wait for the transaction to commit). If that option has not been fixed you can just drop that flag from each command. Probably but in a few seconds of sleep in place of that. https://gist.github.com/dcmiddle/756190a1b0139faa16f9ac5150b7f2e5

ajenie (Fri, 24 Nov 2017 23:00:01 GMT):
Thanks indeed for the information @Dan. I'll give it a try.

ajenie (Fri, 24 Nov 2017 23:00:01 GMT):
Thanks indeed for the information @Dan . I'll give it a try.

grkvlt (Sat, 25 Nov 2017 17:22:45 GMT):
@Dan no problem - if you'd like any testing done, or there's any way i can help, just message me and let me know

bmiller59 (Sat, 25 Nov 2017 19:31:15 GMT):
Has joined the channel.

mikykey (Sun, 26 Nov 2017 07:43:38 GMT):
Has left the channel.

BeeKay (Sun, 26 Nov 2017 18:57:41 GMT):
Is STL-321 open? If yes, can i take it up?

mfford (Mon, 27 Nov 2017 14:34:56 GMT):
@BeeKay STL-321 is actually an Epic whose component stories have already been completed

agunde (Mon, 27 Nov 2017 14:35:18 GMT):
@BDAP1729 What version of sawtooth are you using?

woodyjon (Mon, 27 Nov 2017 14:36:00 GMT):
Has joined the channel.

mfford (Mon, 27 Nov 2017 14:36:41 GMT):
@BeeKay There are other stories listed under "Help Wanted" that could use attention if you wish to contribute

woodyjon (Mon, 27 Nov 2017 14:42:59 GMT):
Hello all. I have a question about sawtooth: I am working on a project of shipping management amongst a consortium with untrusted parties using blockchain. I thought sawtooth would be a good option to study further (I am following the hyperledger course on edx). But if I want payments to be made automatically based on some conditions (e.g. a good being delivered), how would you go about that ? I could do it with ethereum, but as I am within a consortium, a permissioned blockchain like sawtooth seems more adequate. At the same I have the impression that I would need to be plugged somehow with bitcoin or ethereum if I need transfer of value and not only transfer of information. What do you think? Are there supply chain projects that use sawtooth and that also handle automatic payments? Thank you very much.

jsmitchell (Mon, 27 Nov 2017 16:02:43 GMT):
@woodyjon you could create an account concept which tracks off-chain currency transfers (denominated in real currency), and then have transactions which reconcile the real world payments with the 'owed' money on the chain

jsmitchell (Mon, 27 Nov 2017 16:04:11 GMT):
e.g. Party A owes Party B $100k on delivery of Shipment X. Accounts receivable for Party A submits a reconciliation transaction on receipt of the $100k wire transfer which results in settlement of the exchange on chain.

jsmitchell (Mon, 27 Nov 2017 16:04:11 GMT):
e.g. Party A owes Party B $100k on delivery of Shipment X. Accounts receivable for Party B submits a reconciliation transaction on receipt of the $100k wire transfer which results in settlement of the exchange on chain.

woodyjon (Mon, 27 Nov 2017 16:12:29 GMT):
you mean an off chain reconciliation transaction?

jsmitchell (Mon, 27 Nov 2017 16:12:42 GMT):
well, the transaction would be on chain

jsmitchell (Mon, 27 Nov 2017 16:12:52 GMT):
but it would be the result of moving money off chain

woodyjon (Mon, 27 Nov 2017 16:22:05 GMT):
ok

woodyjon (Mon, 27 Nov 2017 16:23:16 GMT):
but the interesting thing with ethereum, for example, is that I can link transactions with automatic exchange of value

woodyjon (Mon, 27 Nov 2017 16:23:30 GMT):
maybe possible to link the 2 blockchains then?

jsmitchell (Mon, 27 Nov 2017 16:27:44 GMT):
you can link transactions with on-chain exchange of value in ethereum because there is the perception that ether has value as a 'digital currency'

jsmitchell (Mon, 27 Nov 2017 16:28:05 GMT):
are you going to try to convince your shipping consortium to transact using a digital currency?

woodyjon (Mon, 27 Nov 2017 16:29:47 GMT):
I am a little bit looking into the future here

woodyjon (Mon, 27 Nov 2017 16:30:25 GMT):
I like the link between the tracking of a real world asset and the automatic payment upon delivery

jsmitchell (Mon, 27 Nov 2017 16:51:19 GMT):
you can certainly define a digital currency on sawtooth

jsmitchell (Mon, 27 Nov 2017 16:55:31 GMT):
you just need to get your consortium to agree it has value

jsmitchell (Mon, 27 Nov 2017 16:55:41 GMT):
(same with ether, same with bitcoin)

woodyjon (Mon, 27 Nov 2017 17:02:47 GMT):
yes indeed

woodyjon (Mon, 27 Nov 2017 17:05:14 GMT):
thank you very much for those ideas and for your answers

woodyjon (Mon, 27 Nov 2017 17:17:10 GMT):
@jsmitchell do you know where I can find more info about making my currency on sawtooth? (doc, tuto?)

pschwarz (Mon, 27 Nov 2017 17:18:33 GMT):
There aren't any examples specifically about currency, but you can look at the app developers guide in the documentation: https://sawtooth.hyperledger.org/docs/core/releases/0.8/app_developers_guide.html

woodyjon (Mon, 27 Nov 2017 17:19:07 GMT):
thank you

woodyjon (Mon, 27 Nov 2017 17:19:37 GMT):
basically it is just another asset

meridian (Mon, 27 Nov 2017 18:14:31 GMT):
has anyone used Town Crier with sawtooth ?

zac (Mon, 27 Nov 2017 18:20:17 GMT):
@woodyjon Well a currency is basically just another asset. The hard part is getting people to exchange your digital currency for real world goods and services. I think that is mostly a problem that needs to be solved in the real world and not in the sofw=

zac (Mon, 27 Nov 2017 18:20:17 GMT):
@woodyjon Well a currency is basically just another asset. The hard part is getting people to exchange your digital currency for real world goods and services. I think that is mostly a problem that needs to be solved in the real world and not in the software (though the software will certainly have some requirements, which Sawtooth likely mostly satisfies out of the box).

meridian (Mon, 27 Nov 2017 18:22:09 GMT):
my approach would just be to use it as a unit of account

zac (Mon, 27 Nov 2017 18:22:28 GMT):
The advantage of Eth is those real world problems are largely already solved. People are already convinced (for now at least) that it is money, and can be exchanged for things.

zac (Mon, 27 Nov 2017 18:23:03 GMT):
But with the number of ICOs, it certainly seems like there is room for innovation in the space.

meridian (Mon, 27 Nov 2017 18:23:16 GMT):
or you could "peg" / "tether" it if you would like to a currency like USD

zac (Mon, 27 Nov 2017 18:23:19 GMT):
What do you mean by that @meridian?

zac (Mon, 27 Nov 2017 18:23:32 GMT):
"unit of account" that is

meridian (Mon, 27 Nov 2017 18:23:44 GMT):
for book-keeping purposes

meridian (Mon, 27 Nov 2017 18:23:59 GMT):
not re-demable for value, just tracks value

zac (Mon, 27 Nov 2017 18:24:18 GMT):
I get pegging, though I am not sure how you would do it. Who is willing to be on the hook to pay out $100 USD for 1 Sawtooth-Buck (or whatever)

zac (Mon, 27 Nov 2017 18:24:18 GMT):
I get pegging, though I am not sure how you would do it. Who is willing to be on the hook to pay out $100 USD for 1 Sawtooth-Buck (or whatever)?

meridian (Mon, 27 Nov 2017 18:24:32 GMT):
most businesses are going to convert to fiat anyways, until the day comes the IRS accepts bitcoin for payment

meridian (Mon, 27 Nov 2017 18:24:48 GMT):
there is no payout

meridian (Mon, 27 Nov 2017 18:24:55 GMT):
its an internal accounting system

meridian (Mon, 27 Nov 2017 18:25:08 GMT):
everything is settled in currency of choice (in this case USD)

zac (Mon, 27 Nov 2017 18:25:24 GMT):
Yes, I think that is the sort of problem we mostly see Sawtooth solving.

meridian (Mon, 27 Nov 2017 18:25:43 GMT):
yea, thats been our approach to using it

zac (Mon, 27 Nov 2017 18:25:51 GMT):
There are a group of stake holders, who all operate a Sawtooth network, and agree to use whatever digital token to track whatever ineractions between them.

meridian (Mon, 27 Nov 2017 18:26:00 GMT):
you have all the issues of custodial ship that come with cryptocurrency as well

zac (Mon, 27 Nov 2017 18:26:03 GMT):
But they do not have value outside of that group of stake holders.

meridian (Mon, 27 Nov 2017 18:26:13 GMT):
exactly

zac (Mon, 27 Nov 2017 18:26:55 GMT):
Not that you couldn't do something broader, but it would come with it's own set of challenges. Probably worth looking into some existing cryptocurrency solutions and see how they try to make the value proposition to the general public.

zac (Mon, 27 Nov 2017 18:27:11 GMT):
I have not used Town Crier by the way.

meridian (Mon, 27 Nov 2017 18:27:35 GMT):
quick question: has anyone used PoA Clique consensus

meridian (Mon, 27 Nov 2017 18:29:45 GMT):
compared to paritys Aura

meridian (Mon, 27 Nov 2017 18:29:52 GMT):
i know Eris uses parity doesnt it?

woodyjon (Mon, 27 Nov 2017 19:00:22 GMT):
My idea is to have a currency on sawtooth for clearing

woodyjon (Mon, 27 Nov 2017 19:00:46 GMT):
with a fixed exchange rate

woodyjon (Mon, 27 Nov 2017 19:00:47 GMT):
and then settlement with bitcoin

zac (Mon, 27 Nov 2017 19:12:07 GMT):
I'm no economist, but I have trouble seeing how that would work. Who is going to be responsible for matching that exchange rate? What if the price of bitcoin skyrockets? Are they going to just swallow the costs? What if everyone tries to exchange their Sawtooth currency at once? Will whoever it is have the funds to cover it?

zac (Mon, 27 Nov 2017 19:13:07 GMT):
Also, you've only kicked the "exchange on-chain resource for off-chain resource" problem down the road. You still have to have people certify, I "gave this person Sawtooth Bucks in exchange for something not represented on the chain".

zac (Mon, 27 Nov 2017 19:14:10 GMT):
Why not just skip the in between currency and exchange whatever asset for Bitcoin/USD directly?

zac (Mon, 27 Nov 2017 19:14:20 GMT):
(This is presumably a problem Bitcoin has solved by the way, so I don't imagine it is terrible)

zac (Mon, 27 Nov 2017 19:14:20 GMT):
(This is presumably a problem Bitcoin and other cryptocurrencies have solved by the way, so I don't imagine it is terrible)

zac (Mon, 27 Nov 2017 19:15:06 GMT):
(or at least the institutions willing to take Bitcoin for USD have solved it)

GhadiShayban (Mon, 27 Nov 2017 20:53:48 GMT):
@pschwarz for STL-849 I have narrowed the deadlock to ``` await asyncio.wait_for(self._futures[correlation_id], timeout=timeout)

GhadiShayban (Mon, 27 Nov 2017 20:54:16 GMT):
After a websocket disconnect, we are waiting on a zmq correlation_id that never arrives.

pschwarz (Mon, 27 Nov 2017 21:14:55 GMT):
That should have a timeout, though.

pschwarz (Mon, 27 Nov 2017 21:15:03 GMT):
Is there no timeout value?

GhadiShayban (Mon, 27 Nov 2017 21:17:49 GMT):
There is a 5 minute timeout...

pschwarz (Mon, 27 Nov 2017 21:24:32 GMT):
I haven't been able to reproduce this issue, so I'm going to have to lean on your debugging. What happens if you turn that timeout down

pschwarz (Mon, 27 Nov 2017 21:24:32 GMT):
I haven't been able to reproduce this issue, so I'm going to have to lean on your debugging. What happens if you turn that timeout down?

GhadiShayban (Mon, 27 Nov 2017 21:24:58 GMT):
And the timeout does in fact happen. Here is some potentially useful info @pschwarz : ``` validator_1 | [2017-11-27 21:19:22.389 DEBUG interconnect] ServerThread receiving CLIENT_BLOCK_LIST_REQUEST message: 75 bytes validator_1 | [2017-11-27 21:19:22.390 DEBUG interconnect] ServerThread sending CLIENT_BLOCK_LIST_RESPONSE to b'23ccf975d03945cb' ``` The validator does in fact send back a response to the rest API, but the rest API either never resumes its loop, or somehow never reads the message

pschwarz (Mon, 27 Nov 2017 21:25:40 GMT):
That is strange

GhadiShayban (Mon, 27 Nov 2017 21:25:42 GMT):
That log excerpt is immediately after this sequence: 1) Disconnecting a websocket 2) Then hitting a GET on the API

GhadiShayban (Mon, 27 Nov 2017 21:26:18 GMT):
It seems to be related to cleanup on the websocket path.

GhadiShayban (Mon, 27 Nov 2017 21:26:18 GMT):
It seems to be related to cleanup on the websocket handler path

pschwarz (Mon, 27 Nov 2017 21:29:19 GMT):
Are you seeing any debug messages about the rest api process disconnecting from the validator?

GhadiShayban (Mon, 27 Nov 2017 21:29:25 GMT):
nope

GhadiShayban (Mon, 27 Nov 2017 21:29:51 GMT):
How can I confirm debug messaging is enabled?

pschwarz (Mon, 27 Nov 2017 21:31:32 GMT):
How are you running the `sawtooth-rest-api`?

GhadiShayban (Mon, 27 Nov 2017 21:32:10 GMT):
right now for debugging I'm stepping through with pdb ```PYTHONPATH=. python3 sawtooth_rest_api/rest_api.py -vv --connect tcp://validator:4004 --bind 0.0.0.0:8080```

pschwarz (Mon, 27 Nov 2017 21:32:31 GMT):
Yeah, that has debug logging turned on: `-vv` does it

GhadiShayban (Mon, 27 Nov 2017 21:32:36 GMT):
We can reproduce this with websocket-client but not with aiohttp as a websockety client

GhadiShayban (Mon, 27 Nov 2017 21:32:36 GMT):
We can reproduce this with websocket-client but not with aiohttp as a websocket client

GhadiShayban (Mon, 27 Nov 2017 21:32:57 GMT):
So... something is different about the teardown

GhadiShayban (Mon, 27 Nov 2017 21:33:33 GMT):
More tidbits:

GhadiShayban (Mon, 27 Nov 2017 21:34:05 GMT):
If I use an aiohttp-based ws client *first*, then use websocket-client subsequently, the bug never manifests.

pschwarz (Mon, 27 Nov 2017 21:35:27 GMT):
When it does manifest itself, are you hitting a GET endpoint with a programmatic client or a browser (or both)

pschwarz (Mon, 27 Nov 2017 21:35:27 GMT):
When it does manifest itself, are you hitting a GET endpoint with a programmatic client or a browser (or both)?

GhadiShayban (Mon, 27 Nov 2017 21:35:41 GMT):
curl or requests, same

GhadiShayban (Mon, 27 Nov 2017 21:35:41 GMT):
curl or python requests, same

pschwarz (Mon, 27 Nov 2017 21:36:24 GMT):
Ok

GhadiShayban (Mon, 27 Nov 2017 21:36:37 GMT):
HTTP Req -> ZMQ message -> ZMQ response -> deadlock. Future inside the `_futures` map is never resolved

pschwarz (Mon, 27 Nov 2017 21:39:21 GMT):
I wonder if an exception is getting swallowed

pschwarz (Mon, 27 Nov 2017 21:41:02 GMT):
Can you throw a couple of try/excepts in the message routing code? Around `sawtooth_rest_api/messaging.py` lines 74 and 79 each

GhadiShayban (Mon, 27 Nov 2017 21:42:34 GMT):
yup

GhadiShayban (Mon, 27 Nov 2017 21:46:41 GMT):
Exception handlers don't fire. But what does: On the *sad path* (websocket-client lib) we go through state_delta/_handle_unsubscribe() On the *not sad path but probably also sad but I don't know it yet* path (aiohttp websocket client): _handle_unsubscribe() is never invoked

GhadiShayban (Mon, 27 Nov 2017 21:46:41 GMT):
Exception handlers don't fire. But what does: On the *sad path* (websocket-client lib) we go through state_delta/ `_handle_unsubscribe()` On the *not sad path but probably also sad but I don't know it yet* path (aiohttp websocket client): `_handle_unsubscribe()` is never invoked

pschwarz (Mon, 27 Nov 2017 21:56:00 GMT):
In the case that you are going through `_handle_unsubscribe`, are you seeing the results of ` LOGGER.info('Unsubscribing for state delta events')`

GhadiShayban (Mon, 27 Nov 2017 21:57:21 GMT):
yes

pschwarz (Mon, 27 Nov 2017 21:59:23 GMT):
Does the future resolve for the unsubscribe message?

GhadiShayban (Mon, 27 Nov 2017 22:00:11 GMT):
Unclear. How can I debug that clearly?

pschwarz (Mon, 27 Nov 2017 22:03:48 GMT):
Toss a log message at the end of `_handle_unsubscribe`

GhadiShayban (Mon, 27 Nov 2017 22:12:49 GMT):
looks like at the end of _handle_unsubscribe that we go into the `await self._unregister_subscriptions()` then

GhadiShayban (Mon, 27 Nov 2017 22:22:10 GMT):
@pschwarz I traced through handle_unsubscribe, but it's this that never completes: `_unregister_subscriptions` https://github.com/hyperledger/sawtooth-core/blob/f3e194029f0eb91b532edffc97b76c9fab82be10/rest_api/sawtooth_rest_api/state_delta_subscription_handler.py#L230-L233

GhadiShayban (Mon, 27 Nov 2017 22:22:44 GMT):
We send the unsubscribe request to the validator, it responds, *but* the rest api never processed the Unsubscribe_Response

pschwarz (Mon, 27 Nov 2017 22:33:26 GMT):
Hmm

pschwarz (Mon, 27 Nov 2017 22:33:36 GMT):
Does the validator send the response?

GhadiShayban (Mon, 27 Nov 2017 22:33:44 GMT):
yup

GhadiShayban (Mon, 27 Nov 2017 22:33:48 GMT):
_unregister_subscriptions never returns

GhadiShayban (Mon, 27 Nov 2017 22:33:48 GMT):
`_unregister_subscriptions` never returns

rjones (Mon, 27 Nov 2017 22:34:02 GMT):
Has left the channel.

GhadiShayban (Mon, 27 Nov 2017 22:34:27 GMT):
I also got future cancelled error after wrapping ~ L110-116

pschwarz (Mon, 27 Nov 2017 22:34:43 GMT):
I'm still not sure why the bug is happening, but is there anyway you can put together a simple client that reproduces this? It may help me debug it

GhadiShayban (Mon, 27 Nov 2017 22:34:45 GMT):
the `async for msg in ws` coroutine

GhadiShayban (Mon, 27 Nov 2017 22:35:09 GMT):
Sure. Attach to JIRA or dm you?

pschwarz (Mon, 27 Nov 2017 22:35:23 GMT):
Attach it to the JIRA

GhadiShayban (Mon, 27 Nov 2017 22:35:27 GMT):
will do

pschwarz (Mon, 27 Nov 2017 22:35:30 GMT):
Thanks

GhadiShayban (Mon, 27 Nov 2017 22:35:40 GMT):
thank you for your time Peter.

pschwarz (Mon, 27 Nov 2017 22:36:00 GMT):
Thanks for the debugging!

GhadiShayban (Mon, 27 Nov 2017 22:40:09 GMT):
Added a couple basic scripts -- ping me for any clarity.

PratikDhrona (Mon, 27 Nov 2017 23:08:36 GMT):
Has joined the channel.

pschwarz (Mon, 27 Nov 2017 23:09:18 GMT):
:thumbsup:

woodyjon (Mon, 27 Nov 2017 23:28:40 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=HNQSm8kv9Dyg6YF8N) @zac That is what I mean. Use Bitcoin for the currency. But for knowing how much you owe, we could use our own currency on our blockchain, where the amounts owed will be triggered automatically by transactions. Then at the end of each day, for example, you know how many bitcoins you owe to that specific party.

muasif80 (Tue, 28 Nov 2017 03:18:51 GMT):
Has joined the channel.

zac (Tue, 28 Nov 2017 04:01:27 GMT):
How necessary is it to track bitcoin balance on the Sawtooth chain?

zac (Tue, 28 Nov 2017 04:02:50 GMT):
That seems error prone to me. You have two sources of truth. The bitcoin balance sheet you are tracking on your Sawtooth asset chain, and a people's actual bitcoin balances. What's to stop a person from just refusing to pay what they owe at the end of the day?

zac (Tue, 28 Nov 2017 04:03:57 GMT):
It would seem to me to be much cleaner to do it at transaction time. So I have 20 Sawtooth Widgets, which I am tracking on the Sawtooth blockchain, and which I am willing to exchange for 1 bitcoin.

zac (Tue, 28 Nov 2017 04:03:57 GMT):
It would seem to me to be much cleaner to do it at transaction time. So say I have 20 Sawtooth Widgets, which I am tracking on the Sawtooth blockchain, and which I am willing to exchange for 1 bitcoin.

zac (Tue, 28 Nov 2017 04:06:07 GMT):
So someone says, they would like to give me 1 bitcoin for those Sawtooth Widgets. They would create two transactions, one requesting the Sawtooth Widgets on the Sawtooth blockchain, and one sending me 1 bitcoin on the Bitcoin blockchain.

zac (Tue, 28 Nov 2017 04:06:07 GMT):
So someone says, they would like to give me 1 bitcoin for those Sawtooth Widgets. They would create two transactions, one creating a request for the Sawtooth Widgets on the Sawtooth blockchain, and one sending me 1 bitcoin on the Bitcoin blockchain.

zac (Tue, 28 Nov 2017 04:06:07 GMT):
Someone says they would like to give me 1 bitcoin for those Sawtooth Widgets. They would create two transactions, one creating a request for the Sawtooth Widgets on the Sawtooth blockchain, and one sending me 1 bitcoin on the Bitcoin blockchain.

zac (Tue, 28 Nov 2017 04:07:16 GMT):
Once I see that the bitcoin transaction has gone through, I submit a transaction to the Sawtooth blockchain that accepts their request for Sawtooth Widgets.

zac (Tue, 28 Nov 2017 04:09:12 GMT):
This is analogous to exchanging cash for a good. The exchange isn't perfectly simultaneous, but they happen at around the same time. One person registers their interest in a good, and hands over cash. The other person then hands over the good.

zac (Tue, 28 Nov 2017 04:10:51 GMT):
The Sawtooth blockchain will never have a way of verifying this off-chain interaction occurred, but if you keep them in same timeframe, and rely on the proper sources of truth, at least you can minimize the window for funny business.

BDAP1729 (Tue, 28 Nov 2017 07:31:22 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=2NjmbnBYMpHTMwZHn) @agunde Hi, Thanks for your response. The version of sawtooth on my box is : sawtooth-cli (Hyperledger Sawtooth) version 0.8.12

woodyjon (Tue, 28 Nov 2017 08:42:42 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=PuupwgMH3TYcYCd4Q) @zac :thumbsup: Good points! I will study that option.

woodyjon (Tue, 28 Nov 2017 08:42:53 GMT):
Thanks

DjCillers (Tue, 28 Nov 2017 09:43:15 GMT):
Has joined the channel.

venkym 1 (Tue, 28 Nov 2017 11:41:02 GMT):
Has joined the channel.

grkvlt (Tue, 28 Nov 2017 13:57:05 GMT):
@woodyjon @zac fyi, i am also working on a project to implement a cryptocurrency using sawtooth. what attracted me was the fact that i can use seth, and get evm solidity csmart contracts, which would make it easy to implement an erc20 spec token. i'm still at the r&d stage just now, and can't reveal too much yet, though.

grkvlt (Tue, 28 Nov 2017 13:58:08 GMT):
i also saw this https://fullmetalhealth.com/cryptoasset-framework-intels-hyperledger-sawtooth-part-one/ which describes using sawtooth to build a cryptocurrency using similar techniques, so reading that might give you some pointers...

meridian (Tue, 28 Nov 2017 14:03:21 GMT):
the question I ask myself when I see people talking about making a crypto on sawtooth is: why

meridian (Tue, 28 Nov 2017 14:03:34 GMT):
what does sawtooth offer that existing blockchains dont?

meridian (Tue, 28 Nov 2017 14:04:06 GMT):
why not just join an existing project? or fork and improve one? like Zcash et al

vadimmelnicuk (Tue, 28 Nov 2017 14:10:57 GMT):
Has joined the channel.

woodyjon (Tue, 28 Nov 2017 14:18:05 GMT):
I am not making a crypto on sawtooth. I want to use sawtooth to track assets within a consortium, and somehow I want to link exchange of goods with automatic payments.

woodyjon (Tue, 28 Nov 2017 14:19:29 GMT):
the option I prefer at the moment, is the use of sawtooth for asset tracking and combining it with Bitcoin payments.

jsmitchell (Tue, 28 Nov 2017 15:05:26 GMT):
@woodyjon you might want to look into the conditional transfers concept for linking operations between blockchain instances

jsmitchell (Tue, 28 Nov 2017 15:05:28 GMT):
https://interledger.org/rfcs/0001-interledger-architecture/

agunde (Tue, 28 Nov 2017 15:36:17 GMT):
@BDAP1729 hmm I can't seems to reproduce that error.

Johnjam (Tue, 28 Nov 2017 16:05:57 GMT):
Has joined the channel.

zac (Tue, 28 Nov 2017 16:31:38 GMT):
As near as I can tell the main reason to implement a cryptocurrency is to have a lucrative ICO

zac (Tue, 28 Nov 2017 16:31:38 GMT):
As near as I can tell the main reason to implement a cryptocurrency is to have a lucrative ICO :wink:

zac (Tue, 28 Nov 2017 16:33:18 GMT):
Beyond that, I don't really know enough about cryptocurrencies to comment. I assume like any other space there is room to innovate though.

zac (Tue, 28 Nov 2017 16:34:21 GMT):
@grkvlt I'll be very curious to hear more as the project develops. I imagine you're using Sawtooth in some interesting ways we haven't seen before.

grkvlt (Tue, 28 Nov 2017 16:37:15 GMT):
@zac i like the technology so far, so yes, hopefully it'll be able to do some interesting stuff

grkvlt (Tue, 28 Nov 2017 16:38:41 GMT):
one thing i wonder if anyone @here has input on is scalability - what size of sawtooth clusters (number of validators, transaction processors, topology, hardware types, bandwidth, tps, etc...) have people tested on, and what would reasonable limits be, if any to the parameters mentioned?

pschwarz (Tue, 28 Nov 2017 16:39:17 GMT):
Friendly reminder: please don't use `at here` for channel notifications

grkvlt (Tue, 28 Nov 2017 16:39:28 GMT):
oh? why?

grkvlt (Tue, 28 Nov 2017 16:39:46 GMT):
surely its better than at channel?

pschwarz (Tue, 28 Nov 2017 16:39:49 GMT):
It notifies everyone in a noisy manner

pschwarz (Tue, 28 Nov 2017 16:39:54 GMT):
Same thing

pschwarz (Tue, 28 Nov 2017 16:40:10 GMT):
You can just put your message in the channel and it will be read by all interested parties

grkvlt (Tue, 28 Nov 2017 16:40:28 GMT):
ah, is it not like slack, then - sorry!

pschwarz (Tue, 28 Nov 2017 16:40:41 GMT):
No worries - hence the friendly part :)

grkvlt (Tue, 28 Nov 2017 16:42:21 GMT):
(i know slack warns you with `at channel` use that you will annoy X hundred people across Y timezones, are you _sure_ you want to do that?)

amundson (Tue, 28 Nov 2017 16:43:42 GMT):
FYI - we are planning to do a developer preview 1.0.0rc3 release today or tomorrow

pschwarz (Tue, 28 Nov 2017 16:43:57 GMT):
As far as you question goes: we've been doing a lot of testing with networks of size 5 and 10

amundson (Tue, 28 Nov 2017 16:43:57 GMT):
also, another 0.8.x release with some backports

pschwarz (Tue, 28 Nov 2017 16:44:11 GMT):
A lot of it on AWS

grkvlt (Tue, 28 Nov 2017 16:44:22 GMT):
cool. where can i keep up with the roadmap and new features? here? or is there a mailing list or something?

amundson (Tue, 28 Nov 2017 16:44:55 GMT):
I've been sending release announcements to the mailing list

amundson (Tue, 28 Nov 2017 16:45:17 GMT):
https://lists.hyperledger.org/pipermail/hyperledger-stl/

grkvlt (Tue, 28 Nov 2017 16:45:30 GMT):
great, thx

amundson (Tue, 28 Nov 2017 16:48:06 GMT):
re:roadmap we are very focused on stability right now ahead of the 1.0 release. there is some work going on with implementing Raft consensus. We expect a big usability push soon, refining docs and such to help with onboarding projects.

GhadiShayban (Tue, 28 Nov 2017 17:12:06 GMT):
If we can get STL-849 solved prior to 1.0, it would be amazing. The rationale for us: we are trying to get our off-chain polling replaced with the statedelta push. Our team is happy to set aside some time if it would help to see our system for debugging... We sunk about 8 person-hours into it this week, but such is life.

pschwarz (Tue, 28 Nov 2017 18:13:13 GMT):
@GhadiShayban are you connecting to the WS via your own app server?

pschwarz (Tue, 28 Nov 2017 18:13:36 GMT):
Or in the browser?

pschwarz (Tue, 28 Nov 2017 18:21:37 GMT):
Just thinking that it may be more reliable to connect over the ZMQ connection, though a bit of work on your part to get it working - plus you'd be able to get more types of events

pschwarz (Tue, 28 Nov 2017 18:21:37 GMT):
Just thinking that it may be more reliable to connect over the ZMQ connection, though a bit of work on your part to get it working - but you'd be able to get more types of events

pschwarz (Tue, 28 Nov 2017 18:32:35 GMT):
Will take a look at the bug using your scripts

GhadiShayban (Tue, 28 Nov 2017 18:55:04 GMT):
python WS client direct to REST API

pschwarz (Tue, 28 Nov 2017 18:55:32 GMT):
I'm still not able to reproduce it, even using your `socktest.py` script... :/

benoit.razet (Tue, 28 Nov 2017 19:01:27 GMT):
@pschwarz For some reason the bug is more easily reproducible in our configuration of dokchain+sawtooth, we always trigger it. Nevertheless, I am able to reproduce the bug just with Sawtooth with the latest master, but the bug is not triggered as easily, I have to iterate many times the following: open the ws, send several intkey transactions, close the websocket, open the websocket again, etc.

benoit.razet (Tue, 28 Nov 2017 19:03:41 GMT):
in this case, I have to change the script to _listen_ to the prefix of intkey: '1cf126'

pschwarz (Tue, 28 Nov 2017 19:06:03 GMT):
That's the missing step to reproduce - send a single intkey transaction, and then I can reproduce it

benoit.razet (Tue, 28 Nov 2017 19:06:18 GMT):
:)

pschwarz (Tue, 28 Nov 2017 19:19:22 GMT):
Here's something interesting about it - if I leave it (I went to grab a coffee) and come back the timeout must have occurred, and everything works again

benoit.razet (Tue, 28 Nov 2017 19:21:31 GMT):
on my side, if I wait the timeout, then I can send intkey transactions, they are processed by the validator, but the command the send the intkey is hanging (until the timeout)

benoit.razet (Tue, 28 Nov 2017 19:21:31 GMT):
on my side, if I wait the timeout, then I can send intkey transactions, they are processed by the validator, but the command that sent the intkey is hanging (until the timeout)

GhadiShayban (Tue, 28 Nov 2017 19:27:48 GMT):
validator responses appear sent but not processed.

GhadiShayban (Tue, 28 Nov 2017 19:28:22 GMT):
I haven't been able to reproduce the FutureCancelledError that I saw either, but I'll just notice it for reference as the responses are managed by a map of {id => Future}

pschwarz (Tue, 28 Nov 2017 19:30:20 GMT):
I think I might have a fix

pschwarz (Tue, 28 Nov 2017 19:30:27 GMT):
Going to put together a PR

benoit.razet (Tue, 28 Nov 2017 19:30:50 GMT):
awesome!

GhadiShayban (Tue, 28 Nov 2017 20:03:10 GMT):
I've tested your PR @pschwarz and it clears up the bug. :whisky:

GhadiShayban (Tue, 28 Nov 2017 20:03:40 GMT):
We greatly appreciate your effort.

benoit.razet (Tue, 28 Nov 2017 20:13:35 GMT):
also tested on bare sawtooth and could not reproduce the bug :thumbsup:

pschwarz (Tue, 28 Nov 2017 20:19:36 GMT):
Great!

Dan (Tue, 28 Nov 2017 20:20:35 GMT):
nice work guys!

jsmitchell (Tue, 28 Nov 2017 20:51:18 GMT):
:thumbsup:

pschwarz (Tue, 28 Nov 2017 22:22:07 GMT):
The fix is merged into master

shreyanadvisory (Wed, 29 Nov 2017 03:37:30 GMT):
Has joined the channel.

Mow (Wed, 29 Nov 2017 09:22:03 GMT):
Has joined the channel.

woodyjon (Wed, 29 Nov 2017 11:59:10 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=c28qyYaE2txQNBEY6) @jsmitchell Thanks!

woodyjon (Wed, 29 Nov 2017 12:00:10 GMT):
Yes I had a presentation from interledger. Very interesting.

ajenie (Wed, 29 Nov 2017 12:43:04 GMT):
I read about *Track and Trade* transaction family specification in the documentation. Anybody knows where i can pull the codes from? Thank you in advance.

greg2git (Wed, 29 Nov 2017 13:38:10 GMT):
Has left the channel.

hunter32 (Wed, 29 Nov 2017 15:31:50 GMT):
Has joined the channel.

hunter32 (Wed, 29 Nov 2017 15:32:19 GMT):
I am tryight to Configure Sawtooth to Use SGX

jsmitchell (Wed, 29 Nov 2017 15:32:31 GMT):
@ajenie https://github.com/hyperledger/sawtooth-supply-chain

hunter32 (Wed, 29 Nov 2017 15:32:47 GMT):
anyone help me?

hunter32 (Wed, 29 Nov 2017 15:35:54 GMT):
check this please https://pastebin.com/uuk5tc3V

jsmitchell (Wed, 29 Nov 2017 15:42:20 GMT):
@hunter32 looks like a cut & paste error

jsmitchell (Wed, 29 Nov 2017 15:42:43 GMT):
``` sawtooth@dsg2:/tmp$ sawtooth config proposal create -k /etc/sawtooth/keys/validator.priv \ > usage: sawtooth config proposal create [-h] [-k KEY] [-o OUTPUT | --url URL] setting [setting ...] sawtooth config proposal create: error: the following arguments are required: setting sawtooth@dsg2:/tmp$ sawtooth.consensus.algorithm=poet \ ```

hunter32 (Wed, 29 Nov 2017 15:48:22 GMT):

code forterminail

hunter32 (Wed, 29 Nov 2017 15:48:40 GMT):
Here is where i took it: https://sawtooth.hyperledger.org/docs/core/releases/latest/sysadmin_guide/configure_sgx.html#configure-the-validator-to-use-sgx-poet

hunter32 (Wed, 29 Nov 2017 15:52:04 GMT):
@jsmitchell the first comands had errors but i ficed them and now i get this: https://pastebin.com/Aav2iRuQ

hunter32 (Wed, 29 Nov 2017 15:52:04 GMT):
@jsmitchell the first comands had errors but i fixed them and now i get this: https://pastebin.com/Aav2iRuQ

hunter32 (Wed, 29 Nov 2017 15:52:04 GMT):
@jsmitchell the first comands had errors but i fixed them and now i get this: https://pastebin.com/Aav2iRuQ check here for more info about my problem https://jira.hyperledger.org/browse/STL-904

pschwarz (Wed, 29 Nov 2017 15:57:03 GMT):
@Dan :point_up:

compleatang (Wed, 29 Nov 2017 19:55:59 GMT):
Has left the channel.

Dan (Wed, 29 Nov 2017 21:25:41 GMT):
@hunter32 I think it's the CRT that you may need to use rather than the .key.

Dan (Wed, 29 Nov 2017 21:26:09 GMT):
Also did you get an acknowledgement from intel that the certificate was accepted?

Dan (Wed, 29 Nov 2017 22:58:53 GMT):
@hunter32 sorry, I forgot what was in the example commands. You need the private key and the self-signed certificate in the same file. You can actually just cat them together, but there's also an open-ssl command that will do that.

Dan (Wed, 29 Nov 2017 23:01:01 GMT):
I'm not somewhere where I can look that command up but will try to post it later

mkhadem (Thu, 30 Nov 2017 01:22:25 GMT):
Has joined the channel.

Dan (Thu, 30 Nov 2017 01:24:27 GMT):
Ok, here you go... Those instructions how to make a self-signed certificate. They also show you how to create a PFX file. That's a password protected file with the private key and the self-signed cert. You can extract the two together into a pem file like this: `openssl pkcs12 -in new-credential.pfx -out your-very-special.pem -nodes`. Alternatively I'm pretty sure you can just cat the key file on the crt file and call it a pem, but the openssl command seems more official.

Dan (Thu, 30 Nov 2017 01:24:27 GMT):
Ok, here you go... Those instructions how to make a self-signed certificate. They also show you how to create a PFX file. That's a password protected file with the private key and the self-signed cert. You can extract the two together into a pem file like this: `openssl pkcs12 -in new-credential.pfx -out your-very-special.pem -nodes`. Alternatively I'm pretty sure you can just cat the key file on the crt file and call it a pem, but the former seems more official.

Dan (Thu, 30 Nov 2017 01:25:16 GMT):
I'll be curious to hear if you get it working or you encounter a problem @hunter32

mkhadem (Thu, 30 Nov 2017 01:29:57 GMT):
Hi, I am just evaluating different projects to find the right platform for my application. I saw this article on web and wanted to know if anybody knows about this POET weakness in sawtooth which is based on Intel SGX if I am not wrong, thanks.

mkhadem (Thu, 30 Nov 2017 01:31:35 GMT):
http://www.securityweek.com/researchers-use-intel-sgx-conceal-malware-extract-private-keys

Fofa (Thu, 30 Nov 2017 02:32:58 GMT):
Has joined the channel.

Fofa (Thu, 30 Nov 2017 02:33:58 GMT):
couldn't connect to docker saemon at http+docker:?/locallunixsocket can someone help me to find out why i can;t run or hyperledher sawtooth.. i keep receiving errors

Fofa (Thu, 30 Nov 2017 03:08:43 GMT):
hi, I am having trouble running the hyperledger .. can someone help here

Fofa (Thu, 30 Nov 2017 05:25:40 GMT):
i keep receiving error on loading hyperledger sawtooth .. can anybody help

tmorin (Thu, 30 Nov 2017 10:31:36 GMT):
Has joined the channel.

hunter32 (Thu, 30 Nov 2017 13:22:07 GMT):
@Dan i tried your openssl command and now i get that https://pastebin.com/MVKBLZmY here is the content of my .pem file https://pastebin.com/bHB6i63r in this command openssl pkcs12 -in client.pfx -out sgx-certificate.pem -nodes` client.pfx is the file generated from here https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using

hunter32 (Thu, 30 Nov 2017 13:22:07 GMT):
@Dan i tried your openssl command and now i get that https://pastebin.com/MVKBLZmY here is the content of my .pem file https://pastebin.com/bHB6i63r in this command openssl pkcs12 -in client.pfx -out sgx-certificate.pem -nodes` the client.pfx is the file generated from here https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using

hunter32 (Thu, 30 Nov 2017 13:22:07 GMT):
@Dan i tried your openssl command and now i get that https://pastebin.com/MVKBLZmY here is the content of my .pem file https://pastebin.com/bHB6i63r in this command openssl pkcs12 -in client.pfx -out sgx-certificate.pem -nodes` the client.pfx is the file generated from here https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using Same result with cutting client.key and pasting in client.crt and then rename in.pem file here is what i created that way: https://pastebin.com/skcVGihx

hunter32 (Thu, 30 Nov 2017 13:22:07 GMT):
@Dan i tried your openssl command and now i get that https://pastebin.com/MVKBLZmY here is the content of my .pem file https://pastebin.com/bHB6i63r in this command openssl pkcs12 -in client.pfx -out sgx-certificate.pem -nodes` the client.pfx is the file generated from here https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using Same result with cutting client.key and pasting in client.crt and then rename in.pem file

Dan (Thu, 30 Nov 2017 13:37:44 GMT):
@hunter32 that's a little progress :) That's the error that I get when I use an unauthorized certificate. So I think you now have the formatting right but the credential itself is not recognized by IAS. Did you get some acknowledgement from them that the credential was accepted?

hunter32 (Thu, 30 Nov 2017 13:44:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oYsNJhHZRp3vaSzDv) @Dan Thank god. I hoped in that answer.... i got an SPID with an old client.crt but then i updated it and i have applied. So i wait INTEL to update it! Thanks a lot. i will come back soon :P

hunter32 (Thu, 30 Nov 2017 13:44:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oYsNJhHZRp3vaSzDv) @Dan Thank god i hoped to get that aswer.... i got an SPID with an old client.crt but then i update it and i have applied. so i wait INTEL to update! Thanks a lot. i will come back soon :P

Dan (Thu, 30 Nov 2017 13:47:04 GMT):
Cool. I hope they get back to you soon.

zac (Thu, 30 Nov 2017 15:22:10 GMT):
@Fofa What errors?

iamprem (Thu, 30 Nov 2017 18:16:39 GMT):
Has joined the channel.

agunde (Thu, 30 Nov 2017 22:26:40 GMT):
@ajenie https://github.com/hyperledger/sawtooth-core/pull/1194 this PR will enable configuring the peer thresholds.

ajenie (Fri, 01 Dec 2017 01:25:40 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Qrm8WdufjcL8sPXHQ) @jsmitchell thanks for the information.

ajenie (Fri, 01 Dec 2017 01:26:47 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=9swYCHTMSsiu7CFTJ) @agunde nice :thumbsup: thanks.

divssheth (Fri, 01 Dec 2017 07:57:43 GMT):
Hi Guys, I am new to sawtooth and have been trying to play with it. I am facing an issue while processing a block. I'm not sure what lead to this situation but these are the steps that I followed: 1. Install sawtooth on ubuntu 16.04. Followed this documentation and was able to get the network running with a standalone validator and was able to perform intkey transactions 2. Shut down the network. i.e. shut down validator, rest-api, settings-tp, intkey-tp 3. Started the network after a couple of days and the validator logs show the following: [2017-12-01 13:16:09.067 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1525 bytes [2017-12-01 13:16:09.070 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'5e6a6cc1817d4300' [2017-12-01 13:16:09.173 DEBUG publisher] Loaded batch injectors: [] [2017-12-01 13:16:09.175 DEBUG executor] failing transaction bd38c1edebd35b1a435b1ff5d34d39f1e057afc6bf9564b921513c725856244226568938de5d1e30598af06adcb5880856f69d7f43d523e7cc1b7623c859c1b3 of type (name=sawtooth_settings,version=1.0,encoding=application/protobuf) since it isn't required in the configuration [2017-12-01 13:16:09.175 DEBUG publisher] Batch aa04d5c06f3314c566230446d4f26f740cb4ccff1884a0c418227dfc6e95db0e4219bb9058bfccc10cac5ae3d8f87f8700eca82edbf7ccfa786955aa576f5668 invalid, not added to block. [2017-12-01 13:16:09.176 DEBUG publisher] Abandoning block (2, S:, P:14387f06): no batches added I tried addng the settings-tp family again to the config, it registers but can't seem to process the block in the above log [2017-12-01 13:15:12.597 INFO processor_handlers] registered transaction processor: connection_id=ca4f655c7e88f2743f437bc9bdb1d87d45da150ef589c9f0d74692c291e28fcf65cd8a067146c6fe2901644a9fa6eeca84255316b90c109766ab023b777074f5, family=sawtooth_settings, version=1.0, encoding=application/protobuf, namespaces=['000000'] * This leads me to another issue, where another transaction family that I have created is not getting registered (Not sure if these two are linked). Below is the command I'm using to register transaction families. * sawtooth config proposal create sawtooth.validator.transaction_families='[{"family": "coin-transaction", "version": "1.0", "encoding": "application/json"}, {"family":"sawtooth_settings", "version":"1.0", "encoding":"application/protobuf"}]' * NOTE: there are no errors. Neither in the rest-api nor the validator logs. I think I'll be able to solve this by starting the whole network from scratch i.e. new genesis block and new setup, but would like to understand why this issue crops up and how should I solve this in case it comes up again.

divssheth (Fri, 01 Dec 2017 07:57:43 GMT):
Hi Guys, I am new to sawtooth and have been trying to play with it. I am facing an issue while processing a block. I'm not sure what lead to this situation but these are the steps that I followed: 1. Install sawtooth on ubuntu 16.04. Followed this documentation and was able to get the network running with a standalone validator and was able to perform intkey transactions 2. Shut down the network. i.e. shut down validator, rest-api, settings-tp, intkey-tp 3. Started the network after a couple of days and the validator logs show the following: * [2017-12-01 13:16:09.067 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1525 bytes [2017-12-01 13:16:09.070 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'5e6a6cc1817d4300' [2017-12-01 13:16:09.173 DEBUG publisher] Loaded batch injectors: [] [2017-12-01 13:16:09.175 DEBUG executor] failing transaction bd38c1edebd35b1a435b1ff5d34d39f1e057afc6bf9564b921513c725856244226568938de5d1e30598af06adcb5880856f69d7f43d523e7cc1b7623c859c1b3 of type (name=sawtooth_settings,version=1.0,encoding=application/protobuf) since it isn't required in the configuration [2017-12-01 13:16:09.175 DEBUG publisher] Batch aa04d5c06f3314c566230446d4f26f740cb4ccff1884a0c418227dfc6e95db0e4219bb9058bfccc10cac5ae3d8f87f8700eca82edbf7ccfa786955aa576f5668 invalid, not added to block. [2017-12-01 13:16:09.176 DEBUG publisher] Abandoning block (2, S:, P:14387f06): no batches added * I tried addng the settings-tp family again to the config, it registers but can't seem to process the block in the above log *[2017-12-01 13:15:12.597 INFO processor_handlers] registered transaction processor: connection_id=ca4f655c7e88f2743f437bc9bdb1d87d45da150ef589c9f0d74692c291e28fcf65cd8a067146c6fe2901644a9fa6eeca84255316b90c109766ab023b777074f5, family=sawtooth_settings, version=1.0, encoding=application/protobuf, namespaces=['000000'] * This leads me to another issue, where another transaction family that I have created is not getting registered (Not sure if these two are linked). Below is the command I'm using to register transaction families. * sawtooth config proposal create sawtooth.validator.transaction_families='[{"family": "coin-transaction", "version": "1.0", "encoding": "application/json"}, {"family":"sawtooth_settings", "version":"1.0", "encoding":"application/protobuf"}]' * NOTE: there are no errors. Neither in the rest-api nor the validator logs. I think I'll be able to solve this by starting the whole network from scratch i.e. new genesis block and new setup, but would like to understand why this issue crops up and how should I solve this in case it comes up again.

divssheth (Fri, 01 Dec 2017 07:57:43 GMT):
Hi Guys, I am new to sawtooth and have been trying to play with it. I am facing an issue while processing a block. I'm not sure what lead to this situation but these are the steps that I followed: 1. Install sawtooth on ubuntu 16.04. Followed this documentation and was able to get the network running with a standalone validator and was able to perform intkey transactions 2. Shut down the network. i.e. shut down validator, rest-api, settings-tp, intkey-tp 3. Started the network after a couple of days and the validator logs show the following: *[2017-12-01 13:16:09.067 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1525 bytes [2017-12-01 13:16:09.070 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'5e6a6cc1817d4300' [2017-12-01 13:16:09.173 DEBUG publisher] Loaded batch injectors: [] [2017-12-01 13:16:09.175 DEBUG executor] failing transaction bd38c1edebd35b1a435b1ff5d34d39f1e057afc6bf9564b921513c725856244226568938de5d1e30598af06adcb5880856f69d7f43d523e7cc1b7623c859c1b3 of type (name=sawtooth_settings,version=1.0,encoding=application/protobuf) since it isn't required in the configuration [2017-12-01 13:16:09.175 DEBUG publisher] Batch aa04d5c06f3314c566230446d4f26f740cb4ccff1884a0c418227dfc6e95db0e4219bb9058bfccc10cac5ae3d8f87f8700eca82edbf7ccfa786955aa576f5668 invalid, not added to block. [2017-12-01 13:16:09.176 DEBUG publisher] Abandoning block (2, S:, P:14387f06): no batches added* I tried addng the settings-tp family again to the config, it registers but can't seem to process the block in the above log *[2017-12-01 13:15:12.597 INFO processor_handlers] registered transaction processor: connection_id=ca4f655c7e88f2743f437bc9bdb1d87d45da150ef589c9f0d74692c291e28fcf65cd8a067146c6fe2901644a9fa6eeca84255316b90c109766ab023b777074f5, family=sawtooth_settings, version=1.0, encoding=application/protobuf, namespaces=['000000'] * This leads me to another issue, where another transaction family that I have created is not getting registered (Not sure if these two are linked). Below is the command I'm using to register transaction families. * sawtooth config proposal create sawtooth.validator.transaction_families='[{"family": "coin-transaction", "version": "1.0", "encoding": "application/json"}, {"family":"sawtooth_settings", "version":"1.0", "encoding":"application/protobuf"}]' * NOTE: there are no errors. Neither in the rest-api nor the validator logs. I think I'll be able to solve this by starting the whole network from scratch i.e. new genesis block and new setup, but would like to understand why this issue crops up and how should I solve this in case it comes up again.

divssheth (Fri, 01 Dec 2017 07:57:43 GMT):
Hi Guys, I am new to sawtooth and have been trying to play with it. I am facing an issue while processing a block. I'm not sure what lead to this situation but these are the steps that I followed: 1. Install sawtooth version 0.8.12 on ubuntu 16.04. Followed this documentation and was able to get the network running with a standalone validator and was able to perform intkey transactions 2. Shut down the network. i.e. shut down validator, rest-api, settings-tp, intkey-tp 3. Started the network after a couple of days and the validator logs show the following: *[2017-12-01 13:16:09.067 DEBUG interconnect] ServerThread receiving CLIENT_BATCH_SUBMIT_REQUEST message: 1525 bytes [2017-12-01 13:16:09.070 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'5e6a6cc1817d4300' [2017-12-01 13:16:09.173 DEBUG publisher] Loaded batch injectors: [] [2017-12-01 13:16:09.175 DEBUG executor] failing transaction bd38c1edebd35b1a435b1ff5d34d39f1e057afc6bf9564b921513c725856244226568938de5d1e30598af06adcb5880856f69d7f43d523e7cc1b7623c859c1b3 of type (name=sawtooth_settings,version=1.0,encoding=application/protobuf) since it isn't required in the configuration [2017-12-01 13:16:09.175 DEBUG publisher] Batch aa04d5c06f3314c566230446d4f26f740cb4ccff1884a0c418227dfc6e95db0e4219bb9058bfccc10cac5ae3d8f87f8700eca82edbf7ccfa786955aa576f5668 invalid, not added to block. [2017-12-01 13:16:09.176 DEBUG publisher] Abandoning block (2, S:, P:14387f06): no batches added* I tried addng the settings-tp family again to the config, it registers but can't seem to process the block in the above log *[2017-12-01 13:15:12.597 INFO processor_handlers] registered transaction processor: connection_id=ca4f655c7e88f2743f437bc9bdb1d87d45da150ef589c9f0d74692c291e28fcf65cd8a067146c6fe2901644a9fa6eeca84255316b90c109766ab023b777074f5, family=sawtooth_settings, version=1.0, encoding=application/protobuf, namespaces=['000000'] * This leads me to another issue, where another transaction family that I have created is not getting registered (Not sure if these two are linked). Below is the command I'm using to register transaction families. * sawtooth config proposal create sawtooth.validator.transaction_families='[{"family": "coin-transaction", "version": "1.0", "encoding": "application/json"}, {"family":"sawtooth_settings", "version":"1.0", "encoding":"application/protobuf"}]' * NOTE: there are no errors. Neither in the rest-api nor the validator logs. I think I'll be able to solve this by starting the whole network from scratch i.e. new genesis block and new setup, but would like to understand why this issue crops up and how should I solve this in case it comes up again.

divssheth (Fri, 01 Dec 2017 10:01:10 GMT):
I was facing the same issue with docker installation since the data directory was the same. Also I noticed that the validator logs said I was not authorized to change the config settings, since I was executing the commands from sawtooth-client-shell. Cleaned the data directory and restarted docker, and now submitted the sawtooth config proposal from validator shell. Now everything works fine. I'm still keen to know if anyone has faced the issue I reported earlier in the chat above

BDAP1729 (Fri, 01 Dec 2017 14:41:23 GMT):
Hi, Can anyone help me with decoding the payload in a intkey family transaction? I am trying to use nodejs. When i use cbor.decodeFirst(payload, ....), the callback is not returning any value.

ddcprg (Fri, 01 Dec 2017 18:30:25 GMT):
Has joined the channel.

Fofa (Sat, 02 Dec 2017 05:04:40 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=CKMqoNDqtXyJmuDyH) @zac couldn't connect to docker daemon at http+docker:?/locallunixsocket

Fofa (Sat, 02 Dec 2017 05:13:14 GMT):
i cannot connet the docker

Fofa (Sat, 02 Dec 2017 05:13:26 GMT):
and the rest-api

Fofa (Sat, 02 Dec 2017 05:13:58 GMT):
error : curl(6) could not resolve host

ajenie (Sat, 02 Dec 2017 12:48:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=NPPQBjCD3wv8uhvMm) @Fofa can you show us your docker compose file?

ddcprg (Sat, 02 Dec 2017 14:04:06 GMT):
Hello everyone. I'm new to hyperledger and I particularly consider sawtooth very attractive. I'm documenting myself and I was wondering whether there is some doc where I can get some comparison between transaction processors and solidity contracts. Which would be more convenient in which cases, etc

Dan (Sat, 02 Dec 2017 15:37:23 GMT):
@ddcprg I don't think a doc like that exists, but maybe you can be the first to write one :) . Here is the documentation on creating transaction families: https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc3/app_developers_guide.html. One difference with Transaction Families is that you can write them in almost any language you want.

ddcprg (Sat, 02 Dec 2017 15:47:12 GMT):
Thanks for the prompt reply @Dan I guess I have homework to do :)

yipcma (Sun, 03 Dec 2017 16:54:45 GMT):
Has joined the channel.

alvaradojl (Sun, 03 Dec 2017 18:53:33 GMT):
Has joined the channel.

Raheel (Sun, 03 Dec 2017 18:55:34 GMT):
Has joined the channel.

jomayma (Sun, 03 Dec 2017 23:33:33 GMT):
Has joined the channel.

Fofa (Mon, 04 Dec 2017 01:02:23 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oSNqRtk9R9ye3PjnF) @ajenie version: "2.1" services: settings-tp: image: hyperledger/sawtooth-tp_settings:latest container_name: sawtooth-settings-tp-default expose: - 4004 depends_on: - validator entrypoint: settings-tp -vv tcp://validator:4004 intkey-tp-python: image: hyperledger/sawtooth-tp_intkey_python:latest container_name: sawtooth-intkey-tp-python-default expose: - 4004 depends_on: - validator entrypoint: intkey-tp-python -vv tcp://validator:4004 xo-tp-python: image: hyperledger/sawtooth-tp_xo_python:latest container_name: sawtooth-xo-tp-python-default expose: - 4004 depends_on: - validator entrypoint: xo-tp-python -vv tcp://validator:4004 validator: image: hyperledger/sawtooth-validator:latest container_name: sawtooth-validator-default expose: - 4004 ports: - "4004:4004" # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawtooth admin keygen && \ sawtooth keygen my_key && \ sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \ sawtooth admin genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \ \"" rest-api: image: hyperledger/sawtooth-rest_api:latest container_name: sawtooth-rest-api-default expose: - 4004 - 8080 ports: - "8080:8080" depends_on: - validator entrypoint: sawtooth-rest-api --connect tcp://validator:4004 --bind rest-api:8080 client: image: hyperledger/sawtooth-all:latest container_name: sawtooth-client-default expose: - 8080 - 4004 depends_on: - rest-api entrypoint: "bash -c \"\ sawtooth keygen && \ tail -f /dev/null \ \""

Fofa (Mon, 04 Dec 2017 01:04:22 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oSNqRtk9R9ye3PjnF) @ajenie error for validator cannot start service validator : driver failed programming external connectivity

Fofa (Mon, 04 Dec 2017 01:18:31 GMT):
i keep receiving this error : sawtooth_validator.exception.localconfigurationError: can't bind to tcp://127.0.0.1:4004: address already in use...

pschwarz (Mon, 04 Dec 2017 09:42:09 GMT):
Do you already have a validator instance running? Do a `docker ps`

askmish (Mon, 04 Dec 2017 12:53:50 GMT):
@fofa Someone else might be using the port 4004 already. Please post output of: `netstat -tulpn | grep LISTEN`

Mow (Mon, 04 Dec 2017 15:53:06 GMT):
Hi! I am new to sawtooth. I just started off with Application developer's guide (https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc3/app_developers_guide/docker.html) .

Mow (Mon, 04 Dec 2017 15:55:34 GMT):
1)Installed docker on Mac 2) Saved the docker-compose.yaml file 3) Ran this command in terminal : % docker-compose -f sawtooth-default.yaml up Message received:-bash: fg: %: no such job I am missing something? Am I to install anything else?

leilanh (Mon, 04 Dec 2017 16:22:45 GMT):
Has joined the channel.

Mow (Mon, 04 Dec 2017 16:26:25 GMT):
figured it... worked on removing "%"

alexspeller (Mon, 04 Dec 2017 21:02:03 GMT):
Has joined the channel.

alexspeller (Mon, 04 Dec 2017 21:04:36 GMT):
Hi, I am trying to get two sawtooth validator instances to talk to each other so they end up with the same blockchain state. I set up two AWS instances using the sawtooth image from the amazon market place, and then edited /etc/default/sawtooth-validator to pass the `--seeds` argument so that it discovers the validator on the other instance. I see the two instances talking to each other in the validator logs, but no blockchain state seems to be shared. Is there any guide to getting two validator instances to talk to each other?

kelly_ (Mon, 04 Dec 2017 21:31:40 GMT):
@alexspeller have you submitted a transaction to one?

alexspeller (Mon, 04 Dec 2017 21:46:04 GMT):
@kelly_ yes, submitted to one successfully

alexspeller (Mon, 04 Dec 2017 21:46:13 GMT):
it shows up in the rest api connected to that validator

agunde (Mon, 04 Dec 2017 21:48:06 GMT):
@alexspeller do both validators have an instance of the transaction processor you are using?

alexspeller (Mon, 04 Dec 2017 21:48:36 GMT):
yes, both validators have a transaction processor successfully attached

alexspeller (Mon, 04 Dec 2017 21:50:18 GMT):
I can sucessfully submit transactions to each validator and they show up in their respective REST apis, they are just not shared between validators

kelly_ (Mon, 04 Dec 2017 23:27:44 GMT):
@agunde maybe two different genesis blocks?

Ruslanas (Mon, 04 Dec 2017 23:29:58 GMT):
Has joined the channel.

alexspeller (Mon, 04 Dec 2017 23:44:29 GMT):
@kelly_ that sounds possible - do I need to copy the genisis block from one instance to the other?

agunde (Tue, 05 Dec 2017 00:10:33 GMT):
Possibly, only one validator should be running the genesis command. You do not need to copy the genesis block as the genesis node should send the genesis block over after they have peered.

Fofa (Tue, 05 Dec 2017 06:12:48 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Wx2n9turo4452Avdr) @askmish the port is used by 2422/python 3

reggie (Tue, 05 Dec 2017 10:00:04 GMT):
Has joined the channel.

Dan (Tue, 05 Dec 2017 10:03:39 GMT):
@rjones can you double check the DCO configuration on https://github.com/hyperledger/sawtooth-hyper-directory/? I may have broken it. :-o

rjones (Tue, 05 Dec 2017 10:03:39 GMT):
Has joined the channel.

alexspeller (Tue, 05 Dec 2017 12:47:27 GMT):
@agunde that makes sense. It seems like the AWS image automatically runs the genisis command - should I try deleting the stuff that the command creates to start from scratch on the second node?

rbuysse (Tue, 05 Dec 2017 14:51:46 GMT):
@alexspeller You can do sudo `systemctl disable sawtooth-setup.service` to disable the service that runs the genesis commands. then clean out `/var/lib/sawtooth` and you should be good to go.

rbuysse (Tue, 05 Dec 2017 14:51:46 GMT):
@alexspeller You can do 1sudo systemctl disable sawtooth-setup.service` to disable the service that runs the genesis commands. then clean out `/var/lib/sawtooth` and you should be good to go.

rbuysse (Tue, 05 Dec 2017 14:51:46 GMT):
@alexspeller You can do `sudo systemctl disable sawtooth-setup.service` to disable the service that runs the genesis commands. then clean out `/var/lib/sawtooth` and you should be good to go.

alexspeller (Tue, 05 Dec 2017 15:11:21 GMT):
@rbuysse awesome, thanks!

susarino (Tue, 05 Dec 2017 15:17:03 GMT):
Has joined the channel.

jeffblack360 (Tue, 05 Dec 2017 15:37:04 GMT):
Has joined the channel.

zac (Tue, 05 Dec 2017 16:00:02 GMT):
@Fofa Only one process on your machine can use any given port at a time. You either need to kill that python process (old validator?), or if it's something you want to keep running, change the port the validator uses.

Dan (Tue, 05 Dec 2017 16:47:07 GMT):
Just had discussion with #indy crew. Hypothesizing how to deploy indy use cases on other ledgers. I think the most unique requirement is that querying the DLT will respond with an aggregated signature of all the validators which have validated the transaction for that state root hash. I'm not sure how we would do something like that with Sawtooth.

Dan (Tue, 05 Dec 2017 16:47:36 GMT):
In Indy those signatures are collected alongside the rBFT protocol rounds.

Dan (Tue, 05 Dec 2017 16:48:09 GMT):
We could maybe maintain a separate ledger where validators would send in attestations to a certain state root. Seems like maybe other ways.

kelly_ (Tue, 05 Dec 2017 16:59:29 GMT):
with raft it seems reasonable to have the consensus messages be authenticated

kelly_ (Tue, 05 Dec 2017 16:59:39 GMT):
and then the leader could use the batch injector to put those into a block

kelly_ (Tue, 05 Dec 2017 17:00:04 GMT):
and a smart contract could enforce that all teh signatures are in place before accepting the block

rjones (Tue, 05 Dec 2017 17:16:27 GMT):
@Dan I re-enabled DCO enforcement. How did you disable it?

Dan (Tue, 05 Dec 2017 17:26:56 GMT):
I turned off the check on master for forced pushes in order to get the first commit in. That automatically disabled DCO and I couldn't see how to re-enable it. Sorry about that and thanks for fixing.

rjones (Tue, 05 Dec 2017 17:28:05 GMT):
no worries.

askmish (Tue, 05 Dec 2017 18:07:26 GMT):
@Fofa You could also change the port no. 4004 to another one say 4005, in the docker compose file

block_geek (Wed, 06 Dec 2017 09:11:39 GMT):
Has joined the channel.

tristanperalta (Wed, 06 Dec 2017 10:06:24 GMT):
Has joined the channel.

tristanperalta (Wed, 06 Dec 2017 10:35:31 GMT):
Hi guys, I ran into problem running XO transaction processor

tristanperalta (Wed, 06 Dec 2017 10:36:13 GMT):
I already run npm install. Then nodejs index.js, then I got this error ``` Error: Cannot find module './protobuf_bundle.json' ```

muasif80 (Wed, 06 Dec 2017 12:22:14 GMT):
Has left the channel.

zac (Wed, 06 Dec 2017 14:08:40 GMT):
@tristanperalta Gotta generate the protobufs. XO JS references the JS SDK locally. So if you `cd sdk/javascript/`, and then `npm install`, and `npm run compile_protobuf`, you should be good.

BDAP1729 (Wed, 06 Dec 2017 14:25:14 GMT):
How can we create our own transaction family? Thanks in advance.

zac (Wed, 06 Dec 2017 15:48:59 GMT):
Should probably start here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

Dan (Wed, 06 Dec 2017 20:17:51 GMT):

20171206_160714.jpg

jsmitchell (Wed, 06 Dec 2017 20:24:47 GMT):
nice stickers!

jsmitchell (Wed, 06 Dec 2017 20:24:51 GMT):
it looks freezing

Dan (Wed, 06 Dec 2017 20:27:56 GMT):
Just a little chilly. The second level of the bus was warm.

maddyhopper (Wed, 06 Dec 2017 20:44:14 GMT):
Has joined the channel.

maddyhopper (Wed, 06 Dec 2017 20:44:19 GMT):
hi

maddyhopper (Wed, 06 Dec 2017 20:48:59 GMT):
cam anyone help me out from this erroe

maddyhopper (Wed, 06 Dec 2017 20:49:03 GMT):
error

maddyhopper (Wed, 06 Dec 2017 20:49:14 GMT):

error.PNG

kelly_ (Wed, 06 Dec 2017 20:50:08 GMT):
@maddyhopper are you behind a proxy? maybe docker proxy issues?

maddyhopper (Wed, 06 Dec 2017 20:50:38 GMT):
is there any workaround!

nima7r (Wed, 06 Dec 2017 20:51:05 GMT):
Has joined the channel.

kelly_ (Wed, 06 Dec 2017 20:54:30 GMT):
https://docs.docker.com/engine/admin/systemd/#runtime-directory-and-storage-driver

kelly_ (Wed, 06 Dec 2017 20:54:43 GMT):
^ information on configuring proxy there

kelly_ (Wed, 06 Dec 2017 20:57:15 GMT):
actually if you are failing to even get the docker images it's probably a proxy issue on your machine, not with the docker daemon

nima7r (Wed, 06 Dec 2017 21:00:24 GMT):
hi I'm kind of new to the sawtooth and had this confusion. the solidity contracts can be deployed to the sawtooth's system!? I mean u can consider the whole sawtooth as an EVM? and the second question is, if u can do such thing, what does gas price mean in this situation? there is no ether behind this smart contract! I'd appreciate any explanations, THANK Y'ALL :)

kelly_ (Wed, 06 Dec 2017 21:00:59 GMT):
hey @nima7r

kelly_ (Wed, 06 Dec 2017 21:01:07 GMT):
Sawtooth has a transaction processing engine

nima7r (Wed, 06 Dec 2017 21:01:13 GMT):
hey @kelly_

kelly_ (Wed, 06 Dec 2017 21:01:18 GMT):
which means you can hook up various transaction interpreters

kelly_ (Wed, 06 Dec 2017 21:01:31 GMT):
the EVM is one of those, it will interperet solidity/evm byte code

kelly_ (Wed, 06 Dec 2017 21:01:40 GMT):
there is no ether in the EVM we use

kelly_ (Wed, 06 Dec 2017 21:01:54 GMT):
the evm we use is the burrow evm, you can set a 'max gas' amount for operations

kelly_ (Wed, 06 Dec 2017 21:01:57 GMT):
but there isnt a real cost

nima7r (Wed, 06 Dec 2017 21:03:49 GMT):
oh! i see. the gas price here is used only to determine the priority of transactions handling, right?!

kelly_ (Wed, 06 Dec 2017 21:04:22 GMT):
and to avoid the halting problem

nima7r (Wed, 06 Dec 2017 21:04:35 GMT):
yeah and that!

kelly_ (Wed, 06 Dec 2017 21:04:48 GMT):
I don't think there is a gas price notion

kelly_ (Wed, 06 Dec 2017 21:05:02 GMT):
I think gas price is fixed say at 1wei/gas for example

maddyhopper (Wed, 06 Dec 2017 21:05:11 GMT):
what should i do with my erroe problem

maddyhopper (Wed, 06 Dec 2017 21:05:24 GMT):
*error

nima7r (Wed, 06 Dec 2017 21:08:28 GMT):
@maddyhopper hey! have u tried using a proxy!? seems like u cant connect to server!

maddyhopper (Wed, 06 Dec 2017 21:09:00 GMT):
yes

maddyhopper (Wed, 06 Dec 2017 21:09:05 GMT):
i think so

maddyhopper (Wed, 06 Dec 2017 21:10:55 GMT):
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"

maddyhopper (Wed, 06 Dec 2017 21:11:06 GMT):
what does it mean for example.com

nima7r (Wed, 06 Dec 2017 21:12:28 GMT):
proxy.example.com:80 does not seem to be a real proxy server!

maddyhopper (Wed, 06 Dec 2017 21:13:02 GMT):
ok then

maddyhopper (Wed, 06 Dec 2017 21:13:15 GMT):
i m writing the same

nima7r (Wed, 06 Dec 2017 21:13:26 GMT):
try this export HTTP_PROXY="http://111.111.111.111:11"

nima7r (Wed, 06 Dec 2017 21:13:34 GMT):
and use your real proxy server

nima7r (Wed, 06 Dec 2017 21:13:43 GMT):
instead of http://111.111.111.111:11"

steptan (Thu, 07 Dec 2017 00:09:01 GMT):
Has joined the channel.

Dan (Thu, 07 Dec 2017 03:03:16 GMT):
Might need an https proxy setting too.

vizillion (Thu, 07 Dec 2017 03:17:06 GMT):
Has joined the channel.

ivopatty (Thu, 07 Dec 2017 08:57:44 GMT):
Has joined the channel.

GhadiShayban (Thu, 07 Dec 2017 16:24:12 GMT):
I quite like the recent improvements to the signing APIs across the SDKs. Could I interpret them as a set of moves that might lead away from secp256k1 and possibly towards a pluggable scheme? Our infosec officer has no issues with the particular curve, but has told us that it makes adoption harder with more finicky enterprises, who have a list (FIPS/NIST.)

ericswenson (Thu, 07 Dec 2017 16:57:21 GMT):
Has joined the channel.

Johnjam (Thu, 07 Dec 2017 18:02:18 GMT):
Hi everyone ! I have a little problem to parse a response from the validator with the event handlers. I have this sample to encode my message : regRequest := &events_pb2.EventSubscription{ EventType: "sawtooth/block-commit", } subscriptions := []*events_pb2.EventSubscription{regRequest} regClientRequest := &client_event_pb2.ClientEventsSubscribeRequest{ Subscriptions: subscriptions, } regRequestData, err := proto.Marshal(regClientRequest) if err != nil { return err } corrId, err := self.validator.SendNewMsg( validator_pb2.Message_CLIENT_EVENTS_SUBSCRIBE_REQUEST, regRequestData, ) if err != nil { return err } Then, the validator answer me with a 501 (CLIENT_EVENTS_SUBSCRIBE_RESPONSE) message type but with an empty content (status : 0 / message : "") and I'm not added to the subscribers list.. Any ideas ? Thanks

zac (Thu, 07 Dec 2017 19:57:00 GMT):
@GhadiShayban I don't know of any immediate plans, but the point of changing the signing API was to allow for switching the signing algorithm in the future if needed, yes.

GhadiShayban (Thu, 07 Dec 2017 19:57:42 GMT):
Thanks @zac

snowy13 (Thu, 07 Dec 2017 20:39:30 GMT):
Has joined the channel.

rahulr92 (Thu, 07 Dec 2017 21:05:43 GMT):
Has joined the channel.

tristanperalta (Fri, 08 Dec 2017 05:10:46 GMT):
Hi guys, where do I find the source code of sawtooth marketplace transaction family?

tristanperalta (Fri, 08 Dec 2017 05:33:41 GMT):
I tried running `./bin/sawtooth-validator` from source code, and getting this error ``` ImportError: No module named 'sawtooth_validator.protobuf' ```

tristanperalta (Fri, 08 Dec 2017 05:33:57 GMT):
how to I fix this?

ErazerControl (Fri, 08 Dec 2017 05:58:18 GMT):
Has joined the channel.

van0303 (Fri, 08 Dec 2017 07:43:43 GMT):
Has joined the channel.

askmish (Fri, 08 Dec 2017 08:45:04 GMT):
@tristanperalta The sawtooth marketplace is located here: https://github.com/hyperledger/sawtooth-marketplace

askmish (Fri, 08 Dec 2017 08:45:28 GMT):
@tristanperalta Where are you running the ./bin/sawtooth-validator

askmish (Fri, 08 Dec 2017 08:46:08 GMT):
seems like protobuf files have not been generated yet. How did you build your code.

tristanperalta (Fri, 08 Dec 2017 09:42:45 GMT):
thanks you @askmish, how to I build the code, I just cloned it, then run `./bin/sawtooth-validator`

tristanperalta (Fri, 08 Dec 2017 09:43:34 GMT):
validator works on ubuntu installed sawtooth via apt, however I want to test the code, and to know how to setup from ground up.

zac (Fri, 08 Dec 2017 15:10:29 GMT):
@tristanperalta There is a protogen script which generates protobufs: `bin/protogen`. Might be better to run `bin/build_all`. That will build anything you might need, though it will take a long time to run (~30 minutes), and is sometimes a little unreliable.

zac (Fri, 08 Dec 2017 15:14:59 GMT):
Also, it depends on which marketplace you are talking about. If you are talking about the web app that ran on `0.6` and was put up as a demo, you can find it on`hyperledger/sawtooth-core` under the `0-6` branch. It is worth noting this demo is not compatible with modern Sawtooth, and has not been ported. The `hyperledger/sawtooth-marketplace` repo is a new marketplace built from the ground up against the current Sawtooth. It will share some similarities with the old demo, but is not a direct port.

Dan (Fri, 08 Dec 2017 17:50:32 GMT):
@GhadiShayban yes, that was part of the motivation of reworking the signing API. Some of us are interested in adding ed25519 but there are no immediate plans. Also longer term interest in adding quantum resistant algorithms, but that is a little too paranoid for today. :)

adamludvik (Fri, 08 Dec 2017 18:25:38 GMT):

Sawtooth 1.0 API.pdf

adamludvik (Fri, 08 Dec 2017 18:25:45 GMT):

SETH (Sawtooth Ethereum).pdf

adamludvik (Fri, 08 Dec 2017 18:26:00 GMT):
The above are my slides from the Lisbon Hackfest this past week for reference

GhadiShayban (Fri, 08 Dec 2017 19:36:40 GMT):
is validator<->validator gossip encrypted at all? I seem to remember it was curveZMQ, but that's not true from grepping (quickly) through the codebase

agunde (Fri, 08 Dec 2017 19:43:34 GMT):
@GhadiShayban If the curveZMQ key par is set as network_public_key and network_private_key are set in the validator.toml file it will be encrypted, otherwise it is not. https://sawtooth.hyperledger.org/docs/core/nightly/master/sysadmin_guide/configuring_sawtooth/validator_configuration_file.html

agunde (Fri, 08 Dec 2017 19:43:34 GMT):
@GhadiShayban If the curveZMQ key pair is set as network_public_key and network_private_key are set in the validator.toml file it will be encrypted, otherwise it is not. https://sawtooth.hyperledger.org/docs/core/nightly/master/sysadmin_guide/configuring_sawtooth/validator_configuration_file.html

GhadiShayban (Fri, 08 Dec 2017 19:48:29 GMT):
Thanks @agunde, i missed it!

eclairamb (Fri, 08 Dec 2017 22:22:01 GMT):
Has joined the channel.

thiago-moreira (Fri, 08 Dec 2017 22:28:41 GMT):
Has joined the channel.

kengste (Sat, 09 Dec 2017 07:42:55 GMT):
Has joined the channel.

ddcprg (Sat, 09 Dec 2017 16:08:14 GMT):
I have a couple of questions: 1) Is there a way to restrict nodes from adding their own transaction processors (TP) and validators (TV) to the network? 2) What happens if a percentage of the network nodes are running TP+TV and the rest of the network are not? Would this cause forks on the chain? 3) How can I restrict configuration proposals so only few selected nodes can submit these?

ddcprg (Sat, 09 Dec 2017 16:08:17 GMT):
thank you

Dan (Sat, 09 Dec 2017 16:37:18 GMT):
Yes @ddcprg you can restrict allowed TPs and allowed Validators. Both of these are stored in the blockchain. Allowed transaction processors are set with the Settings transaction family and stored in global state and likewise permissioning is set with the Identity transaction family which controls changes to access controls listed in global state.

ddcprg (Sat, 09 Dec 2017 16:38:17 GMT):
thanks @Dan are there any examples that I can look at?

Dan (Sat, 09 Dec 2017 16:38:22 GMT):
If a node violates any of the policies or otherwise tries to run with a different configuration than the other validators have agreed to it will effectively fork, and no other validators will accept anything it says.

ddcprg (Sat, 09 Dec 2017 16:38:50 GMT):
this is great!

Dan (Sat, 09 Dec 2017 16:39:37 GMT):
Please take a look at the Settings and Identity transaction families here: https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc4/transaction_family_specifications.html (for the latest release candidate version. if you are working with stable 0.8 please switch to that version of docs)

Dan (Sat, 09 Dec 2017 16:40:59 GMT):
For _unofficial_ :) example of how to change global settings across the blockchain you can see this script for changing consensus https://gist.github.com/dcmiddle/756190a1b0139faa16f9ac5150b7f2e5

ddcprg (Sat, 09 Dec 2017 16:42:11 GMT):
I've gone though the docs a couple of times but I still have not figured it out, I need to write some example to understand how all the pieces fit together

ddcprg (Sat, 09 Dec 2017 16:42:39 GMT):
cool, I'll take a look

dharuq (Sat, 09 Dec 2017 19:53:31 GMT):
Has joined the channel.

Dan (Sat, 09 Dec 2017 22:39:39 GMT):
The gist I linked uses the command line tools. There's way to do those same transactions programmatically in the various languages we support. Let us know if you worked it out or not. We want to make sure Sawtooth is easy to develop for.

slavikdmi (Mon, 11 Dec 2017 11:13:10 GMT):
Has joined the channel.

slavikdmi (Mon, 11 Dec 2017 11:14:47 GMT):
Hello. could you write a directory name where consensus files is situated ? i'd like to read them and understand)

Johnjam (Mon, 11 Dec 2017 12:41:53 GMT):
Hello, I have a weird behavior with my TP Handler written with the go SDK. When my Apply function returns an InvalidTransactionError, everything is fine, but when it returns an InternalError, I got an infinite loop where the validator sends back a TP_PROCESS_REQUEST infinitly.

askmish (Mon, 11 Dec 2017 13:21:39 GMT):
@slavidmi

askmish (Mon, 11 Dec 2017 13:21:39 GMT):
@slavikdmi Are you looking for the source code of PoET consensus implementation?

askmish (Mon, 11 Dec 2017 13:24:43 GMT):
@Johnjam Could you provide logs and a minimal, complete, verifiable sample of your implementation.

hunter32 (Mon, 11 Dec 2017 13:47:13 GMT):
Hello i have problems running Sawtooth with the SGX Implementation of PoET. Please check thel log here: https://pastebin.com/zTsEHiLy

hunter32 (Mon, 11 Dec 2017 13:47:13 GMT):
@Dan Hello, today Intel updated my cert file and now i have problems running Sawtooth with the SGX Implementation of PoET. Please check thel log here: https://pastebin.com/zTsEHiLy

jsmitchell (Mon, 11 Dec 2017 14:17:10 GMT):
@Johnjam that is expected behavior. InternalError is intended to be a transient error encountered by the transaction processsor. It should never result in a transaction being declared invalid.

Johnjam (Mon, 11 Dec 2017 14:26:02 GMT):
Thank you @jsmitchell , I was just asking that because, for example, in smallbank handler, it returns a InternalError if the payload is incorrectly unpacked (Unmarshal failed in unpackPayload function)

Dan (Mon, 11 Dec 2017 14:33:58 GMT):
Yeah that kinda sounds like it small bank should call that an invalid transaction.

Dan (Mon, 11 Dec 2017 14:36:00 GMT):
@hunter32 congratulations! I have not seen that error before. :D From the IAS API it looks like it may be a credential issue. We use "Linkable" EPID signatures with PoET. That means the device will always present a consistent identity within this service. By default I think IAS registers for unlinkable signatures (participating devices will always present a pseudo-random identity). Can you check which type you requested?

jsmitchell (Mon, 11 Dec 2017 14:44:24 GMT):
@Johnjam indeed, that is a bug in smallbank if that's what it's doing

hunter32 (Mon, 11 Dec 2017 14:47:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=6mkutxpywDDc5iTxj) @Dan Ow... i didn't know that you use Linkable. and i submitted for unlinkable. Ok 1 week delay again waiting for a result from intel!. Can in send the same cert file for linkable or i must create a new one?

hunter32 (Mon, 11 Dec 2017 14:47:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=qjpT5akJLuzAum9uK) @Dan Ow... i didn't know that you use Linkable. and i submitted for unlinkable. Ok 1 week delay again waiting for a result from intel!. Can i send the same cert file for linkable or i must create a new one?i

hunter32 (Mon, 11 Dec 2017 14:47:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=qjpT5akJLuzAum9uK) @Dan Ow... i didn't know that you use Linkable. and i submitted for unlinkable. Ok 1 week delay again waiting for a result from intel!. Can in send the same cert file for linkable or i must create a new one?

Dan (Mon, 11 Dec 2017 15:47:55 GMT):
@hunter32 I think they can just update your authorization without a new key, but I don't really know their internal process.

grkvlt (Mon, 11 Dec 2017 16:18:12 GMT):
current `sawtooth-seth` code refers to old `sawtooth-cpre` go SDK and won't build - see https://github.com/hyperledger/sawtooth-seth/blob/master/families/seth/src/sawtooth_seth/common/evm_address.go#L25

grkvlt (Mon, 11 Dec 2017 16:49:38 GMT):
oh, i see this is sort of fixed in a commit last week; nm

boydjohnson (Mon, 11 Dec 2017 17:47:55 GMT):
@ddcprg I don't know if you got your question fully answered about on-chain configuration of validators in the network. Check out these docs: https://sawtooth.hyperledger.org/docs/core/releases/latest/sysadmin_guide/permissioning.html#validator-key-permissioning. Also this integration test is a little hard to read, but is a test example of denying a validator from various validator permissions: https://github.com/hyperledger/sawtooth-core/blob/v1.0.0rc4/integration/sawtooth_integration/tests/test_network_permissioning.py.

ddcprg (Mon, 11 Dec 2017 17:56:42 GMT):
Thanks @boydjohnson the code example will be worth reading

GearSaW (Tue, 12 Dec 2017 12:50:18 GMT):
Has joined the channel.

formax (Tue, 12 Dec 2017 22:40:17 GMT):
Has joined the channel.

formax (Tue, 12 Dec 2017 22:43:11 GMT):
Hi everybody, I'm pretty much sure this question has been posed tons on times, but where do I find the doc for rebuilding `sawtooth-core` project?

boydjohnson (Tue, 12 Dec 2017 22:56:30 GMT):
Hi @formax Are you asking about working with a development environment using the sawtooth-core repo. If so, `./bin/build_all -l `. Or just `./bin/build_all` and then wait a while.

ddcprg (Tue, 12 Dec 2017 23:41:30 GMT):
Hi there, is there any stats about transaction performance/throughput on sawtooth core? How many transactions per second it can handle and is there any identified areas of improvement?

FaysalAhmed (Wed, 13 Dec 2017 11:59:41 GMT):
Has joined the channel.

FaysalAhmed (Wed, 13 Dec 2017 12:02:20 GMT):
Hi @here I am using Mac and I try to run this https://github.com/hyperledger/sawtooth-supply-chain But after run this line `docker-compose up` I have found this problem *E: Failed to fetch http://repo.sawtooth.me/ubuntu/0.8/stable/pool/universe/l/lmdb/python3-lmdb_0.92-1_amd64.deb Hash Sum mismatch E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?* Anything I missed?

FaysalAhmed (Wed, 13 Dec 2017 12:02:20 GMT):
Hi @here I am using Mac and I trying to run this https://github.com/hyperledger/sawtooth-supply-chain But after run this line `docker-compose up` I have found this problem *E: Failed to fetch http://repo.sawtooth.me/ubuntu/0.8/stable/pool/universe/l/lmdb/python3-lmdb_0.92-1_amd64.deb Hash Sum mismatch E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?* Anything I missed?

grkvlt (Wed, 13 Dec 2017 14:03:21 GMT):
@ddcprg you can use the tools in `sawtooth-core/perf` to run e.g. `smallbank-workload` which creates and submits batches of transactions; i use grafana to monitor the performance when running these tests

grkvlt (Wed, 13 Dec 2017 14:06:23 GMT):
@formax btw, if you want to use the docker images standalone then you may find it better to build your own, as the ones generated by `build_all installed` are pretty big (multi GiB) - the `build_all mounted` images need you to mount the `sawtooth-core` repo with the built binaries on each container...

grkvlt (Wed, 13 Dec 2017 14:06:23 GMT):
@formax btw, if you want to use the docker images standalone then you may find it better to build your own, as the ones generated by `build_all installed` are pretty big (multi GiB) and the `build_all mounted` images need you to mount the `sawtooth-core` repo with the built binaries on each container...

HashmatJafferi101 (Wed, 13 Dec 2017 14:11:33 GMT):
Has joined the channel.

HashmatJafferi101 (Wed, 13 Dec 2017 14:28:48 GMT):
Hi guys. i am trying to install sawtooth on docker. however when i run the $ docker-compose -f sawtooth-default.yaml up, i get an error message saying error, version in ./sawtooth-default.yaml is unsupported. you might be seeing this error because you are using the wrong compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the services key or omit the version key and place your service definitions at the root of the file to use version 1.

HashmatJafferi101 (Wed, 13 Dec 2017 14:28:48 GMT):
@askmish i have installed docker on ubuntu (virtual machine). Followed the advice on Docker website https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/. I have also run $ docker --version && docker --version (Versions are confirmed). Also i receive a response from Docker when i run $ docker run hello-world. I followed your advice and changed the version to 2 but when i am able to run the file.

rbuysse (Wed, 13 Dec 2017 14:32:38 GMT):
@FaysalAhmed Can you try running `docker-compose down` and then `docker-compose up` again? It might have just been some internet weirdness. it just ran fine for me.

skbehera85 (Wed, 13 Dec 2017 15:26:41 GMT):
Has joined the channel.

skbehera85 (Wed, 13 Dec 2017 15:31:10 GMT):
Hi guys, i am trying to run build_debs & build_ext_debs packages and i am getting errors (ubuntu) . Its not executing python3 setup.py --command-packages=stdeb.command bdest_deb . Any suggestions please.

ddcprg (Wed, 13 Dec 2017 15:51:32 GMT):
cheers @grkvlt

askmish (Wed, 13 Dec 2017 16:15:16 GMT):
@skbehera85 what do you mean by its not executing?

askmish (Wed, 13 Dec 2017 16:16:46 GMT):
@HashmatJafferi101 How did you install docker? Meanwhile, edit the yaml file and change the version to 2

skbehera85 (Wed, 13 Dec 2017 16:40:25 GMT):
Thanks @HashmatJafferi101 for you reply.

skbehera85 (Wed, 13 Dec 2017 16:56:15 GMT):
I was trying to build the docker file (sawtooth-int-smallbank-tp-go) and getting the following error - COPY failed: no source files were specified -->COPY sawtooth-smallbank-tp-go*.deb /debs/ . Then i tried to run build_ext_debs package and was expecting the deb files to get generated. and in that too its not executing python3 setup.py --command-packages=stdeb.command bdest_deb

amundson (Wed, 13 Dec 2017 16:59:46 GMT):
out of curiousity, why are you building the debs instead of using them from the repos?

amundson (Wed, 13 Dec 2017 17:02:15 GMT):
build_ext_debs builds the debian files which are dependencies - external - and not sawtooth debs. it is run infrequently

amundson (Wed, 13 Dec 2017 17:04:33 GMT):
Jenkinsfile is a good reference for the overall order of operations

BDAP1729 (Wed, 13 Dec 2017 17:12:09 GMT):
Hi, I am trying to unpack a transaction and decode data. The documentation (here : https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_TP_tutorial_js.html#data) says that i need to use TransactionHeader.decode(transaction.header) Can someone please tell me how to define the TransactionHeader here?

skbehera85 (Wed, 13 Dec 2017 17:13:08 GMT):
@amundson I can only find this file in the repo --> https://github.com/hyperledger/sawtooth-core/blob/master/families/smallbank/smallbank_go/packaging/systemd/etc/default/sawtooth-smallbank-tp-go . Please correct me if i am wrong. If you are referring to some thing else then please attach the url.

skbehera85 (Wed, 13 Dec 2017 17:14:21 GMT):
@amundson how do i Install the .debs so that the copy execution will pass -- COPY sawtooth-smallbank-tp-go*.deb /debs/

mfford (Wed, 13 Dec 2017 17:20:27 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, December 14th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, December 14th Time: 10-11am CDT Agenda: 1. Introductions-Mark Ford 2. 1.0 API Stabilizations-Adam Ludvik 3. Open Forum We are using the HL Sawtooth Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/655382678 Or iPhone one-tap (US Toll): +14086380968,655382678# or +16465588656,655382678# Or Telephone: Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll) +1 855 880 1246 (US Toll Free) +1 877 369 0926 (US Toll Free) Meeting ID: 655 382 678 International numbers available: https://zoom.us/zoomconference?m=-mBV2DUxwFn03UZk5NgZntMmGRj8zSdi

amundson (Wed, 13 Dec 2017 18:33:53 GMT):
@skbehera85 if your goal is to get a smallbank tp in a docker image, that work is in-progress and we can start publishing one up to dockerhub to make it easier to consume. being worked on here - https://github.com/hyperledger/sawtooth-core/pull/1226

gregnotso (Wed, 13 Dec 2017 18:45:03 GMT):
Has left the channel.

aquanet (Wed, 13 Dec 2017 19:20:36 GMT):
Has joined the channel.

shanb (Wed, 13 Dec 2017 19:50:02 GMT):
Has joined the channel.

shanb (Wed, 13 Dec 2017 20:21:41 GMT):
Hi, I want to use sawtooth hyper ledger java SDK but I don't see it is registered to maven repository yet. I tried to use by generating from git project but facing lot of issues. Is there any help available on this.

boydjohnson (Wed, 13 Dec 2017 20:22:33 GMT):
Hi @shanb What OS are you building it on?

shanb (Wed, 13 Dec 2017 20:29:06 GMT):
macOS

boydjohnson (Wed, 13 Dec 2017 20:35:24 GMT):
The `./bin/build_java_sdk` script in sawtooth-core should use maven to build protobuf files and package and install locally a jar. What errors are you getting?

shanb (Wed, 13 Dec 2017 20:57:35 GMT):
I am getting java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at TransactionHeader.newBuilder() .setInputs(0, address)

shanb (Wed, 13 Dec 2017 20:58:25 GMT):
same for .setOutputs(0, address)

podfrogs (Wed, 13 Dec 2017 21:02:28 GMT):
@BDAP1729 Essentially, you need to Parse you response body (JSON.Parse) , create a buffer from the base64 data string and feed that buffer to the cbor.decode function. That will get you the object which you saved to the block chain.

zac (Wed, 13 Dec 2017 21:08:15 GMT):
I think @BDAP1729 was asking about a TransactionHeader, which would be encoded as Protobuf, not CBOR.

zac (Wed, 13 Dec 2017 21:08:37 GMT):
CBOR might be used for some Transaction payloads, but that is Transaction Family specific.

zac (Wed, 13 Dec 2017 21:14:43 GMT):
@BDAP1729 Looks like the documentation you are referencing is for writing a Transaction Processor in JavaScript. The process of using a TransactionHeader changed somewhat between `0.8` and `1.0`. That documentation references `0.8` and would require you to import the TransactionHeader class. Something like this should do it: ``` const { TransactionHeader } = require('sawtooth-sdk/protobuf') ``` However, if you are using `1.0` (which is not yet officially released), that header should already be decoded, so you could call `header.signerPublicKey` without any extra steps.

formax (Wed, 13 Dec 2017 21:20:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jGi9fqdz8LBNbMRN7) @boydjohnson Thanks for your answer, I'm gonna try right now.

podfrogs (Wed, 13 Dec 2017 21:21:02 GMT):
@zac yes.

formax (Wed, 13 Dec 2017 21:22:13 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=h6s24aFvHt9KChHiN) @grkvlt thanks, really useful info!

podfrogs (Wed, 13 Dec 2017 21:23:44 GMT):
@BDAP1729 You may still need to use TransactionHeader.encode function. But, if you are using the API library, there is no need to call TransactionHeader decode - if I understood correctly.

zac (Wed, 13 Dec 2017 21:27:29 GMT):
Depends on the version, but yes in the newest 1.0 release candidate, you do not need it.

zac (Wed, 13 Dec 2017 21:27:29 GMT):
Depends on the version, but yes in the newest 1.0 release candidate, yes the SDK takes care of it for you.

shanb (Wed, 13 Dec 2017 22:19:48 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=PMmtgMnLMn6bu5hvN) @boydjohnson I build jar with ./bin/build_java_sdk but have dependencies on com.google.protobuf and org.bitcoinj

shanb (Wed, 13 Dec 2017 22:23:58 GMT):
@boydjohnson The approach I am taking to add data in blockchain, is creating payload using java sdk and making call to sawtooth rest api. Can you tell me if that seems correct.

FaysalAhmed (Thu, 14 Dec 2017 06:17:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=3aKACmbidsMkomEEu) @rbuysse Thanks for response. The problem arises because of some of the configuration mismatch. Now the issue is solved.

Aarkin (Thu, 14 Dec 2017 07:46:11 GMT):
Has joined the channel.

Aarkin (Thu, 14 Dec 2017 07:50:06 GMT):
Hey team - just trying to get clarification on a couple items. Besides the ether needed to execute a transaction, is there any storage cost associated when a transaction is confirmed on Hyperledger? Additionally, does anyone have metrics on the volume/speed/latency the blockchain can handle?

BDAP1729 (Thu, 14 Dec 2017 09:35:30 GMT):
Thanks @podfrogs and @zac . I have run into another problem. I have created a transaction using the intkey-family on my chain. I would like to decode the payload in the transaction and look at what data is stored in the transaction. Can you tell me how I can decode this? While submitting the batches, this was encoded using the TransactionEncoder using the encoder from sawtooth-sdk. I also have the private-key that was used to encode this. I also want to find out the value that is stored in the state. I looked up for the value at http://localhost:18008/state/

. However the payload here is encoded. Can you please tell me how i can decode this? Thanks!

BDAP1729 (Thu, 14 Dec 2017 09:35:30 GMT):
Thanks @podfrogs and @zac . I have run into another problem. I have created a transaction using the intkey-family on my chain. I would like to decode the payload in the transaction and look at what data is stored in the transaction. Can you tell me how I can decode this? While submitting the batches, this was encoded using the TransactionEncoder using the encoder from sawtooth-sdk. I also have the private-key that was used to encode this. I also want to find out the value that is stored in the state. I looked up for the value at http://localhost:18008/state/

. However the payload here is encoded. Can you please tell me how i can decode this? Thanks in advance!

skbehera85 (Thu, 14 Dec 2017 09:58:49 GMT):
@amundson Thanks for your reply. Do you have an Idea when the docker image and/or git push will be available? Cheers

iswariyar (Thu, 14 Dec 2017 11:06:30 GMT):
Has joined the channel.

boydjohnson (Thu, 14 Dec 2017 15:34:20 GMT):
@shanb Unfortunately the Java SDK doesn't have client support. I would suggest using another language to send the transaction.

zac (Thu, 14 Dec 2017 16:13:28 GMT):
@BDAP1729 The encoding of both the payload and state data are entirely dependent on the Transaction Family. For this reason, there is no standard way to decode them. You have to know the conventions used by the Transaction Family, and typically you are defining your own family, so you are also defining your own encoding. I am re-emphasizing this point, because I think it is very important. There is no universal "right" answer for decoding.

zac (Thu, 14 Dec 2017 16:13:54 GMT):
Speaking specifically to IntKey, I would read the family specification here: https://sawtooth.hyperledger.org/docs/core/releases/latest/transaction_family_specifications/integerkey_transaction_family.html

zac (Thu, 14 Dec 2017 16:16:09 GMT):
According to the documentation, both the payloads and state data are CBOR encoded dicts. So I would start there.

amundson (Thu, 14 Dec 2017 16:17:09 GMT):
@skbehera85 that's probably a better question for @rbuysse , but my guess is today or tomorrow

lovesh (Thu, 14 Dec 2017 16:50:43 GMT):
Has joined the channel.

GKumar (Thu, 14 Dec 2017 17:26:34 GMT):
Has joined the channel.

GKumar (Thu, 14 Dec 2017 17:27:25 GMT):
Right now it seems all blocks are replicated to all the peer. So data in the block is redundant too much. Is it possible to specify minimum or maximum number of peer need to replicate or give consensus (like which are the region/country it need to replicate).

amundson (Thu, 14 Dec 2017 18:01:47 GMT):
@GKumar all validator nodes execute all transactions and verify the resulting state hash to verify state agreement across nodes. there are some optimizations potentially happening to reduce the duplication of batches sent along with the block (nodes commonly already have most batches).

amundson (Thu, 14 Dec 2017 18:02:40 GMT):
if the desire is different state on different nodes, then multiple sawtooth networks could be used

GKumar (Thu, 14 Dec 2017 18:06:17 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=QRk3zdwQLPu87u2tq) @amundson My doubt was mainly on volume of storage requirement if we replicate data across all the peers. What i mean is a block with 1KB data replicated to million peers then, am i not miss using available storage hardware. Initially i thought BlockChain helps enterprise to reduce the information duplication and better transference. Ultimately gonna reduce cost of operation. But now it seems eventually i will be eating up all storage resource. Or my understanding is something wrong?!!!!

amundson (Thu, 14 Dec 2017 18:08:57 GMT):
@GKumar generally speaking, blockchain distributes both CPU and storage requirements to all nodes and is thus extremely inefficient compared to traditional databases

amundson (Thu, 14 Dec 2017 18:10:30 GMT):
by "distributes" I mean duplicates

GKumar (Thu, 14 Dec 2017 18:11:23 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=XB92ehEwz2Fee5LLK) @amundson , Yes you are right, Thank you.

alberto_souza (Thu, 14 Dec 2017 19:12:45 GMT):
Has joined the channel.

shanb (Thu, 14 Dec 2017 19:17:32 GMT):
@boydjohnson Thanks for replying back. I am kind of confused with "no client support for java sdk". Do you mean I cannot use use java sdk to make remote hyper ledger calls. I am thinking of preparing payload using java sdk and making remote call using sawtooth restful APIs to add transactions to blockchain.

alberto_souza (Thu, 14 Dec 2017 19:37:14 GMT):
Hi @shanb, what @boydjohnson tried to say is that there is nothing ready to go in the java sdk. In order to make the call, you will need to create the TransactionEncoder, Headers and everything manually.

shanb (Thu, 14 Dec 2017 19:39:17 GMT):
@alberto_souza Hi, I created payload using Java SDK but currently facing 400 error for /batches API call.

shanb (Thu, 14 Dec 2017 19:41:13 GMT):
The batch list payload looks like this.

shanb (Thu, 14 Dec 2017 19:41:46 GMT):
batches { header: "\n*JFCVURKDJ5FFQR2NGJCECUK2KVEU2NCUINGVEV2JJU\022\200\001a0db41668f2b69e5bce96c33daa7dff6d06345ca40824598e8403f84ccbaaae31c6b28e56f2bcc089e9999cc781cfc7c41088849d49ea7318fbc0798868cab94" header_signature: "91f4e8b6d086cf27606debed18e6173911714d0bc41122dea57e32ea425946076ddd8dc3a878dbcaa73a50a3c204b07c23ceac17de5e67873b79969337c60eca" transactions { header: "\nB03df6582edfb87e978f1724a136ab5ade588971dc859b0735df452dbe5ae0f1273\032\vgdpr-ledger\"\0031.0*F12f15e7f5d945ce5fe7f3b861b77222bdb23df2e6bfde00c81e08e3893988258b0985b:F12f15e7f5d945ce5fe7f3b861b77222bdb23df2e6bfde00c81e08e3893988258b0985bJ\200\00178f1ac401809cec4ef28f0905a49d4b7fffacd961c3637232e5050c60997a08220fcbb7d73a6996625371ec01f6dbfeeaad1121495ba97b6c764a89bb86864fbRB03df6582edfb87e978f1724a136ab5ade588971dc859b0735df452dbe5ae0f1273" header_signature: "a0db41668f2b69e5bce96c33daa7dff6d06345ca40824598e8403f84ccbaaae31c6b28e56f2bcc089e9999cc781cfc7c41088849d49ea7318fbc0798868cab94" payload: "x\20078f1ac401809cec4ef28f0905a49d4b7fffacd961c3637232e5050c60997a08220fcbb7d73a6996625371ec01f6dbfeeaad1121495ba97b6c764a89bb86864fb" } }

alberto_souza (Thu, 14 Dec 2017 19:42:36 GMT):
ouch, I need to improve my skills to have a opinion about this payload :(. usually 400 is about invalid data... maybe your call is missing something.

alberto_souza (Thu, 14 Dec 2017 19:42:52 GMT):
I am trying to use the java sdk to register my processor... I already have a client using the javascript sdk.. my problem is that my java processor is never notified... The only thing that I perceived is that the java processor does not register any encode type. When I run the javascript processor, the encode was registered.

shanb (Thu, 14 Dec 2017 19:46:52 GMT):
yeah.. sorry for posting whole payload, just trying to know from others if missing anything.

amundson (Thu, 14 Dec 2017 20:32:26 GMT):
@shanb do you mean, that you are submitting JSON as above, or that the above is a JSON version of what is in the BatchList protobuf?

shanb (Thu, 14 Dec 2017 20:33:42 GMT):
@amundson I am sending BatchList protobuf content type -application/octet-stream

amundson (Thu, 14 Dec 2017 20:36:16 GMT):
there may be an logging statement in the validator log that might help. a likely cause is either missing fields, invalid signature (header_signature not matching the header data and public_key within the header), etc.

amundson (Thu, 14 Dec 2017 20:40:06 GMT):
I'm not familiar with the signing code in the Java SDK. I see it doesn't have any tests, so we might want to make sure it's doing the right thing if it's not something else obvious.

amundson (Thu, 14 Dec 2017 20:40:59 GMT):
(it does have tests ... been a while since I looked at a Maven project)

amundson (Thu, 14 Dec 2017 20:42:51 GMT):
Still, it doesn't do the same tests as we have with, say, the Rust SDK - https://github.com/hyperledger/sawtooth-core/blob/master/sdk/rust/src/signing/secp256k1.rs

amundson (Thu, 14 Dec 2017 20:44:15 GMT):
we should have something like that, where we test that KEY1_PRIV_HEX + MSG1 == MSG1_KEY1_SIG

RafalB 1 (Thu, 14 Dec 2017 20:52:02 GMT):
Has joined the channel.

amundson (Thu, 14 Dec 2017 21:50:34 GMT):
If anyone is looking for a small enhancement to make to sawtooh, fix this to give more specific reasons: "Exception creating context: Address or namespace xxxx listed in inputs is not valid". for example, "wrong length", "invalid character", ... etc. comes out of the executor.

amundson (Thu, 14 Dec 2017 21:51:38 GMT):
(that's a log message)

formax (Thu, 14 Dec 2017 23:32:53 GMT):
Hi all, has anybody found this problem installing the debian version? ```Installing new version of config file /etc/default/sawtooth-validator ... chmod: cannot access '/etc/sawtooth/*.toml*': No such file or directory```

formax (Thu, 14 Dec 2017 23:35:06 GMT):
`/etc/sawtooth` indeed doesn't have any `toml` file

amundson (Fri, 15 Dec 2017 01:58:28 GMT):
@formax there were some new filesystem permissioning commits that went in relatively recently, that's likely the cause. anything we need to know to reproduce this?

rberg2 (Fri, 15 Dec 2017 02:43:24 GMT):
Has joined the channel.

rberg2 (Fri, 15 Dec 2017 02:49:56 GMT):
@formax Hello, I am able to replicate this on upgrade where the files don't exist already. As a work around you can run "sudo touch /etc/sawtooth/doh.toml.example; sudo apt-get -f install; sudo rm /etc/sawtooth/doh.toml.example" I will fix the package ASAP, and thanks for reporting this!

amundson (Fri, 15 Dec 2017 03:38:12 GMT):
1.0.0rc5 release notes - https://lists.hyperledger.org/pipermail/hyperledger-stl/2017-December/000136.html

BeeKay (Fri, 15 Dec 2017 05:27:44 GMT):
@zac : can I look at the Event Broadcaster issue you created? (#945)

skbehera85 (Fri, 15 Dec 2017 10:16:28 GMT):
@amundson Image is available now ... Thanks :)

MichaelVandycke (Fri, 15 Dec 2017 12:34:48 GMT):
Has joined the channel.

MichaelVandycke (Fri, 15 Dec 2017 12:35:10 GMT):
Hey anyone familiar with iptables?

MichaelVandycke (Fri, 15 Dec 2017 12:36:02 GMT):
Once my iptables is running i can't get curl working correctly on my host :(

skbehera85 (Fri, 15 Dec 2017 12:52:06 GMT):
@amundson Hi, I am able to build the image. But from the client container (sawtooth-shell-default), i am not able to execute "smallbank-workload playlist create --accounts 1000 -n 100000 -o smallbank.playlist" . It says "smallbank-workload: command not found". Am I missing something ? Is there any explanation on how to use smallbank?

jeanmick (Fri, 15 Dec 2017 13:42:41 GMT):
Has joined the channel.

zac (Fri, 15 Dec 2017 16:02:59 GMT):
@shanb Typically the REST API sends back a JSON body with an `error` property that has more information than just the 400. Anything useful in there?

zac (Fri, 15 Dec 2017 16:03:40 GMT):
@BeeKay Go for it!

shanb (Fri, 15 Dec 2017 16:49:37 GMT):
@zac only detail message in response is detail message is 400 Bad Request

shanb (Fri, 15 Dec 2017 16:49:37 GMT):
@zac only detail message in response is 400 Bad Request

zac (Fri, 15 Dec 2017 16:52:19 GMT):
There was no JSON body sent in the response from the Sawtooth REST API?

zac (Fri, 15 Dec 2017 16:52:24 GMT):
That is highly unusual

zac (Fri, 15 Dec 2017 16:53:12 GMT):
How could I reproduce that behavior?

amundson (Fri, 15 Dec 2017 17:14:48 GMT):
@skbehera85 only the transaction processor has been packaged in docker thus far. you can run the CLI from the host pointing at the validator running in docker. or you could add a local docker image with rust installed to run it from within a container. you could probably even install rust within sawtooth-shell and then cd to the mounted directory (/project/sawtooth-core/) and run it from there (./bin/smallbank-workload).

pschwarz (Fri, 15 Dec 2017 18:22:05 GMT):
@sharb could you provide some of the code you're using to produce the transaction?

pschwarz (Fri, 15 Dec 2017 18:22:05 GMT):
@shanb could you provide some of the code you're using to produce the transaction?

kelly_ (Fri, 15 Dec 2017 18:22:15 GMT):
@shanb ^^^

shanb (Fri, 15 Dec 2017 18:32:13 GMT):
@pschwarz I am trying some more things so ll send it over if it works.

formax (Fri, 15 Dec 2017 19:41:55 GMT):
@amundson @rberg2 thank you guys for the quick answer! I'm going to try the quick fix right now.

formax (Fri, 15 Dec 2017 20:26:00 GMT):
@rberg2 please LMK when if you want me to test the new package when ready

formax (Fri, 15 Dec 2017 23:50:33 GMT):
I don't know who's the documentation owner, so I post this as a generic message: I think the *Running Sawtooth as a Service* page (https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc5/sysadmin_guide/systemd.html) is missing the service restart command `sudo systemctl enable sawtooth-COMPONENT`. Without it the services won't restart at next reboot.

formax (Fri, 15 Dec 2017 23:54:48 GMT):
I cannot find any documentation about: ```sawtooth-validator[1346]: [2017-12-15 23:39:07.226 WARNING cli] Network key pair is not configured, Network communications between validators will not be authenticated or encrypted.``` Where do I have to configure the keys?

amundson (Sat, 16 Dec 2017 02:27:05 GMT):
validator.toml

BrianHerman (Sat, 16 Dec 2017 04:41:18 GMT):
Has joined the channel.

BrianHerman (Sat, 16 Dec 2017 04:48:08 GMT):
is the sawtooth-sdk pip package published by you guys

BrianHerman (Sat, 16 Dec 2017 04:48:35 GMT):
i didn't check maybe thats why i am having issues

BrianHerman (Sat, 16 Dec 2017 04:48:36 GMT):
https://pypi.python.org/pypi/sawtooth-sdk/1.0.0rc5

gen_el (Sat, 16 Dec 2017 09:59:08 GMT):
In sawtooth, can private channels exist within the network. How does one ensure privacy of data between some organizations on the network?

abakhiet (Sat, 16 Dec 2017 13:55:11 GMT):
Has joined the channel.

abakhiet (Sat, 16 Dec 2017 13:57:14 GMT):
Hello all, please accept my simple question as I’m trying to be in spot with Sawtooth, but I think I’m missing a point of how to get benefits of this business as a small business company ?

pschwarz (Sat, 16 Dec 2017 21:54:39 GMT):
@BrianHerman the pip package is published by the sawtooth team

pschwarz (Sat, 16 Dec 2017 21:54:50 GMT):
What are the issues are you having?

b9lab-damien (Sat, 16 Dec 2017 22:46:32 GMT):
Has joined the channel.

Dan (Sun, 17 Dec 2017 00:12:48 GMT):
@formax if you want put up a pull request to update that sys admin doc that would be welcome. Also you can always submit bugs and feature requests on https://jira.hyperledger.org/projects/STL/summary.

Dan (Sun, 17 Dec 2017 00:14:22 GMT):
Those are both good ways to contribute to our growing community. And of course we're always happy to just learn of the issues on this chat.

formax (Sun, 17 Dec 2017 00:22:56 GMT):
@Dan thanks for the info, it's a little bit late here but I'll do tomorrow. And I'm really happy to contribute to this project!

Aires.Marques (Sun, 17 Dec 2017 18:21:58 GMT):
Has joined the channel.

ReedCao (Mon, 18 Dec 2017 06:27:36 GMT):
the downloading of the box will fail every time in about 25%.

ReedCao (Mon, 18 Dec 2017 06:28:15 GMT):
I am trying to download it directly.

ReedCao (Mon, 18 Dec 2017 06:35:17 GMT):
OK. it can resume, this time, it is 40 percent.

sayan-chatterjee (Mon, 18 Dec 2017 07:08:17 GMT):
Has joined the channel.

anton_petrashkevich (Mon, 18 Dec 2017 11:54:20 GMT):
`from sawtooth_signing.secp256k1_signer import generate_privkey` results in ``` Traceback (most recent call last): File "", line 1, in ImportError: No module named 'sawtooth_signing.secp256k1_signer' ``` And there is no such file on github either. Was it moved\renamed\etc? https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_python.html refers to it as a way to generate pub\priv keys

IvanTzompov (Mon, 18 Dec 2017 14:25:23 GMT):
Has joined the channel.

kelly_ (Mon, 18 Dec 2017 16:55:18 GMT):
@dan ^

kelly_ (Mon, 18 Dec 2017 16:55:29 GMT):
@Dan

jmugambi (Mon, 18 Dec 2017 20:35:38 GMT):
Has joined the channel.

pschwarz (Mon, 18 Dec 2017 20:41:05 GMT):
If you're looking at the master branch, there was a refactor in the way that private keys are generated: https://sawtooth.hyperledger.org/docs/core/nightly/master/_autogen/sdk_submit_tutorial_python.html#creating-a-private-key-and-signer

pschwarz (Mon, 18 Dec 2017 20:41:16 GMT):
@anton_petrashkevich :point_up:

pschwarz (Mon, 18 Dec 2017 20:42:07 GMT):
That latest docs is based on the current 0.8.x release

pschwarz (Mon, 18 Dec 2017 20:42:24 GMT):
How did you install the python library

pschwarz (Mon, 18 Dec 2017 20:42:24 GMT):
How did you install the python library?

BrianHerman (Tue, 19 Dec 2017 03:29:28 GMT):
@pschwartz the pip package is missing the protobuf library python source code files

BrianHerman (Tue, 19 Dec 2017 03:30:02 GMT):
@pschwarz like batch_pb2.py

hanumankumar (Tue, 19 Dec 2017 06:14:36 GMT):
Has joined the channel.

hanumankumar (Tue, 19 Dec 2017 06:15:37 GMT):
hi how to create hyperledger sawtooth lake instance in aws?

anton_petrashkevich (Tue, 19 Dec 2017 12:26:23 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=quLYSzc3Zcm4DDobJ) @pschwarz I installed nightly build. Thanks for your help

Dan (Tue, 19 Dec 2017 14:01:19 GMT):
https://aws.amazon.com/marketplace/pp/B075TKQCC2

muasif80 (Tue, 19 Dec 2017 14:43:19 GMT):
Has joined the channel.

muasif80 (Tue, 19 Dec 2017 14:43:36 GMT):
Is sawtooth alternative of ethereum

muasif80 (Tue, 19 Dec 2017 14:43:50 GMT):
what is difference between sawtooth and fabric

Vincent_Bonnet (Tue, 19 Dec 2017 14:57:14 GMT):
Has joined the channel.

Dan (Tue, 19 Dec 2017 15:08:36 GMT):
@muasif80 sawtooth includes and EVM so you can run your solidity contracts. Sawtooth provides a variety of other features though especially enterprise features including permissioning and [un]pluggable consensus (change consensus on the fly).

Dan (Tue, 19 Dec 2017 15:09:49 GMT):
Sawtooth is also very different than fabric. Sawtooth has strict state replication that ensures cryptographically identical databases at each node. Sawtooth has many other differences too including support for writing business logic (smart contracts) in a variety of languages.

Vincent_Bonnet (Tue, 19 Dec 2017 15:31:37 GMT):
Hi everybody, Trying and deploying

pschwarz (Tue, 19 Dec 2017 15:37:06 GMT):
@BrianHerman thanks, I'll let the right folks know about that issue

Vincent_Bonnet (Tue, 19 Dec 2017 15:42:14 GMT):
Hi everybody, Trying and deploying Sawtooth RC5… but on several nodes ( through iptables, firewalls, and interfaces) : my understanding is that one node is dealing with Genesis block generation while other node, via peering, could connect and get this Genesis without to have to generate it locally on each node…. Is it correct ? If so, then, what about configuration on peering ? 8800 port seems the one used for it, but “seeds” introduce a 8801 port not bound on interfaces (netstat ) …. in the validator.toml sample… ( sample not very complete as for me) can anybody just illustrate 8800/8801 discovery and topology ?

Dan (Tue, 19 Dec 2017 19:45:39 GMT):
Imagine the network as a group of homogenous nodes. One of them will have created a genesis block but otherwise it's not special. You can launch a validator on each host and specify whichever port you like. Then for other nodes to reach that one they need to know the connection string which will be the IP and port. Each node needs to know of at least one peer. In starting a network its probably convenient all nodes know the peer with the genesis block (this is just to get started though, there's nothing special about that node).

aadedeji (Tue, 19 Dec 2017 19:53:53 GMT):
Hi, every now and then when I submit (post) a batch to the rest api server, an error gets raised ("TypeError: getresponse() got an unexpected keyword argument 'buffering'). Does anyone know why this happens? Does this mean that rest api server is backed up and overloaded with requests? Thanks.

aadedeji (Tue, 19 Dec 2017 19:54:12 GMT):

Screen Shot 2017-12-19 at 11.34.05 AM.png

PabloBascunana (Wed, 20 Dec 2017 08:49:06 GMT):
Has joined the channel.

anton_petrashkevich (Wed, 20 Dec 2017 10:19:03 GMT):
may I somehow access previous transaction (having it's id) from within Handler's apply method?

Vincent_Bonnet (Wed, 20 Dec 2017 10:23:01 GMT):
Thx Alan, seems my peering so is not working properly, while all my requested port are up/telnetable.... but peers in log staying empty [] with ""Validator Not Ready"" msg by Validator on the no-genesis nodes , while network_public_key/private_key is consistent. That was my indirect question on port... with Seeds and Peers.

paltamadura (Wed, 20 Dec 2017 10:46:23 GMT):
Has joined the channel.

sagarvilas (Wed, 20 Dec 2017 11:37:18 GMT):
Has joined the channel.

sagarvilas (Wed, 20 Dec 2017 11:37:51 GMT):
Hi not sure if this is the correct place to report errors in sawtooth documentation https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html#verifying-that-the-rest-api-is-running "Run the following command in the terminal window in which you started the REST API" i do not think it is possible to run any command in a terminal in which rest-api is running

hanumankumarn (Wed, 20 Dec 2017 13:14:26 GMT):
Has joined the channel.

hanumankumarn (Wed, 20 Dec 2017 13:15:48 GMT):
How to set up marketplace example and run in java sdk ?

tkuhrt (Wed, 20 Dec 2017 16:44:41 GMT):
@sagarvilas : The #sawtooth channel is the right place to report documentation issues on Hyperledger Sawtooth: https://chat.hyperledger.org/channel/general?msg=SAksy3C9RsWomvEFD

tkuhrt (Wed, 20 Dec 2017 16:44:52 GMT):
Moved over from #general

hunter32 (Wed, 20 Dec 2017 16:49:15 GMT):
@Dan hello finally i got the SPID and Intel verified my cert file. so now i am in the step where i must configure these: endpoint = "tcp://[external interface]:[port]" and seeds = ["tcp://[seed address 1]:[port]", "tcp://[seed address 2]:[port]"] Any idea what exactly i have to do in my machine?

hunter32 (Wed, 20 Dec 2017 16:49:15 GMT):
@Dan hello finally i got the SPID and Intel verified my cert file. so now i am in the step where i must configure these: 'endpoint = "tcp://[external interface]:[port]" and seeds = ["tcp://[seed address 1]:[port]", "tcp://[seed address 2]:[port]"] ' Any idea what exactly i have to do in my machine?

hunter32 (Wed, 20 Dec 2017 16:49:15 GMT):
@Dan hello finally i got the SPID and Intel verified my cert file. so now i am in the step where i must configure these: endpoint = "tcp://[external interface]:[port]" and seeds = ["tcp://[seed address 1]:[port]", "tcp://[seed address 2]:[port]"] Any idea what exactly i have to do in my machine?

grkvlt (Wed, 20 Dec 2017 19:13:57 GMT):
I'm thinking of doing some work to get the Docker images in better shape. Over 1 GiB for an image makes for slow startup! I've also got a Dockerfile to build an image for the `smallbank-workload`, which would be useful for people doing perf testing: - https://gist.github.com/grkvlt/24f5428c06d541ed1d3e7389585ae8c9 I'll add images for the other workload tools and put it alongside the other files in `docker/` but it's also pretty big when built, so I'm guilty of this too, but I plan to use the same techniques to slim down _all_ the images in a single PR...

sagarvilas (Wed, 20 Dec 2017 23:38:44 GMT):
@tkuhrt thank you. i will report errors in documentation as and when i find them

tkuhrt (Wed, 20 Dec 2017 23:57:32 GMT):
@sagarvilas : You can always report issues in https://jira.hyperledger.org, including documentation issues. Also, if you want to have a go at fixing the issue, the Sawtooth community would be happy to review your pull requests.

sagarvilas (Wed, 20 Dec 2017 23:59:36 GMT):
@tkuhrt sure ill log issue in jira and fix the ones i can.

accuarion (Thu, 21 Dec 2017 01:57:33 GMT):
Has joined the channel.

accuarion (Thu, 21 Dec 2017 03:27:32 GMT):
HI sawtooth community. I am looking to see if an idea I have could be worth doing and some direction as to where I should start. What I am looking for is a platform that will be helpful to both Individuals and Businesses where Businesses can share information about Bills, such as the Utility Bills, Loans, and additionally transactional data as to what is occurring. I am thinking that the Project Sawtooth is one that would work but wanted to get your input first. My goal is that once we have a platform built or configured, that Banks, Utilities, and pretty much any entity that sends "bills" to customers can put their data out on the platform which can then be pulled and help users have a complete financial picture where their debts/bills are and proof of payment for both the businesses and individuals. Let me know what you think and where I can start. Any help would be appreciated

anrodon (Thu, 21 Dec 2017 11:32:25 GMT):
Hey guys

anrodon (Thu, 21 Dec 2017 11:32:41 GMT):
I just launched an AWS AMI for Sawtooth Supply Chain

anrodon (Thu, 21 Dec 2017 11:32:55 GMT):
I already have my Public DNS address and so on

anrodon (Thu, 21 Dec 2017 11:32:58 GMT):
but I cannot connect

anrodon (Thu, 21 Dec 2017 11:33:06 GMT):
I don't know a lot about this yes

anrodon (Thu, 21 Dec 2017 11:33:16 GMT):
could anyone help me to get on board? :D

anrodon (Thu, 21 Dec 2017 11:33:21 GMT):
thanks in advance

karentani (Thu, 21 Dec 2017 12:38:37 GMT):
Has joined the channel.

grkvlt (Thu, 21 Dec 2017 14:54:04 GMT):
hi. anyone know what has gone wrong here: ```[14:19:55.424 [ConnectionManager] gossip DEBUG] Number of peers: 5 [14:19:55.424 [ConnectionManager] gossip DEBUG] Peers are: ['tcp://validator:8800', 'tcp://test-000:8800', 'tcp://test-001:8800', 'tcp://test-003:8800', 'tcp://test-000:8800'] [14:19:55.424 [ConnectionManager] gossip DEBUG] Unpeered candidates are: [] ``` as you can see, `test-000` is represented *twice* in the peers list ... ?! interestingly this validator seems to be failing to accept transactions for execution, too...

jsmitchell (Thu, 21 Dec 2017 15:58:47 GMT):
huh @grkvlt haven't seen anything like that in a while. @agunde ^

agunde (Thu, 21 Dec 2017 16:01:02 GMT):
I will add looking into this to my todo list.

jsmitchell (Thu, 21 Dec 2017 16:03:26 GMT):
@grkvlt thanks for the contributions, by the way!

jsmitchell (Thu, 21 Dec 2017 16:48:43 GMT):
I just pushed a PR to add you to the committers whitelist

numical (Thu, 21 Dec 2017 17:19:39 GMT):
Has joined the channel.

jsmitchell (Thu, 21 Dec 2017 18:25:17 GMT):
@grkvlt if you rebase your PRs on master, the tests should kick off automatically from now on

sagarvilas (Fri, 22 Dec 2017 00:44:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rGz8bsA83fcFCwoTP) @anrodon what is the error that you are getting

sagarvilas (Fri, 22 Dec 2017 01:14:47 GMT):
Hi all for some reason XO client does not work unless there is a settings-tp running

girumtibebu (Fri, 22 Dec 2017 08:58:50 GMT):
Has joined the channel.

grkvlt (Fri, 22 Dec 2017 12:38:03 GMT):
Brilliant, thanks for that @jsmitchell - I'll get the PRs rebased

DhavalShah (Fri, 22 Dec 2017 12:40:42 GMT):
Has joined the channel.

DhavalShah (Fri, 22 Dec 2017 12:42:12 GMT):
Guys, I am trying to develop using Java SDK. To compile the SDK there is a reference to the package sawtooth.sdk.protobuf.* but it is unresolved in the project I got from GIT. Any pointers will be highly appreciated

jsmitchell (Fri, 22 Dec 2017 15:52:32 GMT):
@sagarvilas there are probably settings transactions in the genesis block that need to be processes - thus the need for the settings tp to proceed

MicBowman (Fri, 22 Dec 2017 18:12:32 GMT):
ping @jsmitchell

jsmitchell (Fri, 22 Dec 2017 18:13:57 GMT):
yo @MicBowman

MicBowman (Fri, 22 Dec 2017 18:14:38 GMT):
hey... i need some git help... i want to create a repo that i can use to restructure the sgx enclave;

MicBowman (Fri, 22 Dec 2017 18:15:26 GMT):
whats the best way to clone the hl sawtooth-core repo into a separate internal repo (for now)

jsmitchell (Fri, 22 Dec 2017 18:15:57 GMT):
internal github or something else?

MicBowman (Fri, 22 Dec 2017 18:16:05 GMT):
i want some freedom to do local PRs but at some point push back. i could just fork into public git hub

MicBowman (Fri, 22 Dec 2017 18:16:06 GMT):
yes

MicBowman (Fri, 22 Dec 2017 18:16:25 GMT):
can i just set upstream in a new repo & pull?

MicBowman (Fri, 22 Dec 2017 18:16:48 GMT):
this shouldn't be hard...

MicBowman (Fri, 22 Dec 2017 18:16:55 GMT):
i'm sure i'm missing something completely obvious

jsmitchell (Fri, 22 Dec 2017 18:17:20 GMT):
@amundson has done this a bunch more than me (setting up an internal tracking repo)

jsmitchell (Fri, 22 Dec 2017 18:17:27 GMT):
you could probably clone down

jsmitchell (Fri, 22 Dec 2017 18:17:37 GMT):
add a new remote for your internal target

jsmitchell (Fri, 22 Dec 2017 18:17:40 GMT):
and push to that

MicBowman (Fri, 22 Dec 2017 18:18:49 GMT):
let me try that...

MicBowman (Fri, 22 Dec 2017 18:20:46 GMT):
that was it... thanks!

jsmitchell (Fri, 22 Dec 2017 18:20:54 GMT):
:thumbsup:

MicBowman (Fri, 22 Dec 2017 18:21:27 GMT):
basically... i'm splitting the sgx enclave code into three pieces... one for setting up the enclave, one for signup info, and one for the poet semantics

MicBowman (Fri, 22 Dec 2017 18:21:44 GMT):
i want to reuse the base enclave and signup code for some other projects

MicBowman (Fri, 22 Dec 2017 18:22:18 GMT):
i think i have a clean version of that noew

MicBowman (Fri, 22 Dec 2017 18:22:19 GMT):
now

jsmitchell (Fri, 22 Dec 2017 18:22:20 GMT):
cool, you know you could just do all of that in a public github fork and then submit PRs back against the main hl repo, right?

MicBowman (Fri, 22 Dec 2017 18:22:41 GMT):
i can if you want the restructuring...

MicBowman (Fri, 22 Dec 2017 18:22:47 GMT):
now functionality changes

jsmitchell (Fri, 22 Dec 2017 18:23:25 GMT):
if you think it's beneficial stuff, it would be good to have it in the main repo

jsmitchell (Fri, 22 Dec 2017 18:24:02 GMT):
if it's only germane to the other projects, then probably not?

MicBowman (Fri, 22 Dec 2017 18:24:57 GMT):
its mostly about re-use of the signup code

MicBowman (Fri, 22 Dec 2017 18:25:18 GMT):
modularizes the actual poet code

MicBowman (Fri, 22 Dec 2017 18:25:26 GMT):
but no other particular value

jsmitchell (Fri, 22 Dec 2017 18:27:16 GMT):
I'll leave it up to you, but if you want to do that, the workflow would be to fork the repo in the github ui and then you clone your forked version. You create branches locally and push them up to your forked version. If you want to submit a PR, you fetch upstream and rebase off master and then push your branch to your fork. Then open a PR in the core repo referencing your fork

jsmitchell (Fri, 22 Dec 2017 18:27:27 GMT):

Screen Shot 2017-12-22 at 12.25.39 PM.png

jsmitchell (Fri, 22 Dec 2017 18:27:34 GMT):
The fork button is up there on the right

MicBowman (Fri, 22 Dec 2017 18:29:40 GMT):
thanks!

skbehera85 (Fri, 22 Dec 2017 18:42:37 GMT):
hi all, how do i get the timestamp of each transaction.

jsmitchell (Fri, 22 Dec 2017 18:42:50 GMT):
timestamps and blockchains don't mix

jsmitchell (Fri, 22 Dec 2017 18:43:00 GMT):
what are you trying to determine?

jsmitchell (Fri, 22 Dec 2017 18:46:05 GMT):
if you set the trace field in the batch header, validators will log the batch as it goes through the processing pipeline

jsmitchell (Fri, 22 Dec 2017 18:46:11 GMT):
the logs are timestamped

jsmitchell (Fri, 22 Dec 2017 18:46:48 GMT):
eg:

jsmitchell (Fri, 22 Dec 2017 18:46:50 GMT):
[12:24:25.759 [Thread-28] chain DEBUG] TRACE f8865cab45973727f6a3671d47cc77e956cba01fda89109d3088391780ae76b670f082aacde596a03a49103cde5498073287a17f60a523bcc4921c4872ade318: ChainController

jsmitchell (Fri, 22 Dec 2017 18:47:13 GMT):
that "ChainController" step means the batch was processed in a block written to the blockchain

DJ1008 (Sat, 23 Dec 2017 13:25:58 GMT):
Has joined the channel.

DJ1008 (Sat, 23 Dec 2017 13:31:26 GMT):
I wanna learn to code on Hyperledger sawtooth.. please forward some useful links to learn. I have prior python expertise.

wheeze (Sat, 23 Dec 2017 14:56:42 GMT):
Has joined the channel.

eliezemmour (Sat, 23 Dec 2017 17:08:07 GMT):
Has joined the channel.

hacknightly (Sat, 23 Dec 2017 18:38:52 GMT):
Has joined the channel.

moinqidw (Sun, 24 Dec 2017 04:09:47 GMT):
Has joined the channel.

moinqidw (Sun, 24 Dec 2017 04:10:45 GMT):
Hi all, could not find details on this in the documentation. Does anyone know if private channels are supported in Sawtooth similar to fabric?

rammohanmishra (Sun, 24 Dec 2017 20:45:57 GMT):
Has joined the channel.

rammohanmishra (Sun, 24 Dec 2017 20:47:11 GMT):
whenever i tried to publish a new batch i see in console "Invalid Transaction Tried to get unauthorized address:

rammohanmishra (Sun, 24 Dec 2017 20:47:38 GMT):
appreciate any type of help

rammohanmishra (Sun, 24 Dec 2017 21:21:48 GMT):
i saw previous post and someone suggested to add address into inputs

rammohanmishra (Sun, 24 Dec 2017 21:22:17 GMT):
Is it inputs of transaction header or somewhere else?

PallabPaul (Mon, 25 Dec 2017 09:01:34 GMT):
Has joined the channel.

PallabPaul (Mon, 25 Dec 2017 09:02:09 GMT):
Hello I hope i am in the right channel. So I am testing out the XO game tutorial found here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/intro_xo_transaction_family.html#xo-transaction-family-specification and I am running into an issue when I try to create game1. when i do the command 'xo list' game1 does not appear and these are the issues that appear on my validator:

PallabPaul (Mon, 25 Dec 2017 09:02:30 GMT):

Clipboard - December 25, 2017 4:02 AM

PallabPaul (Mon, 25 Dec 2017 09:02:35 GMT):
i think there may be an issue with the ports i am using because after setting up my validator i have to kill port 8080 for my REST API to run properly. please let me know if anyone can help. thanks

BeeKay (Mon, 25 Dec 2017 18:26:10 GMT):
is there a way to implement payload security? I may want to wall-off certain payload contents from my counter parties. Better still, i may want to have a different wall for different counter-parties that i share the same payload with. I guess this may be a priority for permissioned implementations.Thoughts?

PallabPaul (Mon, 25 Dec 2017 20:30:07 GMT):
also, can someone tell me the command to delete an existing chain. i am not sure how to get to var/lib/sawtooth like mentioned in this note:

PallabPaul (Mon, 25 Dec 2017 20:30:13 GMT):

Clipboard - December 25, 2017 3:30 PM

rohanagarwal (Mon, 25 Dec 2017 21:32:32 GMT):
Has joined the channel.

tkuhrt (Tue, 26 Dec 2017 16:12:45 GMT):
@DJ1008 : Are you looking to develop as an application or core developer? The Hyperledger Sawtooth documentation has information for either -- https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html or https://sawtooth.hyperledger.org/docs/core/releases/latest/core_developers_guide.html. Also, if the former and you are just getting started, you might check out the following EdX course: https://www.edx.org/course/blockchain-business-introduction-linuxfoundationx-lfs171x

tkuhrt (Tue, 26 Dec 2017 16:16:06 GMT):
@moinqidw : Hyperledger Sawtooth does not support private channels in the same way as Hyperledger Fabric. You will be interested in this previous answer from October 9th to someone asking a similar question: https://chat.hyperledger.org/channel/sawtooth?msg=znXoC4ZQNw5j7wmos. Only use this link for the Private UTXO example: https://sawtooth.hyperledger.org/docs/core/releases/latest/examples/private_utxo/overview.html.

tkuhrt (Tue, 26 Dec 2017 16:18:14 GMT):
Expanding the October 9th link here: [ ](https://chat.hyperledger.org/channel/sawtooth?msg=znXoC4ZQNw5j7wmos)

rahulr92 (Tue, 26 Dec 2017 18:16:58 GMT):
@tkuhrt The documentation URL shared in the Oct9th post by Dan seems to have changed now. This works - https://sawtooth.hyperledger.org/docs/core/releases/latest/examples/private_utxo/overview.html

tkuhrt (Tue, 26 Dec 2017 18:17:30 GMT):
Yep

tkuhrt (Tue, 26 Dec 2017 18:18:44 GMT):
Thanks for calling that out...that link seems lost in my above message with the way rocket.chat formats.

Mythul (Tue, 26 Dec 2017 23:13:31 GMT):
Has joined the channel.

Mythul (Tue, 26 Dec 2017 23:14:03 GMT):
Hi

Mythul (Tue, 26 Dec 2017 23:14:47 GMT):
can somebody help me debug a Batch submit functionality written in java for 'intkey' ?

Mythul (Tue, 26 Dec 2017 23:21:17 GMT):
https://pastebin.com/2mSkDpcS

Mythul (Tue, 26 Dec 2017 23:21:41 GMT):
I'm getting batch invalid, not added to block error

yipcma (Wed, 27 Dec 2017 07:41:30 GMT):
hi guys, wonder if there's any specific tutorial/course for sawtooth along the line of IBM's blockchain course. Thanks a lot in advnace. (ps: i'm following the edx hyperledger course)

yipcma (Wed, 27 Dec 2017 07:41:30 GMT):
hi guys, wonder if there's any specific tutorial/course for sawtooth along the line of IBM's blockchain course. Thanks a lot in advance. (ps: i'm following the edx hyperledger course)

yipcma (Wed, 27 Dec 2017 07:41:30 GMT):
hi guys, wonder if there's any specific tutorial/course for sawtooth similar to IBM's blockchain course. Thanks a lot in advance. (ps: i'm following the edx hyperledger course)

rammohanmishra (Wed, 27 Dec 2017 16:43:16 GMT):
I am getting this error "Invalid Transaction Tried to get unauthorized address: ['3400deqtcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9']" when i have tried to add extra message in Supply-Chain example otherwise, supply-chain example works very fine. but if i add any extra message field. it keeps throwing unauthorized address error

pschwarz (Wed, 27 Dec 2017 16:49:42 GMT):
That indicates that your transaction is reading from an address that wasn't included in the transaction header's `inputs` field

rammohanmishra (Wed, 27 Dec 2017 17:57:17 GMT):
@pschwarz return new TransactionEncoder(privateKey, { familyName: 'supply_chain', familyVersion: '1.0', payloadEncoding: 'application/protobuf', inputs: ['3400de'], outputs: ['3400de'], batcherPubkey })

rammohanmishra (Wed, 27 Dec 2017 17:59:00 GMT):
@pschwarz above snippet .. work with initial setup very well.. but when i add a new message type in transactionfamily then it throws unauthorized address error

rammohanmishra (Wed, 27 Dec 2017 17:59:28 GMT):
@pschwarz do i need to make any changes in validator?

pschwarz (Wed, 27 Dec 2017 18:44:55 GMT):
Hmm

pschwarz (Wed, 27 Dec 2017 18:45:04 GMT):
That does look right

pschwarz (Wed, 27 Dec 2017 18:46:05 GMT):
I'd have to know a bit more about what you've changed, then

rammohanmishra (Wed, 27 Dec 2017 18:55:42 GMT):
AGENT = 'ae' PROPERTY = 'ea' PROPOSAL = 'aa' RECORD = 'ec' RECORD_TYPE = 'ee' QUESTION_TYPE = 'qt'

rammohanmishra (Wed, 27 Dec 2017 18:56:09 GMT):
i have added last line to handle additional address type

rammohanmishra (Wed, 27 Dec 2017 18:57:24 GMT):
but it seems that it is not being allowed and treat it as unauthorized

rammohanmishra (Wed, 27 Dec 2017 18:57:56 GMT):
now, i have changed to AGENT = 'ae' PROPERTY = 'ea' PROPOSAL = 'aa' RECORD = 'ec' RECORD_TYPE = 'ee' QUESTION_TYPE = 'ab'

rammohanmishra (Wed, 27 Dec 2017 18:58:52 GMT):
QUESTION_TYPE value from 'qt' to 'ab'

rammohanmishra (Wed, 27 Dec 2017 18:59:00 GMT):
and it starts working

rammohanmishra (Wed, 27 Dec 2017 19:05:36 GMT):
@pschwarz any idea why address with 'qt' does not work .. but work with 'ab'.. do i need to define address range?

pschwarz (Wed, 27 Dec 2017 19:06:55 GMT):
Ah, now I see the problem - addresses may only be valid hex characters. `qt` is not

pschwarz (Wed, 27 Dec 2017 19:07:33 GMT):
The bug is in the error messages - it should indicated as to why that is unauthorized

rammohanmishra (Wed, 27 Dec 2017 19:11:02 GMT):
@pschwarz you are genius.. thank you for pointing it out

pschwarz (Wed, 27 Dec 2017 19:14:04 GMT):
:thumbsup:

Meai2 (Wed, 27 Dec 2017 21:21:16 GMT):
Has joined the channel.

Meai2 (Wed, 27 Dec 2017 21:21:44 GMT):
How come sawtooth is supposedly scalable yet this simple demo app crawls at a snail's pace?

Meai2 (Wed, 27 Dec 2017 21:22:25 GMT):
I'm talking about the seafood marketplace etc

pschwarz (Wed, 27 Dec 2017 22:32:22 GMT):
The demo app is slow due to the way we (naively) implemented synchronizing block chain state into a reporting database, which allows for richer queryability. This synchronization aspect wasn't a built-in feature of the 0.7 release, which those demos are currently based on, so it is essentially recreating a table with all of the state every block. In the forthcoming 1.0 release, we've added an event system, one of which sends state deltas to a client, as well as come up with some more clever ways of storing data in an external reporting DB that require minimal inserts/updates per block. You can see this type of work in the sawtooth-supply-chain repo (https://github.com/hyperledger/sawtooth-supply-chain) or in the in-progress sawtooth-marketplace repo (https://github.com/hyperledger/sawtooth-marketplace). Hopefully, we'll be deploying these two examples to replace the current ones in the near future.

rahulr92 (Thu, 28 Dec 2017 05:40:42 GMT):
Hi, I've gone through the edX course and also setup and played around with the sawtooth supply-chain demo. I'm interested in testing it out with multiple validators to try various validator permissioning settings. What's the best resource on getting multiple validators to talk in sawtooth (peering)?

rahulr92 (Thu, 28 Dec 2017 08:11:31 GMT):
I was able to get the validators to attempt to peer with the each other ("attempting to peer with tcp://:8800" as per validator debug log) by doing the following: 1. clearing /var/lib/sawtooth for one of the validator 2. creating the validator.toml file and updating the seeds and peers config with public endpoints of each other 3. restarting the validators However, the validators still seem to be failing to connect. This is what I see periodically in both validator logs while they seem to be trying to connect - https://pastebin.com/c1MuVB8s. Not sure if this is a network issue wherein the endpoints are not reachable. Please let me know in case I am missing any obvious steps.

RTLagot (Thu, 28 Dec 2017 14:50:09 GMT):
Has joined the channel.

sagarvilas (Fri, 29 Dec 2017 00:12:07 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=7TYCJuv9zcEqoCnju) @jsmitchell hmm interesting, let me check that. thank you

MaxWiz (Fri, 29 Dec 2017 01:06:34 GMT):
Has joined the channel.

SangramSawant (Fri, 29 Dec 2017 07:18:37 GMT):
Has joined the channel.

SangramSawant (Fri, 29 Dec 2017 07:19:14 GMT):
Version in "./sawtooth-default.yaml" is unsupported, getting this error for installing sawtooth

SangramSawant (Fri, 29 Dec 2017 07:19:36 GMT):
any solution or recommendation?

Johnjam (Fri, 29 Dec 2017 09:43:25 GMT):
Hi everyone, sometimes I got this errors when I send more than 1 batch with more than 1 txn each : https://ibb.co/di34pw & https://ibb.co/fKg2bb . I'm in parallel schedule configuration (because sometimes with the serial schedule configuration, the block validation process stops for some validators and they start to fork without resolving afterwards). Maybe I'm missing smthg ?

sascha (Fri, 29 Dec 2017 10:55:12 GMT):
Has joined the channel.

moinqidw (Fri, 29 Dec 2017 11:01:53 GMT):
@tkuhrt : Thanks for your response. So it seems in Sawtooth privacy is a property of transactions rather than the network (as is the case with fabric). Thanks that makes making a choice between the two much simpler.

Iliadis (Fri, 29 Dec 2017 20:14:57 GMT):
Has joined the channel.

rberg2 (Fri, 29 Dec 2017 20:35:20 GMT):
@SangramSawant Hello, what version of docker and docker-compose are you running?

rberg2 (Fri, 29 Dec 2017 20:38:59 GMT):
@SangramSawant I have "Docker version 17.09.1-ce" and "docker-compose version 1.17.1" installed and do not get that error here.

marc0o (Sat, 30 Dec 2017 14:42:32 GMT):
Has joined the channel.

marc0o (Sat, 30 Dec 2017 14:43:40 GMT):
Hello, can somebody help me with the hyperledger training material for sawtooth? I am running on windows and can't get the application built with npm

marc0o (Sat, 30 Dec 2017 14:43:41 GMT):
https://github.com/hyperledger/education/tree/master/LFS171x/sawtooth-material/sawtooth-tuna/client

marc0o (Sat, 30 Dec 2017 14:44:12 GMT):
can this be a problem with the module secp256k1?

marc0o (Sat, 30 Dec 2017 14:44:46 GMT):

Clipboard - 30. Dezember 2017 15:44

marc0o (Sat, 30 Dec 2017 14:47:25 GMT):
12 info lifecycle Sawtooth-tuna-chain-client@0.0.0~build: Failed to exec build script 13 verbose stack Error: Sawtooth-tuna-chain-client@0.0.0 build: `./node_modules/webpack/bin/webpack.js` 13 verbose stack Exit status 1 13 verbose stack at EventEmitter. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:280:16) 13 verbose stack at EventEmitter.emit (events.js:159:13) 13 verbose stack at ChildProcess. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:159:13) 13 verbose stack at maybeClose (internal/child_process.js:943:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5) 14 verbose pkgid Sawtooth-tuna-chain-client@0.0.0 15 verbose cwd c:\Programmierung\hyperledger\education\LFS171x\sawtooth-material\sawtooth-tuna\client 16 verbose Windows_NT 10.0.16299 17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build" 18 verbose node v9.3.0 19 verbose npm v5.5.1 20 error code ELIFECYCLE 21 error errno 1 22 error Sawtooth-tuna-chain-client@0.0.0 build: `./node_modules/webpack/bin/webpack.js` 22 error Exit status 1 23 error Failed at the Sawtooth-tuna-chain-client@0.0.0 build script. 23 error This is probably not a problem with npm. There is likely additional logging output above. 24 verbose exit [ 1, true ]

marc0o (Sat, 30 Dec 2017 14:51:10 GMT):
I know that the instruction say I need to use VirtualBox. but I wouldn't have expected that a frontend application built with javascript cannot run under windows

AndreyPospelov (Sat, 30 Dec 2017 15:30:30 GMT):
Has joined the channel.

DhavalShah (Sat, 30 Dec 2017 15:34:28 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=xmNTvXkXyqKbcXZ9R) @Mythul I am getting the same error. Someone please help?

AndreyPospelov (Sat, 30 Dec 2017 15:34:29 GMT):
@marc0o Look inside ./node_modules/webpack/bin/webpack.js which is run for build script. It'll not work in windows this way

AndreyPospelov (Sat, 30 Dec 2017 15:35:01 GMT):
try 'node.exe node_modules/webpack/bin/webpack.js' or similar

AndreyPospelov (Sat, 30 Dec 2017 15:42:44 GMT):
tuna app doesn't work with the current images on ubuntu. I'm getting: /// sawtooth-validator-default | [2017-12-30 15:29:18.644 DEBUG interconnect] ServerThread sending CLIENT_BATCH_SUBMIT_RESPONSE to b'8bcdaa32b0c9409f' /// sawtooth-rest-api-default | [2017-12-30 15:29:33.642 WARNING route_handlers] Timed out while waiting for validator response when trying to create a record. I have no idea what to do with this. I'm just following this course https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS171x+3T2017/courseware/9faeeb6df17c4d25a205c965473925e5/016a2cd813884e32a0c3056c472d39b1/?child=first

AndreyPospelov (Sat, 30 Dec 2017 15:47:05 GMT):
@SangramSawant Install the latest docker compose 1.18.0 and sawtooth-default.yaml will start to work

DhavalShah (Sat, 30 Dec 2017 15:53:48 GMT):
Hellow folks, this is pretty interesting issue I am facing. I am posting a batch with only one transaction to sawtooth. It processes the transaction and calls my handler and the handler exits sending an ok response. Yet, the sawtooth responds with status 202, INVALID transaction. Attached is the screenshot of the debug log on server, and help is highly appreciated. Thanks!

DhavalShah (Sat, 30 Dec 2017 15:54:38 GMT):

Capture.PNG

marc0o (Sat, 30 Dec 2017 16:53:47 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=QAwwuSkbetHAYMAJE) @AndreyPospelov thanks! ... omg this is really stupid xD .. shame on me. but I am wondering why this command is included in the package.json at all

marc0o (Sat, 30 Dec 2017 16:54:13 GMT):
npm noob :-D

marc0o (Sat, 30 Dec 2017 17:43:07 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=mev9emDGHqwYhFRLx) @DhavalShah I am facing the same problem I think

marc0o (Sat, 30 Dec 2017 17:49:36 GMT):
ok it seems to work now

marc0o (Sat, 30 Dec 2017 17:50:25 GMT):
don't know what it was

marc0o (Sat, 30 Dec 2017 17:50:56 GMT):
processor registered asset and this worked fine. also got the expected error message when registering asset twice

marc0o (Sat, 30 Dec 2017 17:51:53 GMT):
at first the validator always said it is inavlid and didn't add it to the block

marc0o (Sat, 30 Dec 2017 17:52:56 GMT):
now I followed these steps: 1. stopped docker-compose 2. stopped processor 3. started docker-compose 4. started processor

marc0o (Sat, 30 Dec 2017 17:53:00 GMT):
and then it worked

DhavalShah (Sat, 30 Dec 2017 17:54:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=XPYL8vmmpSrRxM3HE) @marc0o Wow! Can you please tell me how did you register asset with processor?

marc0o (Sat, 30 Dec 2017 17:55:21 GMT):
but it still seems to behave a bit strange

marc0o (Sat, 30 Dec 2017 17:55:30 GMT):

Clipboard - 30. Dezember 2017 18:55

marc0o (Sat, 30 Dec 2017 17:57:25 GMT):
ahh ok no, all right! these 2 were correctly invalidated

marc0o (Sat, 30 Dec 2017 17:57:36 GMT):
typed 3 times hyperledger

marc0o (Sat, 30 Dec 2017 17:58:27 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=o5E3bako9GYAHzfxL) @DhavalShah what exactly is your problem?

marc0o (Sat, 30 Dec 2017 17:59:16 GMT):
it should all be done automatically

DhavalShah (Sat, 30 Dec 2017 18:00:13 GMT):
I cannot seem to get it to work :(

marc0o (Sat, 30 Dec 2017 18:00:48 GMT):
you should at first start your docker setup

marc0o (Sat, 30 Dec 2017 18:00:53 GMT):
make sure it is all running and up

marc0o (Sat, 30 Dec 2017 18:01:12 GMT):
docker-compose -f sawtooth-default.yaml ps

marc0o (Sat, 30 Dec 2017 18:01:47 GMT):
when here is all fine you can start your processor

marc0o (Sat, 30 Dec 2017 18:02:05 GMT):
that should automatically be registered then

DhavalShah (Sat, 30 Dec 2017 18:02:10 GMT):
ok

nathanaw (Sat, 30 Dec 2017 18:02:13 GMT):
Has joined the channel.

DhavalShah (Sat, 30 Dec 2017 18:02:18 GMT):
I think it does get registered

DhavalShah (Sat, 30 Dec 2017 18:02:22 GMT):
wait

AndreyPospelov (Sat, 30 Dec 2017 18:02:32 GMT):
Where do you get this "processor", is it intkey-tp-python service?

DhavalShah (Sat, 30 Dec 2017 18:02:47 GMT):
no I wrote one in java

nathanaw (Sat, 30 Dec 2017 18:03:00 GMT):
hi all! I am trying to run the sawtooth samples (e.g., bond settlement) locally on my machine -- is this something possible?

AndreyPospelov (Sat, 30 Dec 2017 18:04:40 GMT):
@nathanaw Who knows. You should try. Tuna tracking example doesn't work for me at the moment.

DhavalShah (Sat, 30 Dec 2017 18:05:14 GMT):

Capture2.PNG

AndreyPospelov (Sat, 30 Dec 2017 18:06:54 GMT):
Is it ok if I have /// sawtooth-validator-default | [2017-12-30 17:52:25.652 DEBUG executor] no transaction processors registered for proc in my logs for sawtooth-validator-default service from sawtooth-default.yaml ?

DhavalShah (Sat, 30 Dec 2017 18:07:15 GMT):

Capture3.PNG

DhavalShah (Sat, 30 Dec 2017 18:07:47 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=2pgT7y5fWycXZ8wxG) @AndreyPospelov It means your TP is not running

AndreyPospelov (Sat, 30 Dec 2017 18:10:49 GMT):
I'm using such compose file https://raw.githubusercontent.com/hyperledger/education/master/LFS171x/sawtooth-material/sawtooth-default.yaml is transaction processor is in it?

AndreyPospelov (Sat, 30 Dec 2017 18:10:49 GMT):
I'm using such compose file https://raw.githubusercontent.com/hyperledger/education/master/LFS171x/sawtooth-material/sawtooth-default.yaml is transaction processor in it?

DhavalShah (Sat, 30 Dec 2017 18:21:57 GMT):
yes

DhavalShah (Sat, 30 Dec 2017 18:22:32 GMT):
no sorry

DhavalShah (Sat, 30 Dec 2017 18:24:03 GMT):
Sorry I think yes it is from sawtooth-default.yaml

DhavalShah (Sat, 30 Dec 2017 18:24:28 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=aHHtMvxoiCYyfaotP) @AndreyPospelov Yes it is from sawtooth-default.yaml

rambsuthar (Mon, 01 Jan 2018 06:23:49 GMT):
Has joined the channel.

tatsuya.iskw (Mon, 01 Jan 2018 09:04:36 GMT):
Has joined the channel.

BeeKay (Mon, 01 Jan 2018 14:10:09 GMT):
where can i find CLIENT_EVENTS_SUBSCRIBE_REQUEST? I am attempting to register to validator events, and am trying to use the snippet:

BeeKay (Mon, 01 Jan 2018 14:10:41 GMT):
msg = Message( correlation_id=correlation_id, message_type=CLIENT_EVENTS_SUBSCRIBE_REQUEST, content=request)

BeeKay (Mon, 01 Jan 2018 21:50:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=4Kpjoht8GCLhpQ6p9) Never mind...

elias_p (Tue, 02 Jan 2018 10:44:16 GMT):
Has joined the channel.

skbehera85 (Tue, 02 Jan 2018 12:24:38 GMT):
Hi Team,

skbehera85 (Tue, 02 Jan 2018 12:38:30 GMT):

Transction & type.png

skbehera85 (Tue, 02 Jan 2018 12:38:52 GMT):
Hi Team, I submitted the transactions with sawtooth batch submit & I can see the same in the logs. I verified the logs and i found that for the same transaction id & for the same type, its written twice. Can you please check the logs attached in the above thread and verify if that is correct. If yes, then can some explain me why it is so. (Its happening for all types) Thanks.

skbehera85 (Tue, 02 Jan 2018 12:38:52 GMT):
Hi Team, I submitted the transactions with sawtooth batch submit & I can see the same in the logs. I verified the logs and i found that for the same transaction id & for the same type, its written twice. Can you please check the logs attached in the below thread and verify if that is correct. If yes, then can some explain me why it is so. (Its happening for all types) Thanks.

skbehera85 (Tue, 02 Jan 2018 12:38:52 GMT):
Hi Team, I submitted the transactions with sawtooth batch submit & I can see the same in the logs. I verified the logs and i found that for the same transaction id & for the same type, its logging twice. Can you please check the logs attached in the below thread and verify if that is correct. If yes, then can some explain me why it is so. (Its happening for all types) Thanks.

skbehera85 (Tue, 02 Jan 2018 12:40:02 GMT):

transaction & type.png

amundson (Tue, 02 Jan 2018 14:09:17 GMT):
@skbehera85 this is expected. one is from the block publisher (the local validator's attempt to put together and publish a new block) and one is from the chain controller (which receives blocks over the network or from the local publisher and updates the chain)

matrisis (Tue, 02 Jan 2018 15:34:14 GMT):
Has joined the channel.

Mythul (Tue, 02 Jan 2018 15:37:12 GMT):
@DhavalShah hey, did you manage to get a transaction working with Java? can you share an example if yes?

Mythul (Tue, 02 Jan 2018 15:38:43 GMT):
does anybody have a working client example written in Java? to post a simple batch transaction? Many thanks in advance.

DhavalShah (Tue, 02 Jan 2018 17:30:21 GMT):
@Mythul No, I am still facing the problem, I wonder if it is an issue with the java SDK? Wish someone from Sawtooth would see this and help us out.

skbehera85 (Tue, 02 Jan 2018 17:31:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=A4ZAmPk5WxQk2XGvB) @amundson

skbehera85 (Tue, 02 Jan 2018 17:36:25 GMT):
@amundson , many thanks for your reply. So as per that the first one logged is from the block publisher and the second one is from the chain controller.

skbehera85 (Tue, 02 Jan 2018 17:36:25 GMT):
@amundson , many thanks for your reply. So as per that the first one logged is from the block publisher and the second one is from the chain controller.

skbehera85 (Tue, 02 Jan 2018 17:40:56 GMT):
@amundson , many thanks for your reply. So as per that the first one logged is from the block publisher and the second one is from the chain controller. Is there a way to add/enable timestamp to the transactions inside each blocks or it can only be checked in logs. (as per the attachment added in the previous post)

jsmitchell (Tue, 02 Jan 2018 18:38:12 GMT):
@skbehera85 you are looking at the handler log lines - if you set the trace header in the batches submitted, you will see log lines from the validator which show timestamped progress through the system

boydjohnson (Tue, 02 Jan 2018 20:33:34 GMT):
Hi @DhavalShah I understand that you wrote a custom transaction family with the Java sdk. From the logs you posted, the transaction processor does a GET and a SET, but the transaction that you expect to be valid is invalid. I notice there is "encoding" mentioned in the logs. I think on the latest versions of the sawtooth-validator "encoding" has been removed. I wouldn't expect that to be the problem, but maybe you could say more about your setup?

BeeKay (Wed, 03 Jan 2018 05:21:50 GMT):
In order to register for validator events, what should the URL be? I am attempting to register, the relevant code snippet is: ctx = zmq.Context() socket = ctx.socket(zmq.DEALER) socket.connect() ?

nilx (Wed, 03 Jan 2018 08:33:57 GMT):
Has joined the channel.

nilx (Wed, 03 Jan 2018 08:35:08 GMT):
Good day to you all, I have a fairly simple quesion: I am trying to get the Sawtooth Java SDK running, but the Java package sawtooth.sdk.protobuf is missing on GitHub so I cannot build it. Where can I find this package?

nilx (Wed, 03 Jan 2018 09:51:07 GMT):
Alright, I figured it out (what tipped me off was the GitHub lists ProtocolBuffers as separate language). However, I think documentation could be improved to make Java SDK easier to use...

matrisis (Wed, 03 Jan 2018 10:11:01 GMT):
Hi, is there a way i can download the https://provenance.sawtooth.me/ demo ? Thx.

DhavalShah (Wed, 03 Jan 2018 11:23:41 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=WLYsJS3ppMguPNXQ3) @boydjohnson Thank you for responding. This is PoC I am doing to prove that Sawtooth can be used with JAVA. My setup is end to end JAVA, which means my client is JAVA, and my TP is also in JAVA. I am using the TP on top of the JAVA SDK. I run it in debug mode and I can see the transaction passes through my TP and exits without any problem. Once the control goes back to the server, the server fails the transaction. Also it does not say why it is invalidating the transaction which has been considered valid by TP.

skbehera85 (Wed, 03 Jan 2018 11:56:29 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=tkwXEPvbWuuexTkBr) @jsmitchell Thanks for your reply. Can you please tell me how do i set the trace header in the batches submitted, can you please give me an example. Thanks.

Johnjam (Wed, 03 Jan 2018 12:02:04 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=MfLth2ZZxTnTjLiwY) @BeeKay it's the validator tcp url (tcp://validator:4004 for example if you run your code inside a docker container or tcp://localhost:4004 if you only expose the 4004 port from your validator container)

DhavalShah (Wed, 03 Jan 2018 12:26:09 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Tz6DC2NfWXekYvYnL) @nilx Hi! Are you able to run the JAVA SDK based Transaction Processor

Dan (Wed, 03 Jan 2018 14:18:58 GMT):
@matrisis there's a newer version of that provenance capability here: https://github.com/hyperledger/sawtooth-supply-chain

nilx (Wed, 03 Jan 2018 15:14:28 GMT):
@DhavalShah I am working on it, but for now I am implementing a Java Client that can actually create Transactions

matrisis (Wed, 03 Jan 2018 15:20:17 GMT):
@Dan Thank you.

boydjohnson (Wed, 03 Jan 2018 15:23:17 GMT):
@DhavalShah Can I see some logs of the TP along with the Validator logs?

shanb (Wed, 03 Jan 2018 15:43:48 GMT):
Hi

shanb (Wed, 03 Jan 2018 15:43:52 GMT):
I am now trying to register my TF but validator is regecting it. sudo sawset proposal create -url http://localhost:8080 --key /etc/sawtooth/keys/mykey.priv sawtooth.validator.transaction_families='[{"family": "-my-ledger", "version": "1.0"}]' I created key using command sawadm keygen mykey.priv

shanb (Wed, 03 Jan 2018 15:46:45 GMT):
validator log

shanb (Wed, 03 Jan 2018 15:46:48 GMT):
[05:00:35.817 [InterconnectThread-1] interconnect DEBUG] message round trip: TP_PROCESS_RESPONSE 0.005511283874511719 [05:00:35.910 [_PublisherThread] publisher DEBUG] Batch a97838d0ace31c1e5d50fb8484e589484aed67ba6e1d7042f6276d4ff7d5b24e5bdcf0d695fdbfbe2c1e884858d5671266e9ed8c7ff07f9b36d20063974c775e invalid, not added to block.

pschwarz (Wed, 03 Jan 2018 15:48:46 GMT):
What environment is that on?

shanb (Wed, 03 Jan 2018 15:52:32 GMT):
Ubuntu 16.04

boydjohnson (Wed, 03 Jan 2018 15:53:59 GMT):
@shanb In setting sawtooth.validator.transaction_families do you mean to set the family as "-my-ledger" and not "my-ledger". Is the extra hyphen intentional?

shanb (Wed, 03 Jan 2018 15:55:38 GMT):
sorry its my-ledger

jsmitchell (Wed, 03 Jan 2018 15:56:07 GMT):
@skbehera85 take a look at sawtooth-core/perf/sawtooth_perf/src/batch_submit.rs

jsmitchell (Wed, 03 Jan 2018 15:57:09 GMT):
that is compiled into the smallbank-workload command

jsmitchell (Wed, 03 Jan 2018 15:57:36 GMT):
this section sets the trace flag on a batch every five seconds or so:

jsmitchell (Wed, 03 Jan 2018 15:57:40 GMT):
``` loop { match receiver.lock().unwrap().recv().unwrap() { Some(mut batch_list) => { // Set the trace flag on a batch about once every 5 seconds if (time::Instant::now() - last_trace_time).as_secs() > 5 { batch_list.mut_batches()[0].trace = true; last_trace_time = time::Instant::now(); } ```

jsmitchell (Wed, 03 Jan 2018 15:57:56 GMT):
so, you should already be seeing lines with TRACE in them in the logs

jsmitchell (Wed, 03 Jan 2018 15:58:12 GMT):
if you want to increase the frequency of the tracing, you can modify this section of code

pschwarz (Wed, 03 Jan 2018 16:52:03 GMT):
@shanb how was the genesis block configured?

ibansalankit (Wed, 03 Jan 2018 17:01:36 GMT):
Has joined the channel.

ibansalankit (Wed, 03 Jan 2018 17:20:02 GMT):
Hi everyone, I was going through the sawtooth core developer guide from the following link https://sawtooth.hyperledger.org/docs/core/releases/latest/core_developers_guide/environment_setup.html#overview I realized after cloning that there is no tools folder in the repo. Any leads?

ibansalankit (Wed, 03 Jan 2018 17:20:02 GMT):
Hi everyone, I was going through the sawtooth core developer guide from the following link https://sawtooth.hyperledger.org/docs/core/releases/latest/core_developers_guide/environment_setup.html#overview I realized after cloning that there is no tools folder in the repo. Any leads?

shanb (Wed, 03 Jan 2018 17:20:53 GMT):
$ sawset genesis -k /etc/sawtooth/keys/mykey.priv $ sawadm genesis config-genesis.batch

shanb (Wed, 03 Jan 2018 17:21:15 GMT):
I configured with above commands

tkuhrt (Wed, 03 Jan 2018 18:25:49 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Tz6DC2NfWXekYvYnL) Hi, @nilx - The Sawtooth community would be happy to receive a pull request with any improvements you have to the documentation.

Dan (Wed, 03 Jan 2018 20:47:16 GMT):
@ibansalankit we dropped vagrant for core dev use recently. The updated docs should also drop that reference. (It's a bit confusing but the "latest release" will be different than master at any given point). If you are looking to build apps on top of sawtooth I recommend the App developer guide. If you are interested in working on the core internals then I recommend installing docker. All the build scripts encapsulate what the dev environment use to do.

amundson (Wed, 03 Jan 2018 21:05:19 GMT):
A 1.0.0rc6 release is coming soon

RahulBansal (Thu, 04 Jan 2018 07:36:09 GMT):
Has joined the channel.

rahulr92 (Thu, 04 Jan 2018 08:36:49 GMT):
Hi everyone, I am posting my question again since I have not had much luck over the last week. I have two validators in two separate ec2 instances. They are failing to talk to each other: [10:17:29.043 [ConnectionManager] gossip DEBUG] Endpoint has not completed authorization in 3600 seconds: tcp://ec2-xx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8800 How can I debug and fix this? If 'telnet ec2-xx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com 8800', I get "Unable to connect to remote host: Connection refused".

yoni (Thu, 04 Jan 2018 12:29:06 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=QPozqCQPrKRZhJxBs) @rahulr92 did you check the inbound rules for the AWS instances?

Dan (Thu, 04 Jan 2018 13:49:01 GMT):
@rahulr92 you could also check that you can reach the rest service from the node itself. If it is locally reachable then its possible the amazon network rules are an issue as @yoni suggests.

denis1990 (Thu, 04 Jan 2018 14:01:54 GMT):
Has joined the channel.

denis1990 (Thu, 04 Jan 2018 14:12:21 GMT):
Hi all, can anyone help ? I run sawtooth in docker on my local PC, all went good, and I won myself several times in XO game from tutorial. Then I made another node, also running in docker. How to make transaction go to another, new validator ?

ibansalankit (Thu, 04 Jan 2018 15:32:46 GMT):
@Dan I will install docker. Thank you for the information.

bassrehab (Thu, 04 Jan 2018 19:28:38 GMT):
Has joined the channel.

amundson (Thu, 04 Jan 2018 19:55:35 GMT):
Sawtooth 1.0.0rc6 release notes - https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-January/000149.html

rahulr92 (Thu, 04 Jan 2018 20:41:52 GMT):
@Dan @yoni Thanks. I am able to reach the rest endpoints from each of the ec2 instances (e.g.this works - 'sawtooth state list --url http://localhost:8080'). I have added a custom inbound security rule for the ec2 instances to accept any requests for 8800 in TCP protocol. My validator.toml has the following: # Advertised network endpoint URL. endpoint = "tcp://127.0.0.1:8800". Do I need to expose any other port or protocol in the inbound rules?

Asettouf (Thu, 04 Jan 2018 20:43:12 GMT):
Has joined the channel.

rahulr92 (Thu, 04 Jan 2018 20:45:38 GMT):
I also see that a process is listening to the port. $ sudo netstat -tulpn | grep :8800 tcp 0 0 127.0.0.1:8800 0.0.0.0:* LISTEN 991/python3

Asettouf (Thu, 04 Jan 2018 20:46:46 GMT):
Hello, possibly a silly question: I am trying to make a little app with sawtooth, and I noticed there is a `go` sdk. I could not find any documentation regarding the installation of the sdk so I guessed that if I wanted to use some processor I'd have to run ` go get -v github.com/hyperledger/sawtooth-core/sdk/go/src/sawtooth_sdk/processor`. Now I get ```

rahulr92 (Thu, 04 Jan 2018 20:47:09 GMT):
The process is the validator: $ cat /proc/991/cmdline | xargs -0 echo /usr/bin/python3 /usr/bin/sawtooth-validator

Asettouf (Thu, 04 Jan 2018 20:49:09 GMT):
Hello, I figured I would try the go sdk of sawtooth, having found no documentation I guessed that I would have to run the following if I want to use processors: `go get -v github.com/hyperledger/sawtooth-core/sdk/go/src/sawtooth_sdk/processor`. I simply get: ``` package sawtooth_sdk/protobuf/validator_pb2: unrecognized import path "sawtooth_sdk/protobuf/validator_pb2" (import path does not begin with hostname) .... ``` When looking at the source code, indeed there is this import mentioned, however no trace of it in the src folder. Does anyone have an idea on this? Thank you Hello, I figured I would try the go sdk of sawtooth, having found no documentation I guessed that I would have to run the following if I want to use processors: `go get -v github.com/hyperledger/sawtooth-core/sdk/go/src/sawtooth_sdk/processor`. I simply get: ``` package sawtooth_sdk/protobuf/validator_pb2: unrecognized import path "sawtooth_sdk/protobuf/validator_pb2" (import path does not begin with hostname) .... ``` When looking at the source code, indeed there is this import mentioned, however no trace of it in the src folder. Does anyone have an idea on this? Thank you

Asettouf (Thu, 04 Jan 2018 20:49:27 GMT):
Hello, I figured I would try the go sdk of sawtooth, having found no documentation I guessed that I would have to run the following if I want to use processors: `go get -v github.com/hyperledger/sawtooth-core/sdk/go/src/sawtooth_sdk/processor`. I simply get: ``` package sawtooth_sdk/protobuf/validator_pb2: unrecognized import path "sawtooth_sdk/protobuf/validator_pb2" (import path does not begin with hostname) .... ``` When looking at the source code, indeed there is this import mentioned, however no trace of it in the src folder. Does anyone have an idea on this? Thank you

Asettouf (Thu, 04 Jan 2018 21:37:37 GMT):
@rahulr92 Maybe you could try to fully disable the firewall first?

rahulr92 (Thu, 04 Jan 2018 21:38:29 GMT):
@Asettouf Thanks. Yes, I tried enabling all TCP ports in the inbound rules. I'm still getting the same issue.

Asettouf (Thu, 04 Jan 2018 21:45:48 GMT):
@rahulr92 What about the outbound rules?

rahulr92 (Thu, 04 Jan 2018 21:49:52 GMT):
As per https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html, "By default, security groups allow all outbound traffic."

Asettouf (Thu, 04 Jan 2018 22:07:23 GMT):
@rahulr92 Fair point, I was talking about the servers themselves (not knowing so much about amazon instances, I was wondering if the iptables are not set to some default)

pschwarz (Thu, 04 Jan 2018 22:08:52 GMT):
@Asettouf Those are generated from the proto files

Asettouf (Thu, 04 Jan 2018 22:11:46 GMT):
@pschwarz Oh I see, so I have to setup a vagrant VM to be able to use them right?

pschwarz (Thu, 04 Jan 2018 22:13:15 GMT):
Those are not provided in the core repo, but we will be deploying those to the proper location soon

pschwarz (Thu, 04 Jan 2018 22:13:24 GMT):
(need to create a story in JIRA for the task)

pschwarz (Thu, 04 Jan 2018 22:13:51 GMT):
You can build them using one of the provided docker images in the source repo

Asettouf (Thu, 04 Jan 2018 22:14:18 GMT):
@pschwarz Got it. Thanks a lot

pschwarz (Thu, 04 Jan 2018 22:14:35 GMT):
if you have it checked out, `./bin/build_all -l go`

rahulr92 (Thu, 04 Jan 2018 23:22:37 GMT):
@Asettouf I will double check the iptables to see if there is anything wrong. Thanks.

rahulr92 (Fri, 05 Jan 2018 00:07:10 GMT):
In validator.toml, I see the following documentation: # The type of peering approach the validator should take. Choices are 'static' # which only attempts to peer with candidates provided with the peers option, # and 'dynamic' which will do topology buildouts. If 'dynamic' is provided, # any static peers will be processed first, prior to the topology buildout # starting. peering = "static" # Uri(s) to connect to in order to initially connect to the validator network, # in the format tcp://hostname:port. This is not needed in static peering mode # and defaults to None. seeds = [] I am confused by the statement above seeds - "This is not needed in static peering mode". In the static mode, how will the validator know about the validator networkif not through the seeds config?

Johnjam (Fri, 05 Jan 2018 08:14:49 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=JPbSrLEFGNahPtY3B) @rahulr92 In static mode you can use the "peers" parameter to define your peer list. For instance, if you have 2 validators (validator1 and validator2) and you define : peers = ["tcp://validator2:8800"] in your validator1 config, then both of your validators will know each other.

larohndale (Fri, 05 Jan 2018 08:59:49 GMT):
Has joined the channel.

AnilOner (Fri, 05 Jan 2018 12:05:32 GMT):
Has joined the channel.

rahulr92 (Sat, 06 Jan 2018 04:13:00 GMT):
@Johnjam Thanks. Got it. I've made the seeds list empty. Is there any working validator.toml file for validators that are statically peered that I can refer to?

akuma921 (Sat, 06 Jan 2018 12:06:28 GMT):
Has joined the channel.

akuma921 (Sat, 06 Jan 2018 12:07:30 GMT):
Hi any document to make a quick multi machine sawtooth network

akuma921 (Sat, 06 Jan 2018 12:07:38 GMT):
I need it to show a quick POC

akuma921 (Sat, 06 Jan 2018 13:12:28 GMT):
Also can somebody share any document ..which can help me adding a new validator on an existing running sawtooth network

akuma921 (Sat, 06 Jan 2018 13:12:42 GMT):
I am able to setup one validator using docker...

Rishabh-Sharma (Sun, 07 Jan 2018 06:03:06 GMT):
Has joined the channel.

VarshaRao (Sun, 07 Jan 2018 14:02:17 GMT):
Has joined the channel.

yoni (Sun, 07 Jan 2018 14:55:13 GMT):
Hi, roughly what is the amount of data that is recommended to store on one address? i never know when to split data between multiple addresses with different suffix or to store all the data in one address. in the track and trade example i see that data is split after an array of 256 entries is full, not sure if this should be used as guideline

zac (Sun, 07 Jan 2018 23:08:58 GMT):
There are a couple of things to consider when deciding how to store your data

zac (Sun, 07 Jan 2018 23:09:32 GMT):
The main upside to putting everything at one address is that it simplifies look up

zac (Sun, 07 Jan 2018 23:09:37 GMT):
But there are some downsides

zac (Sun, 07 Jan 2018 23:10:00 GMT):
One is you now need to read/write a lot of data anytime you want to make a modification

zac (Sun, 07 Jan 2018 23:10:23 GMT):
Say you've got an array with 100 items, and you want to add one

zac (Sun, 07 Jan 2018 23:11:01 GMT):
If it's at one address, you have to read the whole array, make it an array of 101 items, and then write the whole thing back to the address

zac (Sun, 07 Jan 2018 23:11:33 GMT):
If the array is split into multiple addresses, you can ignore most of it

zac (Sun, 07 Jan 2018 23:11:45 GMT):
The other consideration is parallelism

zac (Sun, 07 Jan 2018 23:11:45 GMT):
The other downside is parallelism

zac (Sun, 07 Jan 2018 23:13:23 GMT):
If multiple transactions are trying to write to the same address, they cannot be executed in parallel, they must be done sequentially

zac (Sun, 07 Jan 2018 23:15:06 GMT):
If you have data that is going to change frequently, you could see a substantial performance increase by ensuring it is stored in separate addresses without collisions

zac (Sun, 07 Jan 2018 23:18:03 GMT):
Anyway, I don't think there is definitively correct answer to that question yet. In Track and Trade (now called Sawtooth Supply Chain), the Records are highly split up. In Sawtooth Marketplace there wasn't as much opportunity to do that, and it's just one resource per address.

nishantbhatnagar (Mon, 08 Jan 2018 04:58:08 GMT):
Has joined the channel.

nishantbhatnagar (Mon, 08 Jan 2018 04:59:47 GMT):
Hello Gents. I am brand new to Hyperledger and Blockchain in general. I am facing some difficulties in the installing the sawtooth framework on my system. Is this the right thread to post for such a query?

akuma921 (Mon, 08 Jan 2018 05:40:50 GMT):
guys need help in connecting multiple peers on different machine on a sawtooth network

yoni (Mon, 08 Jan 2018 06:43:28 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=DmWN4s2YhSKtx8XHk) @zac thanks

Johnjam (Mon, 08 Jan 2018 07:09:49 GMT):
Hi everyone, I'm following the "Using sawtooth with the SGX Implementation of PoET" and when I attempt to create a poet_genesis.batch, I got this error : File "/usr/lib/python3/dist-packages/sawtooth_poet_sgx/poet_enclave_sgx/poet_enclave.py", line 567, in _check_verification_report public_key.verify( AttributeError: '_RSAPublicKey' object has no attribute 'verify' I already have an Intel SPID with a certificate generated with their tutorial (https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using) but, their last openssl call (verify precisely) give me an error. I think this verify function is related to my prob, no ? I tried to run all their openssl cmd on a windows OS, same errors...

Johnjam (Mon, 08 Jan 2018 07:09:49 GMT):
Hi everyone, I'm following the "Using sawtooth with the SGX Implementation of PoET" and when I attempt to create a poet_genesis.batch, I got this error : File "/usr/lib/python3/dist-packages/sawtooth_poet_sgx/poet_enclave_sgx/poet_enclave.py", line 567, in _check_verification_report public_key.verify( AttributeError: '_RSAPublicKey' object has no attribute 'verify' I already have an Intel SPID with a certificate generated with their tutorial (https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using) and I'm in Linked licence.

Johnjam (Mon, 08 Jan 2018 07:09:49 GMT):
Hi everyone, I'm following the "Using sawtooth with the SGX Implementation of PoET" and when I attempt to create a poet_genesis.batch, I got this error : File "/usr/lib/python3/dist-packages/sawtooth_poet_sgx/poet_enclave_sgx/poet_enclave.py", line 567, in _check_verification_report public_key.verify( AttributeError: '_RSAPublicKey' object has no attribute 'verify' I already have an Intel SPID with a certificate generated with their tutorial (https://software.intel.com/en-us/articles/how-to-create-self-signed-certificates-for-use-with-intel-sgx-remote-attestation-using) and I'm in Linkable licence.

shahdhruv 2 (Mon, 08 Jan 2018 10:42:57 GMT):
@akuma921 I also want to know same if any documentation or link is available to set cluster on multiple physical machines

denis1990 (Mon, 08 Jan 2018 15:11:46 GMT):
Hi all, can someone help with that error Endpoint has not completed authorization in 40 seconds ?

zac (Mon, 08 Jan 2018 17:32:22 GMT):
This is a fine place to post setup questions @nishantbhatnagar. What is it you are having trouble with?

Asettouf (Mon, 08 Jan 2018 17:53:47 GMT):
Hello, I would be interested in doing https://jira.hyperledger.org/browse/STL-238 and @adamludvik doesn't appear to be active on this one... Is it an issue if I start on it?

pschwarz (Mon, 08 Jan 2018 20:00:04 GMT):
That task is probably out-of-date, in terms of it's description. It should depend on https://jira.hyperledger.org/browse/STL-974

milapbhojak (Mon, 08 Jan 2018 20:31:08 GMT):
Has joined the channel.

Dan (Mon, 08 Jan 2018 21:35:35 GMT):
@rahulr92 you made reference to 127.0.0.1 that is your loopback address. i.e. it is not a public IP address. In your config file you will want to advertise your publicly routable IP address. Also check your port specifications and make sure they are consistent.

Dan (Mon, 08 Jan 2018 21:55:00 GMT):
@akuma921 @shahdhruv 2 Short version: create a genesis block on one validator and then update 2 lines in the other validators config files {1. endpoint: advertise the IP:Port of that machine and 2. seeds: URL of node with the genesis block. You can look at the docker compose scripts that we use for integration testing. This script spins up a few validator nodes, each with its own configuration. https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_liveness.yaml That compose file is meant to be launched by a test tool (bin/run_docker_test) that sets environment variables. Don't try to run docker-compose on it directly. The scripts use these config files. https://github.com/hyperledger/sawtooth-core/tree/master/integration/sawtooth_integration/tests/poet_liveness_data If you compare those config files you'll see the only things that are the two settings I mentioned above. ```$ diff validator-0.toml validator-1.toml 41c41 < endpoint = "tcp://validator-0:8800" --- > endpoint = "tcp://validator-1:8800" 46c46 < seeds = [] --- > seeds = ["tcp://validator-0:8800"] ```

Dan (Mon, 08 Jan 2018 22:00:10 GMT):
Note you must advertise a routable hostname or IP. If you have a LAN that all the machines are directly connected to that's pretty easy (e.g. 10.0.0.1, 10.0.0.2 or however you've set up your lan.) If you are on amazon or some other environment you need to make sure you have routable IP addresses between those machines. If you are connecting between multiple companies you need to make sure the firewalls allow the IP and Ports you have selected. If you are running multiple docker containers on a single machine follow the patterns in the compose file above.

Dan (Mon, 08 Jan 2018 22:06:52 GMT):
@yoni @zac good conversation on data design. you could just about paste that into a HL blog post with no additional writing and probably provide some good guidance to people of the future :robot: . :)

zac (Mon, 08 Jan 2018 22:07:33 GMT):
Not a bad idea

zac (Mon, 08 Jan 2018 22:07:45 GMT):
How does one paste a thing into an HL blog post?

zac (Mon, 08 Jan 2018 22:07:53 GMT):
I didn't even know there was a Hyperledger blog

drozd (Mon, 08 Jan 2018 23:42:06 GMT):
*Proposal for new `/status` REST API endpoint* _Proposal_ Add a new `/status` endpoint to the Sawtooth REST API. This endpoint will return a JSON object containing the validator's public network endpoint (i.e., the address specified with the validator's `--endpoint` CLI argument): ``` { "endpoint": } ``` Because the endpoint returns a JSON object, further validator information can be added later without compromising backward compatibility. _Motivation_ Suppose you wish to construct a peer graph of all the validators on a network. At present it is possible to query the `/peers` endpoint of each validator's REST API, which returns the list of the network endpoints of the validator's peers, but it is not possible to get the validator's own network endpoint. It is thus possible to say that, for instance, the validator whose network endpoint is `tcp://validator-2:8800` is peered with the validator whose REST API's address is `http://rest-api-1:8008`, and that the validator whose network endpoint is `tcp://validator-1:8800` is peered with the validator whose REST API's address is `http://rest-api-2:8008`. However, because it is not generally possible to associate a validator's network endpoint with its REST API's address, it's not possible to say that these two peerings are really the same peering. The `/status` endpoint would solve this issue.

drozd (Mon, 08 Jan 2018 23:42:52 GMT):
@Dan @pschwarz @amundson @zac @grkvlt

akaum (Mon, 08 Jan 2018 23:46:09 GMT):
Has joined the channel.

shanb (Tue, 09 Jan 2018 00:04:58 GMT):
Hi, I facing exception "java.net.ProtocolException: Unexpected status line" every 2nd call to API /batches or /state. Anybody facing same issue.

rahulr92 (Tue, 09 Jan 2018 00:10:47 GMT):
@Dan Thanks. I tried changing the advertised network to use the public IP address. However I am still getting "Endpoint has not completed authorization in XX seconds". The bind attribute should still use localhost (127.0.0.1) right? bind = [ "network:tcp://127.0.0.1:8800", "component:tcp://127.0.0.1:4004" ]

Dan (Tue, 09 Jan 2018 00:30:01 GMT):
I can't find where we have this in the docs so either this is poorly document or it moved. :( Bind is setting up listeners for those two capabilities. `network` for us means the peer-to-peer network. That needs to listen on a network interface that can talk outside the machine. `component` means one of the helper processes that will attach to the validator locally, like a Transaction Processor or the Rest API.

Dan (Tue, 09 Jan 2018 00:32:13 GMT):
On a physical node I'm running right now I use my wireless NIC for the network bind and the loopback for the components: ```bind = [ "network:tcp://wlp1s0:8800", "component:tcp://127.0.0.1:4004" ] ```

Dan (Tue, 09 Jan 2018 00:37:01 GMT):
This node sits behind a firewall and NAT'ing so in the endpoint I have the public IP address of this network. On the firewall I've configured port mapping to send inbound traffic at that public IP and port to the internal IP and port of this particular node. (Note you don't have to do that kind of port mapping if you are just setting up a vlan on some cloud hosting or something like that and all the nodes can see each other).

Dan (Tue, 09 Jan 2018 00:39:50 GMT):
@drozd could you copy that proposal to the mail list?

rahulr92 (Tue, 09 Jan 2018 00:48:37 GMT):
@Dan Thank you so much. I made that change and also switched from Public IP to the Private IP in AWS. Now my validators are able to talk and are in sync! :)

rahulr92 (Tue, 09 Jan 2018 00:56:27 GMT):
I believe the issue was that my ec2 instances where inside a VPC and hence needed to be accessed through their private IPs.

lightning18 (Tue, 09 Jan 2018 02:39:43 GMT):
Has joined the channel.

zac (Tue, 09 Jan 2018 02:45:14 GMT):
@drozd @Dan Any reason not to combine `/status` with `/peers` into one endpoint that provides some config info for the validator?

zac (Tue, 09 Jan 2018 02:45:50 GMT):
Also, to avoid confusion with `/batch_statuses` I would prefer to call this endpoint `/info` or something similar (which is more accurate anyway)

zac (Tue, 09 Jan 2018 02:45:50 GMT):
Also, to avoid confusion with `/batch_statuses` I would prefer to call this endpoint `/info` or something similar (which seems more accurate to me anyway)

zac (Tue, 09 Jan 2018 02:47:16 GMT):
It's also not unheard of to have a root `/` route that provides some info. Typically that is more focused on API usage though (available routes for example), so I'm not sure it works exactly for this usage.

amundson (Tue, 09 Jan 2018 03:19:12 GMT):
@zac /peers should have gone into /status, IMO, but we shouldn't remove endpoints now. we could still have /status contains peers though to avoid two calls. /status is accurate, as we want error conditions/states reported there eventually; /info and / aren't great alternatives.

zac (Tue, 09 Jan 2018 03:47:43 GMT):
leaving `/peers` for backward compatibility is reasonable

zac (Tue, 09 Jan 2018 03:48:05 GMT):
`/status` would not be my choice for errors + peers + endpoint either

zac (Tue, 09 Jan 2018 03:48:17 GMT):
that still seems like `/info` to me

zac (Tue, 09 Jan 2018 03:48:43 GMT):
but ¯\__(ツ)__/¯

alexandra_g (Tue, 09 Jan 2018 05:48:56 GMT):
Hi All, I had a quick question regarding in the case that a batch was rejected due to an invalid transaction. What happens with the other valid transactions? Is there documentation or explanation of how those transactions are repackaged into another batch and sent to validator? Thank you in advance!

yoni (Tue, 09 Jan 2018 06:46:07 GMT):
"All transactions within a batch are committed to state together or not at all", the transactions won't be repackaged unless you do so explicitly. i usually just put one transaction in each batch unless there is dependency between them

yoni (Tue, 09 Jan 2018 06:49:22 GMT):
followed this documentation for when to use more than one transaction in a batch - https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/architecture/transactions_and_batches.html#why-batches

Jayc2 (Tue, 09 Jan 2018 08:40:16 GMT):
Has joined the channel.

OlliKasari (Tue, 09 Jan 2018 12:44:11 GMT):
Has joined the channel.

OlliKasari (Tue, 09 Jan 2018 12:44:51 GMT):
Hi! How easy/complicated is it in Sawtooth to expand peer network with additional nodes?

Johnjam (Tue, 09 Jan 2018 14:25:39 GMT):
Hi everyone, I still got this error in parallel scheduler configuration when sending batches via the rest_api : [2018-01-09 15:18:30.460 ERROR future] An unhandled error occurred while running future callback Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_validator/networking/future.py", line 79, in run_callback self._callback_func(self._request, self._result) File "/usr/lib/python3/dist-packages/sawtooth_validator/execution/executor.py", line 132, in _future_done_callback data=data) File "/usr/lib/python3/dist-packages/sawtooth_validator/execution/scheduler_parallel.py", line 652, in set_transaction_execution_result self._set_least_batch_id(txn_signature=txn_signature) File "/usr/lib/python3/dist-packages/sawtooth_validator/execution/scheduler_parallel.py", line 616, in _set_least_batch_id batch = self._batches_by_txn_id[txn_signature] KeyError: 'ff94f2fed5f2a19397f0a5c63c05d3c15bc6496c7310bf9296afaf3be05fc6d45d5d9393215cebdf5bbcd982eccf74d85a91d2f4127d8f807115c6ca46eb70d2' Is this an error I could avoid ? Thanks

zac (Tue, 09 Jan 2018 16:00:36 GMT):
@alexandra_g A batch is the atomic unit of change in Sawtooth. Meaning that either the entire batch is committed, or _none_ of the batch is committed. In many blockchains the transaction is the atomic unit of change, but what if you have some transactions that you only want to be dependent on others? That batch gives us a mechanism to enforce that inter-transaction dependency.

zac (Tue, 09 Jan 2018 16:00:36 GMT):
@alexandra_g A batch is the atomic unit of change in Sawtooth. Meaning that either the entire batch is committed, or _none_ of the batch is committed. In many blockchains the transaction is the atomic unit of change, but what if you want to have some transactions be dependent on others? The batch gives us a mechanism to enforce that inter-transaction dependency.

zac (Tue, 09 Jan 2018 16:01:32 GMT):
So, in answer to your question, those other transactions are thrown out. They would have to be resubmitted in a new batch.

zac (Tue, 09 Jan 2018 16:02:26 GMT):
However, there is no reason you can't submit multiple batches with just transaction in each. So if you have transactions that _aren't_ dependent on each other, you should just split them off into their own batches.

zac (Tue, 09 Jan 2018 16:02:26 GMT):
However, there is no reason you can't submit multiple batches with just one transaction in each. So if you have transactions that _aren't_ dependent on each other, you should just split them off into their own batches.

zac (Tue, 09 Jan 2018 16:04:33 GMT):
For further reading, the link provided by @yoni is a good one.

aiur (Tue, 09 Jan 2018 18:28:42 GMT):
Has joined the channel.

aiur (Tue, 09 Jan 2018 18:29:38 GMT):
Hi all, is sawtooth the right tools for create a private blockchain to store information?

cchalc (Tue, 09 Jan 2018 20:46:13 GMT):
Has joined the channel.

zac (Tue, 09 Jan 2018 21:33:22 GMT):
define "private blockchain"

zac (Tue, 09 Jan 2018 21:33:51 GMT):
the answer is either "yes", or "that is a nonsense thing you just said"

alexandra_g (Tue, 09 Jan 2018 21:55:33 GMT):
thanks @zac, super helpful answer! Just to address the efficiency with batching, doesn't having single tx per batch less efficient or is it thought that use cases using Sawtooth would have transactions dependent on one another making batching an attractive feature?

zac (Tue, 09 Jan 2018 21:58:22 GMT):
Well, you can submit multiple Batches in one HTTP or ZMQ submission. So it's a question of sending 1 submission, with 10 batches, with 1 transaction per batch, or sending 1 submission with 1 batch, with 10 transactions.

zac (Tue, 09 Jan 2018 21:58:37 GMT):
I don't know of any reason why one would be more or less efficient than the other.

amundson (Tue, 09 Jan 2018 22:04:14 GMT):
It is more efficient to bundle multiple transactions into a batch. However, you shouldn't necessarily do this artificially; you should do it because it makes sense from an application perspective that they be atomic. In integration use cases, if you are bundling high counts of transactions-per-batch (100+), you would likely see a substantial throughput increase in transactions-per-second; but you have to be able to then handle what happens if one of the transactions fail, which is rather complex from a client perspective.

zac (Tue, 09 Jan 2018 22:15:22 GMT):
Is there a simple explanation for why 100 transactions in one batch would be processed faster than those same transactions in 100 batches? Or is there no way to explain it without going in-depth into the underlying architecture?

zac (Tue, 09 Jan 2018 23:06:23 GMT):
in which case I would be satisfied with the explanation: _"because"_

zac (Tue, 09 Jan 2018 23:06:23 GMT):
in which case I would be satisfied with the explanation: _"Because."_

KevinTorkelson (Wed, 10 Jan 2018 02:02:46 GMT):
Has joined the channel.

OlliKasari (Wed, 10 Jan 2018 08:18:19 GMT):
I'm getting server error when creating assets at https://mktplace.sawtooth.me demo

matrisis (Wed, 10 Jan 2018 12:56:48 GMT):
Has left the channel.

aiur (Wed, 10 Jan 2018 13:07:07 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=EdG6vuifdXyCdLWCK) @zac Thanks you for your answer. I want to store data in some nodes, but data are not publically acessible outside of nodes itself.

davod (Wed, 10 Jan 2018 13:15:54 GMT):
Has joined the channel.

davod (Wed, 10 Jan 2018 13:41:42 GMT):
Hi all, I'm wondering about the scalability limit. I tried with 10000 intkey transactions (set new entries in the state) and the total folder size of /var/lib/sawtooth is approximately 128 MiB. Is there a way to compress the BlockStore database or save less information ?

skbehera85 (Wed, 10 Jan 2018 14:25:18 GMT):
HI, I am trying to connect 2 validators on 2 different servers, its not connecting. I have attached my validators below. please let me know if am wrong:- validator-1: image: hyperledger/sawtooth-validator:1.0 container_name: sawtooth-validator-1-default expose: - 4004 ports: - "4004:4004" # start the validator-1 with an empty genesis batch entrypoint: "bash -c \"\ sawadm keygen && \ sawtooth keygen my_key && \ sawset genesis -k /root/.sawtooth/keys/my_key.priv && \ sawadm genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator-1:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \""

skbehera85 (Wed, 10 Jan 2018 14:25:18 GMT):
HI, I am trying to connect 2 validators on 2 different servers, its not connecting. I have attached my validators below. please let me know if am wrong:- validator-1: image: hyperledger/sawtooth-validator:1.0 container_name: sawtooth-validator-1-default expose: - 4004 ports: - "4004:4004" # start the validator-1 with an empty genesis batch entrypoint: "bash -c \"\ sawadm keygen && \ sawtooth keygen my_key && \ sawset genesis -k /root/.sawtooth/keys/my_key.priv && \ sawadm genesis config-genesis.batch && \ sawtooth-validator -vv \ --endpoint tcp://validator-1:8800 \ --bind component:tcp://eth0:4004 \ --bind network:tcp://eth0:8800 \"" in another yaml :- validator-2: image: hyperledger/sawtooth-validator:1.0 container_name: sawtooth-validator-2-default expose: - 4005 ports: - "4005:4005" # start the validator with an empty genesis batch entrypoint: "bash -c \"\ sawadm keygen && \ sawtooth keygen my_key && \ sawtooth-validator -vv \ --endpoint tcp://validator-2:8800 \ --bind component:tcp://eth0:4005 \ --bind network:tcp://eth0:8800 \ --peers tcp://ip - validator - 1:8800 \""

zac (Wed, 10 Jan 2018 15:37:57 GMT):
@aiur Why not just use a database?

aiur (Wed, 10 Jan 2018 15:40:42 GMT):
Because I want to have a distributed system

aiur (Wed, 10 Jan 2018 15:40:53 GMT):
To have better security

aiur (Wed, 10 Jan 2018 15:41:00 GMT):
is that wrong?

zac (Wed, 10 Jan 2018 15:45:48 GMT):
In short: probably yes.

zac (Wed, 10 Jan 2018 15:46:16 GMT):
I feel like we're just tossing around buzzwords a bit: "distributed", "security"

zac (Wed, 10 Jan 2018 15:46:53 GMT):
Let's get specific a bit:

zac (Wed, 10 Jan 2018 15:48:07 GMT):
Blockchains have a fairly specific use, which is enforcing trust between parties who don't trust each other but need to agree on some data. Bitcoin is the most visible example. Everyone has a copy of everyone else's bitcoin transactions, and it is very easy to verify whether or not a new copy is valid.

zac (Wed, 10 Jan 2018 15:48:25 GMT):
This means everyone can check everyone else's work, and throw out anyone trying to fudge the data.

zac (Wed, 10 Jan 2018 15:49:14 GMT):
But say instead of bitcoin, you are storing your personal data, and instead of "everyone" having it, it's just you.

zac (Wed, 10 Jan 2018 15:50:26 GMT):
You've layered on a ton of boilerplate and work for your CPU that is going into making sure you haven't tried to commit fraud on yourself.

zac (Wed, 10 Jan 2018 15:51:04 GMT):
You could distribute it by making backups. And you could secure it by encrypting it.

zac (Wed, 10 Jan 2018 15:51:30 GMT):
I'm not sure what else a blockchain would do for you in this use case.

zac (Wed, 10 Jan 2018 15:51:37 GMT):
Unless you had something else in mind?

aiur (Wed, 10 Jan 2018 15:53:04 GMT):
I don't want to trust my own infrastructure, So if someone hack one of my server I can reject data tampering. I could do the same using mongodb, but with more work, imho

zac (Wed, 10 Jan 2018 15:54:14 GMT):
I still think some sort of encryption scheme is probably the better approach if you are worried about being hacked.

zac (Wed, 10 Jan 2018 15:54:52 GMT):
Or you could store hashes of the data or something to check whether or not it's been modified.

zac (Wed, 10 Jan 2018 15:55:10 GMT):
There are probably really robust solutions out there specifically for this.

zac (Wed, 10 Jan 2018 15:55:33 GMT):
That said, if you are determined to use Sawtooth to store private data, yes you absolutely could do it.

zac (Wed, 10 Jan 2018 15:56:02 GMT):
It's a general-purpose platform though, so you'd have to do a fair amount of setup.

zac (Wed, 10 Jan 2018 15:56:18 GMT):
Build your own data storage app essentially.

aiur (Wed, 10 Jan 2018 15:58:53 GMT):
Another point is the ability to run smart contract.

aiur (Wed, 10 Jan 2018 15:59:05 GMT):
Should I start with fabric or sawtooth?

aiur (Wed, 10 Jan 2018 15:59:29 GMT):
Thanks for your help, I'll reflect about

zac (Wed, 10 Jan 2018 15:59:40 GMT):
Well, keep in mind a "smart contract" is just "run this code when this condition happens"

zac (Wed, 10 Jan 2018 15:59:48 GMT):
You still have to right all that code

zac (Wed, 10 Jan 2018 16:00:13 GMT):
You could write MongoDB hooks that do the same thing.

zac (Wed, 10 Jan 2018 16:00:45 GMT):
I would start with Sawtooth

zac (Wed, 10 Jan 2018 16:00:53 GMT):
I'm a maintainer though so I'm biased

zac (Wed, 10 Jan 2018 16:03:10 GMT):
With Sawtooth you get a highly modular, data agnostic, platform that is entirely customizable, support for development in a wide variety of languages, and the PoET consensus mechanism (though for your use, the consensus mechanism is probably trivial)

zac (Wed, 10 Jan 2018 16:04:42 GMT):
I have heard others say that it is easier to develop for Sawtooth. Our REST API and multiple SDKs provide a lot of support.

zac (Wed, 10 Jan 2018 16:04:42 GMT):
I have heard others say that it is easier to develop for Sawtooth. Our REST API and multiple SDKs provide a lot of support, and I would argue the architecture is easier to work with in general.

zac (Wed, 10 Jan 2018 16:06:40 GMT):
But Fabric does have some nifty tools available like Composer. Maybe there is already a "store my data" app built by someone? I'd had over to #fabric and see what they think.

aiur (Wed, 10 Jan 2018 16:09:41 GMT):
Thanks you a lot :)

zac (Wed, 10 Jan 2018 16:12:26 GMT):
Of course

sealthedeal (Wed, 10 Jan 2018 16:21:58 GMT):
Has joined the channel.

sealthedeal (Wed, 10 Jan 2018 16:22:16 GMT):
Hey, I've been deeply interested in Hyperledger Sawtooth lately, but when I was recently asked to explain Proof of Elapsed Time, I wasn't able to explain in detail how it scales comparably to PoW. I've tried to youtube it, but there's little to no resources I've been able to locate that expand on the subject other than "Pluggable election strategy set to a permissioned, voting-based strategy by default that scales well and it byzantine fault tolerant. However, finality may be delayed due to forks that must be resolved."

amundson (Wed, 10 Jan 2018 16:36:33 GMT):
@sealthedeal - have you seen this? https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html

sealthedeal (Wed, 10 Jan 2018 17:26:25 GMT):
@amundson reading over it now. Thank you.

Dan (Wed, 10 Jan 2018 17:49:44 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=ge6L2hq9rqDtfuzdp) @zac I think there's 99 extra signature verifications if its 1:1. Probably some minor network overhead and internal object management too. Mostly though I think its the signature verifications.

zac (Wed, 10 Jan 2018 18:37:58 GMT):
Ah yes. That makes sense. Damn signatures.

amundson (Wed, 10 Jan 2018 18:43:53 GMT):
no, it's not signatures, it's more about the network traffic and internal indexing

amundson (Wed, 10 Jan 2018 18:44:08 GMT):
it _used_ to be signatures, but I think it's not anymore

Asettouf (Wed, 10 Jan 2018 21:09:28 GMT):
@zac Regarding the 100 transactions, I guess it's kind of the same as for any network transaction, HTTP for example adds metadata to one request, so if you upload 100 files, you get a 100 headers generated, if you submit one archive with the 100 files, you have only one header, thus reducing the network overhead. Given that most transactions, AFAIK comes with metadata (for instance the length of the bytes stream) I would imagine that any transaction made with as less requests as possible would be faster

Dan (Wed, 10 Jan 2018 21:10:03 GMT):
Speaking of signatures... a python library we've been using for wif support is being EOL. I'd like to drop support for storing private keys in WIF format. If you are using WIF and can't / don't want to change to HEX please speak up.

zac (Wed, 10 Jan 2018 21:22:14 GMT):
@amundson So for peer-to-peer ZMQ communication those 100 batches would be sent out separately? Not in a single message like when they were submitted?

SevanBoyajian (Wed, 10 Jan 2018 23:54:44 GMT):
Has joined the channel.

rajivgandhi2010 (Thu, 11 Jan 2018 10:34:18 GMT):
Has joined the channel.

rajivgandhi2010 (Thu, 11 Jan 2018 10:34:36 GMT):
Hello All

rajivgandhi2010 (Thu, 11 Jan 2018 10:34:43 GMT):
Am new to Sawtooth

rajivgandhi2010 (Thu, 11 Jan 2018 10:35:18 GMT):
anyone help me to create sample application using sawtooth?

rajivgandhi2010 (Thu, 11 Jan 2018 10:36:10 GMT):
I tried one tutorial

rajivgandhi2010 (Thu, 11 Jan 2018 10:36:30 GMT):
but, dont know how to write an application

rajivgandhi2010 (Thu, 11 Jan 2018 10:36:37 GMT):
pls help me on this

Dan (Thu, 11 Jan 2018 14:23:22 GMT):
which tutorial did you try?

mfford (Thu, 11 Jan 2018 14:26:57 GMT):
User User_1 added by mfford.

ricardor (Thu, 11 Jan 2018 14:48:06 GMT):
Has joined the channel.

ricardor (Thu, 11 Jan 2018 14:51:21 GMT):
Hi everyone it's great to be here, I'm searching information about how Sawtooth implement the data privacy, can help me? I need check first in high level, but I need evaluate later in low level

Dan (Thu, 11 Jan 2018 15:28:03 GMT):
You can address privacy in a few ways. You can spawn separate networks. You can encrypt payloads (but this restricts transaction verification, i.e. you commit receipts you don't verify state transitions), finally we have a few research projects in progress using trusted execution and/or ZK approaches.

JeremyMet (Thu, 11 Jan 2018 15:45:50 GMT):
Has joined the channel.

ricardor (Thu, 11 Jan 2018 15:53:08 GMT):
Hi @Dan thank you for answer. Yes one of the more attractive feature is the implementation of NIZK, can you give me more some links where I can see this?

ricardor (Thu, 11 Jan 2018 15:54:16 GMT):
My main uneasiness is choice a blockchain platform where: The provenance of the asset cannot move (or moving the asset to another domain becomes a complex task) to another domains of the original domain where the asset was created. Reveal data unnecessarily to prove the provenience or property of the asset

ricardor (Thu, 11 Jan 2018 15:59:01 GMT):
.............. for example if I use separate networks how I move the provenance of the asset to other networks, Today #fabric is working to solve this issue, please tell me this does not happen here, please:wink:

ricardor (Thu, 11 Jan 2018 15:59:01 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jsi9mLqo7f4RwPK3H) @jamiel Hi, I was chating with @Dan not is possible reach this granularity of privacy, in fact neither hyperledger can't do it, all data is visible for all participants in the network, in words of @Dan is neccesary " adopt blockchain where all participants have a business need to read and modify the same data under adversarial constraints."

JeremyMet (Thu, 11 Jan 2018 16:16:45 GMT):
hello people, I've been wondering how to "load" the validator.toml file when launching the validator ?

JeremyMet (Thu, 11 Jan 2018 16:17:06 GMT):
what flag should I use ? Or which line of the .yaml file should I edit ?

JeremyMet (Thu, 11 Jan 2018 16:17:06 GMT):
what flag should I use ? Or which line of the .yaml file (sawtooth-default.yaml) should I edit ?

JeremyMet (Thu, 11 Jan 2018 16:18:36 GMT):
Thank you :)

islandDeveloper242 (Thu, 11 Jan 2018 17:38:19 GMT):
Has joined the channel.

Asettouf (Thu, 11 Jan 2018 18:18:26 GMT):
Regarding PRs, is there a specific action on my side to be "whitelisted" (didn't see anything in the doc), or is it on your side to approve?

Dan (Thu, 11 Jan 2018 20:34:59 GMT):
@ricardor it's still research phase on the zk stuff, so unfortunately no links to share yet. I agree with your unease on fragile methods. My guidance is to adopt blockchain where all participants have a business need to read and modify the same data under adversarial constraints.

ricardor (Thu, 11 Jan 2018 20:38:03 GMT):
thanks @Dan

jingman (Thu, 11 Jan 2018 22:11:37 GMT):
Has joined the channel.

jingman (Thu, 11 Jan 2018 22:12:40 GMT):
Hey all! I'm trying to go through the Sawtooth docs and I'm stuck on creating the genesis block

jingman (Thu, 11 Jan 2018 22:13:46 GMT):
I make the block just fine but then when I try to use it, I get ...

jingman (Thu, 11 Jan 2018 22:13:48 GMT):
```

jingman (Thu, 11 Jan 2018 22:13:48 GMT):
```sudo -u sawtooth sawtooth admin genesis config-genesis.batch Processing config-genesis.batch... Error: Unable to read config-genesis.batch```

jingman (Thu, 11 Jan 2018 22:14:26 GMT):
I have this issue with both the latest nightly and the latest stable 0.8 build

jingman (Thu, 11 Jan 2018 22:14:42 GMT):
I installed sawtooth using apt-get

jingman (Thu, 11 Jan 2018 22:18:45 GMT):
on a 2gb digital ocean droplet

jingman (Thu, 11 Jan 2018 22:26:55 GMT):
ah, the `sudo -u sawtooth` was tripping it up

rberg2 (Thu, 11 Jan 2018 22:29:12 GMT):
I have seen that before when "sawset genesis" was run as root and created config-genesis.batch in a path the sawtooth user could not read

rberg2 (Thu, 11 Jan 2018 22:29:35 GMT):
that path being /root

rberg2 (Thu, 11 Jan 2018 22:32:04 GMT):
for the 0.8 instructions that would be the "sawtooth config genesis" command

AdamParker (Thu, 11 Jan 2018 22:38:17 GMT):
Has joined the channel.

AdamParker (Thu, 11 Jan 2018 22:39:47 GMT):
If a custom batch has been pending for several minutes but the xo example works immediately at the same time, what should I check?

AdamParker (Thu, 11 Jan 2018 22:40:38 GMT):
My test code is basically my interpretation of the Python example code in the wiki.

zac (Thu, 11 Jan 2018 23:53:36 GMT):
Is your custom batch xo, or is it from a different transaction family?

zac (Thu, 11 Jan 2018 23:54:06 GMT):
If it's a different family, it would be good to make sure the transaction processor for that family has registered with the validator properly.

AdamParker (Fri, 12 Jan 2018 04:10:23 GMT):
Oh, that makes some sense. So when you create a new type of ledger you have to write a validator or else it never comes out of pending.

AdamParker (Fri, 12 Jan 2018 04:12:31 GMT):
That's less magical than what I was expecting. lol

AdamParker (Fri, 12 Jan 2018 04:12:31 GMT):
That's less magical than what I was expecting. lol So this is the spot to make sure people are playing nice with the stuff they're putting in the chain.

jingman (Fri, 12 Jan 2018 04:54:12 GMT):
I'm trying to add a on-chain identity policy, but I don't seem to have an identity transaction processor. I tried running `identity-ts` but came up empty.

jingman (Fri, 12 Jan 2018 04:56:07 GMT):
I'm following the transactor permissioning instructions for 0.8.13

jamiel (Fri, 12 Jan 2018 05:10:12 GMT):
Has joined the channel.

jamiel (Fri, 12 Jan 2018 05:11:53 GMT):
Does sawtooth support data privacy on the chain like quorum? For example party A provides party B valuable information as per a smart contract but that information contains NPI, can that NPI data be made private to only A and B?

rajivgandhi2010 (Fri, 12 Jan 2018 05:17:52 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=ZGP2c62bva6dfq7qu) @Dan https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS171x+3T2017/courseware/9faeeb6df17c4d25a205c965473925e5/016a2cd813884e32a0c3056c472d39b1/?activate_block_id=block-v1%3ALinuxFoundationX%2BLFS171x%2B3T2017%2Btype%40sequential%2Bblock%40016a2cd813884e32a0c3056c472d39b1

rajivgandhi2010 (Fri, 12 Jan 2018 05:18:05 GMT):
i tried this tutorial

jingman (Fri, 12 Jan 2018 05:31:06 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=HvKB9ro9JoQGW9cC4) For some reason the `python3-sawtooth-identity` package did not install as part of the `apt-get install sawtooth`. Adding it manually worked.

JeremyMet (Fri, 12 Jan 2018 09:21:00 GMT):
Hello again, Is this possible run several validators on a single machine without using VM ? Thx !! ;)

JeremyMet (Fri, 12 Jan 2018 09:21:00 GMT):
Hello again, Is this possible run several validators on a single machine without using VM ? Thx !! ;) PS : Does SAWTOOTH_HOME set up have any effect ?

JeremyMet (Fri, 12 Jan 2018 09:21:00 GMT):
Hello again, Is this possible run several validators on a single machine without using VM ? Thx !! ;) PS : Does SAWTOOTH_HOME set up have any effect ? Is there really enough on https://sawtooth.hyperledger.org/docs/core/releases/latest/contents.html to master what needs to be mastered ? Trying to add my own transaction family, it is not really clear :-/

JeremyMet (Fri, 12 Jan 2018 09:21:00 GMT):
Hello again, Is this possible run several validators on a single machine without using VM ? Thx !! ;) PS : Does SAWTOOTH_HOME set up have any effect ? Is there really enough on https://sawtooth.hyperledger.org/docs/core/releases/latest/contents.html to master what needs to be mastered ? Trying to add my own transaction family, it is not really clear :-/ Is there any better tutorial than the one given in Edx ?

davod (Fri, 12 Jan 2018 10:11:10 GMT):
Hi again, in this article https://www.altoros.com/blog/hyperledgers-sawtooth-lake-aims-at-a-thousand-transactions-per-second/ it says sawtooth can handle approximately 1000 transaction under a second. How about the database size with this rate for a month for example ? Like I said in a previous post, I tested with 10k intkey transactions, and my /var/lib/sawtooth folder is approximately 130MB. Is there a way to compress the blockstore db or something ? Thank you

davod (Fri, 12 Jan 2018 10:11:10 GMT):
Hi again, in this article https://www.altoros.com/blog/hyperledgers-sawtooth-lake-aims-at-a-thousand-transactions-per-second/ it says sawtooth can handle approximately 1000 transaction under a second. How about the database size with this rate for a month for example ? Like I said in a previous post, I tested with 10k intkey transactions, and my /var/lib/sawtooth folder is approximately 130MB. Is there a way to compress the blockstore db or something ? Thank you

davod (Fri, 12 Jan 2018 10:11:10 GMT):
Hi again, in this article https://www.altoros.com/blog/hyperledgers-sawtooth-lake-aims-at-a-thousand-transactions-per-second/ it says sawtooth can handle approximately 1000 transaction under a second. How about the database size with this rate for a month for example ? Like I said in a previous post, I tested with 10k intkey transactions, and my /var/lib/sawtooth folder is approximately 130MB. Is there a way to compress the blockstore db or something ? Thank you PS: When I try to delete some state entries, the merkle-00.lmdb doesn't get smaller, is it on purpose ?

zac (Fri, 12 Jan 2018 13:52:46 GMT):
@AdamParker Yes. No magic involved. To the validator your transaction payloads are entirely opaque. It just validates the signatures and headers are correct. The transaction processor is the component you would write which knows how to decode the transaction payload and turn that into state changes. This is a fundamental reason behind Sawtooth's modularity. Since the validator has no knowledge or opinion of your payload data, your payload data can be anything.

ricardor (Fri, 12 Jan 2018 14:32:38 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jsi9mLqo7f4RwPK3H) @jamiel Hi, I was chating with @Dan not is possible reach this granularity of privacy, in fact neither hyperledger can't do it, all data is visible for all participants in the network, in words of @Dan is neccesary " adopt blockchain where all participants have a business need to read and modify the same data under adversarial constraints."

alain2sf (Fri, 12 Jan 2018 14:51:10 GMT):
Has left the channel.

ricardor (Fri, 12 Jan 2018 15:25:45 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/validator_network.html#message-delivery Network Permissioning One of the permissioning requirements is that the validator network be able to limit the nodes that are able to connect to it. The permissioning rules determine the roles a connection is able to play on the network. The roles control the types of messages that can be sent and received over a given connection. The components and nodes that wish to take on these roles must participate in an authorization “handshake” and request the roles they want to take on. The entities acting in the different roles will be referred to as requesters below.

ricardor (Fri, 12 Jan 2018 15:25:45 GMT):
check this @jamiel https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/validator_network.html#message-delivery Network Permissioning One of the permissioning requirements is that the validator network be able to limit the nodes that are able to connect to it. The permissioning rules determine the roles a connection is able to play on the network. The roles control the types of messages that can be sent and received over a given connection. The components and nodes that wish to take on these roles must participate in an authorization “handshake” and request the roles they want to take on. The entities acting in the different roles will be referred to as requesters below.

AdamParker (Fri, 12 Jan 2018 16:09:12 GMT):
Looking at my code again I'm in the intkey/1.0 family. It looks like the TP for intkey is running and probably is if `intkey generate` does 800txns/sec+. So I've probably done something real wrong here.

AdamParker (Fri, 12 Jan 2018 16:28:50 GMT):
I can create a new chain successfully but leaving inputs/outputs empty but it stays on processing when I try to add a block to an existing chain. Sanity check: where do I get the value for inputs and outputs from?

AdamParker (Fri, 12 Jan 2018 16:28:50 GMT):
I can create a new chain successfully by leaving inputs/outputs empty but it stays on processing when I try to add a block to an existing chain. Sanity check: where do I get the value for inputs and outputs from?

AdamParker (Fri, 12 Jan 2018 16:28:50 GMT):
I can create a new chain successfully by leaving inputs/outputs empty but it stays on pending when I try to add a block to an existing chain. Sanity check: where do I get the value for inputs and outputs from?

bill.cawthra (Fri, 12 Jan 2018 16:55:34 GMT):
somewhat easy question for the gallery here... what is the default port for the rest_api? Is it `8080` or `8008`?

bill.cawthra (Fri, 12 Jan 2018 16:57:08 GMT):
i see github references for `8008` and the docs reference `8080`

AdamParker (Fri, 12 Jan 2018 17:01:43 GMT):
8080

AdamParker (Fri, 12 Jan 2018 17:03:48 GMT):
Alright, I RTFM and I got it. States go in transactions not blocks. Thanks for the hints zac.

askmish (Fri, 12 Jan 2018 17:30:03 GMT):
For v0.8.x rest-api is at 8080

tommling (Fri, 12 Jan 2018 18:00:41 GMT):
Hi all, I have been developing a client for sawtooth that uses the new encoder/ batcher and I noticed that the intkey processor crashes with ```Error: byte indices must be integers or slices, not str```

tommling (Fri, 12 Jan 2018 18:02:35 GMT):
The error is not caught and the tp simply falls off

tommling (Fri, 12 Jan 2018 18:02:35 GMT):
going to post a pastebin with specifics

tommling (Fri, 12 Jan 2018 18:11:49 GMT):
``` txn = self.encoder.create(payload_bytes, inputs=[addr], outputs=[addr])```

tommling (Fri, 12 Jan 2018 18:12:53 GMT):
is the trouble line, checkout most of the system specs and code here: https://pastebin.com/uqAscgK5

tommling (Fri, 12 Jan 2018 18:14:18 GMT):
Also troublesome is that on restarting the processor, the message queue persisting the batch will crash the processor again. Cheers

tommling (Fri, 12 Jan 2018 18:21:15 GMT):
Update: it turns out I was encoding the payload twice. i.e., I specified an encoder in the encoder(...'encoder'=cbor2.dumps,....) but I was also encoding payload_bytes manually.

tommling (Fri, 12 Jan 2018 18:21:48 GMT):
Thought that I should report the uncaught crash / inability to recover from fuzz ^^

jamiel (Fri, 12 Jan 2018 21:10:30 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=wRfYCYNSZ49Z3tBcg) @ricardor But I can always encrypt the data stored in a smart contract?

ricardor (Fri, 12 Jan 2018 21:16:36 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=5WsoaQ2XiTxfGdFzW) @jamiel Hi, this week @Dan told me the same, look "You can encrypt payloads (but this restricts transaction verification, i.e. you commit receipts you don't verify state transitions)" . Really now I'm studying this deeply, if you are doing the same thing I am open to talk and I shared what I found ... for example https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/permissioning_requirement.html#transactor-key-permissioning and https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/permissioning_requirement.html#private-network

Dan (Fri, 12 Jan 2018 22:46:24 GMT):
Basically for any blockchain short of maybe zcash there's no real privacy solution. Either you transact off chain encrypt or hash something opaque to the blockchain, or you form just a small network with those who can see everything.

jamiel (Sat, 13 Jan 2018 00:50:24 GMT):
@ricardor Where are you based out of? I'm in NYC, if you are also let's meet up

ricardor (Sat, 13 Jan 2018 01:59:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=vqJqEZQWPenrDYefS) @Dan , really I've seen that there are two implementations on the horizon, first this startup chronicled.com says integrate zk-SNARKs into your blockchain solution, unfortunately it is not open source and they promise that for this 2018 they will get a commercial solution. I recomend this post https://www.coindesk.com/no-one-control-blockchain-supply-chain/ ........... and second the implementation of data privacy of corda r3 based on states , in this post Richard Gendal of R3 confronts in a very entertaining way the privacy implementation of fabric https://gendal.me/2017/07/20/what-slack-can-teach-us-about-privacy-in-enterprise -blockchains /

ricardor (Sat, 13 Jan 2018 02:03:31 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=2FZFzPLWDabSoW3Tg) @jamiel sounds very cool, but I'm based in south america (Santiago, Chile), but there are phones and emails in this beautiful technological era :smile:

jamiel (Sat, 13 Jan 2018 03:09:20 GMT):
@ricardor LOL, what is your Skype ID? Mine is jamielsheikh

PrakashJha (Sat, 13 Jan 2018 17:34:16 GMT):
Has joined the channel.

PrakashJha (Sat, 13 Jan 2018 17:35:46 GMT):
I am stuck at setup xo_java in aws sawtootth ami server . Can any one help me on this setup?

sunilvk (Sat, 13 Jan 2018 18:32:29 GMT):
Has joined the channel.

Dan (Sat, 13 Jan 2018 20:12:15 GMT):
@ricardor good point, I left out Corda. I like their solution too.

AdamParker (Sun, 14 Jan 2018 00:28:50 GMT):
Am I missing something or am I just going to have to manually install the headers for the cxx api? I got the static library to compile but make doesn't seem to know how to install. (0.8 btw)

PrakashJha (Sun, 14 Jan 2018 09:56:19 GMT):
any freelancer or expert in sawtooth that will help me, pls connect mw

nycycr (Mon, 15 Jan 2018 00:12:27 GMT):
Has joined the channel.

AdamParker (Mon, 15 Jan 2018 05:01:04 GMT):
Just by declaring a `sawtooth::TransactionProcessor` in C++ I get a lot of Undefined References for what appear to be classes (constructors and destructors), Message, Transaction, TransactionHeader, TpPingResponse, TpStateDeleteResponse, TpStateDeleteRequest... etc etc. Are these actual issues in compilation of the static lib or where I'm supposed to start development? Documentation for the cxx sdk seems lacking, am I wrong or is there someone I can bug? In premake4 lau here's what I'm linking against: ```libdirs { "/home/adam/sawtooth-core/sdk/cxx/build/lib/" } links { "proto", "sawtooth", "zmqpp", "zmq", "pthread", "log4cxx", "protobuf", "cryptopp"}```

AdamParker (Mon, 15 Jan 2018 05:01:04 GMT):
Just by declaring a `sawtooth::TransactionProcessor` in C++ I get a lot of Undefined References for what appear to be classes (constructors and destructors), Message, Transaction, TransactionHeader, TpPingResponse, TpStateDeleteResponse, TpStateDeleteRequest... etc etc. Are these actual issues in compilation of the static lib or where I'm supposed to start development? Documentation for the cxx sdk seems lacking, am I wrong or is there someone I can bug? In premake4 lau here's what I'm linking against: ```libdirs { "/home/adam/sawtooth-core/sdk/cxx/build/lib/" }links { "proto", "sawtooth", "zmqpp", "zmq", "pthread", "log4cxx", "protobuf", "cryptopp"}```

AdamParker (Mon, 15 Jan 2018 05:01:04 GMT):
Just by declaring a `sawtooth::TransactionProcessor` in C++ I get a lot of Undefined References for what appear to be classes (constructors and destructors), Message, Transaction, TransactionHeader, TpPingResponse, TpStateDeleteResponse, TpStateDeleteRequest... etc etc. Are these actual issues in compilation of the static lib or where I'm supposed to start development? Documentation for the cxx sdk seems lacking, am I wrong or is there someone I can bug? In premake4 lau here's what I'm linking against: ```libdirs { "/home/adam/sawtooth-core/sdk/cxx/build/lib/" } links { "proto", "sawtooth", "zmqpp", "zmq", "pthread", "log4cxx", "protobuf", "cryptopp"}```

tristanperalta (Mon, 15 Jan 2018 09:21:15 GMT):
hello, can someone help me how to setup sawtooth validator. What I already did is clone repo from github, then run `./bin/sawtooth-validator` and it returns an error

tristanperalta (Mon, 15 Jan 2018 09:22:16 GMT):
https://gist.github.com/tristanperalta/e9a3e914dfa3257dce64e7b1b010a6e6

amolk (Mon, 15 Jan 2018 09:56:01 GMT):
I'd recommend that you follow the documentation at: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html.

pschwarz (Mon, 15 Jan 2018 15:30:00 GMT):
If you're running from source, you need to run `./bin/build_all -l python`

pschwarz (Mon, 15 Jan 2018 15:30:42 GMT):
There is a PR (#1298) that has documentation for running sawtooth from source

AdamParker (Mon, 15 Jan 2018 15:49:18 GMT):
What a weird turn of events. So I was on 16.04 at home and I got the CXX SDK to compile. Now that I'm at work on an AWS instance when I go to compile the SDK it complains: `txn_receipt.proto:16:10: Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"`

AdamParker (Mon, 15 Jan 2018 15:50:28 GMT):
and I mean 16.04 ships with proto2 but I'm 80% sure my ubuntu machine at home is 16.04 so not sure what has gone awry here.

pschwarz (Mon, 15 Jan 2018 15:59:40 GMT):
How are you installing the protobuf compiler?

AdamParker (Mon, 15 Jan 2018 16:01:06 GMT):
aptitude

AdamParker (Mon, 15 Jan 2018 16:05:39 GMT):
This AWS image is somehow out of sync. I installed docker and did the compile the "normal" way. When I try to run intkey_cxx it complains about not finding librpotobuf.so.13, which is fair because aptitude reports libprotobuf12 being the current version.

AdamParker (Mon, 15 Jan 2018 16:09:19 GMT):
Ah, so libprotobuf12 installs libprotobuf.so.14. This is a mild nightmare.

amundson (Mon, 15 Jan 2018 16:45:36 GMT):
AFAIK, protoc on Ubuntu 16.04 does only support proto2. I haven't looked at CXX specifically, but I'm putting up a PR now using protoc w/Rust SDK and the approach I took is to install 3.5.1 from the published zip file.

amundson (Mon, 15 Jan 2018 16:46:41 GMT):
(for docker -- on the mac it's 'brew install protobuf')

AdamParker (Mon, 15 Jan 2018 17:09:38 GMT):
CXX might just require that I run a 17.04 dev machine. Makes the AWS box pretty useless but it just doesn't line up with the docker environment.

AdamParker (Mon, 15 Jan 2018 17:14:23 GMT):
Actually that's something I'm not 100% on. The compile is much nicer in docker, even spits out a .deb answering my question from this weekend, but it doesn't seem to line up with a fresh 16.04 install despite being based on xenial. How am I supposed to use it's output?

amundson (Mon, 15 Jan 2018 17:21:20 GMT):
I haven't used the AWS image, is it just older than the just-built docker images? would "apt-get upgrade" fix the issue?

stephentt (Mon, 15 Jan 2018 17:22:51 GMT):
Has joined the channel.

amundson (Mon, 15 Jan 2018 17:22:53 GMT):
is it possible that when doing the docker sequence, the files are created with bin/protogen and thus it isn't attempting to run protoc?

amundson (Mon, 15 Jan 2018 17:23:31 GMT):
that used to be how the Rust one worked prior to the PR I just put up

AdamParker (Mon, 15 Jan 2018 17:24:41 GMT):
Probably pretty close and no it doesn't seem to have anything to upgrade. I'm not sure how exactly it gets through the docker but if I had to guess I'd say they've made one step "install more recent protoc than what's in aptitude".

AdamParker (Mon, 15 Jan 2018 17:25:18 GMT):
But then you're goose is cooked because it drops you back out to your regular 16.04 install and nothing matches up.

AdamParker (Mon, 15 Jan 2018 17:35:27 GMT):
yea, it compiles like a charm under 17.04

amundson (Mon, 15 Jan 2018 17:42:10 GMT):
can't wait for 18.04

AdamParker (Mon, 15 Jan 2018 18:15:09 GMT):
It's such an odd thing because I just remembered the package into repos is tied to xenial so now I have to figure out how to compile it to get the platform to run under 17.04. You're obviously not meant to do it this way.

AdamParker (Mon, 15 Jan 2018 18:15:09 GMT):
It's such an odd thing because I just remembered the sawtooth package into repos is tied to xenial so now I have to figure out how to compile it to get the platform to run under 17.04. You're obviously not meant to do it this way.

BeeKay (Mon, 15 Jan 2018 18:21:34 GMT):
Is there a way to register for validator events using validator CLI? I am having trouble registering for events in code, and want to debug using a different option.

AdamParker (Mon, 15 Jan 2018 21:32:26 GMT):
vagrant provisioning is failing during `pip3 install sphinxcontrib-openapi` default: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-q6mvbmws/sphinxcontrib-openapi/

AdamParker (Mon, 15 Jan 2018 21:32:26 GMT):
vagrant provisioning is failing during `pip3 install sphinxcontrib-openapi` ` default: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-q6mvbmws/sphinxcontrib-openapi/`

Sunillal_VR (Mon, 15 Jan 2018 23:17:53 GMT):
Has joined the channel.

tristanperalta (Tue, 16 Jan 2018 05:50:39 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=sRtBMBQLPzQ4bTgTS) @pschwarz yes, I prefer sawtooth from source, in that way I know what is happening. And I also want to contribute.

tristanperalta (Tue, 16 Jan 2018 07:49:19 GMT):
Just ran, `docker-compose -f docker/compose/default.yml up`. Seems working fine, how do I connect to tcp://eth0:4004?

rajivgandhi2010 (Tue, 16 Jan 2018 08:20:01 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=b3kbNaAtd6Xsi8wf3) @AdamParker did you resolved this issue?

aymanelshayeb (Tue, 16 Jan 2018 10:17:41 GMT):
Has joined the channel.

aymanelshayeb (Tue, 16 Jan 2018 10:20:44 GMT):
Hello All, I have a question about Sawtooth. the main reason of using Blockchain technology is that all parties do not need trust central party . but i get confused when i read about sawtooth . it depends on Trusted network and also we have trust some validators. can anyone help me to understand this part?

aymanelshayeb (Tue, 16 Jan 2018 10:22:34 GMT):
I also have another question . if we go with all assumption of Sawtooth. and we have know big tree with all data . What if one of the parties of the application needs to make sure there is no fraud in the blockchain . In case of ethereum he can know this by simply verify nonce and target of each block but How can he do this in Sawtooth ? Thanks,

Rak (Tue, 16 Jan 2018 10:46:59 GMT):
Has joined the channel.

jklondon (Tue, 16 Jan 2018 12:26:54 GMT):
Has joined the channel.

jklondon (Tue, 16 Jan 2018 12:27:29 GMT):
Hi, has there been any development on the bond trading example? Any work to take it one step further to a production type scenario? Curious as I work in that space. Thanks Ravi

AdamParker (Tue, 16 Jan 2018 14:16:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=BvsJKLQFHau4Wfmdf) @rajivgandhi2010 I did but not in a pretty way. I had to update the associated vagrant script so the first step was to update setuptools for the current user and then it would pass.

zac (Tue, 16 Jan 2018 15:47:13 GMT):
@jklondon There aren't any plans to update the bond trading app for Sawtooth 1.0 so far as I know, though Sawtooth Marketplace is somewhat similar on a broad conceptual level: https://github.com/hyperledger/sawtooth-marketplace

zac (Tue, 16 Jan 2018 15:48:13 GMT):
Though if you wanted to be the one to port the bond app to 1.0, I'm sure it would make a lot of people happy!

pschwarz (Tue, 16 Jan 2018 15:49:13 GMT):
@tristanperalta Port 4004 is being forward to the host machine. You can connect to it via `tcp://localhost:4004`

zac (Tue, 16 Jan 2018 15:51:50 GMT):
@aymanelshayeb You are right that you can only trust Sawtooth as far as you can trust the validator. This is why you would typically run your own validator. It would run all of the cryptographic checks and what not. I'm not sure what "trusted network" means in this context, but the major requirement to being able to verify everything is running a validator.

zac (Tue, 16 Jan 2018 15:53:17 GMT):
The data tree should also be built and managed by your validator. This is how you know it is trustworthy. If you remove the data from the validator it no longer has a hash or anything you can use to verify it.

Rak (Tue, 16 Jan 2018 16:26:16 GMT):
Hello, I'm fairly new to sawtooth, while running sawtooth-default.yaml I'm getting the validator and client exiting with code 1

Rak (Tue, 16 Jan 2018 16:27:45 GMT):
Any suggestion on how to get around this, using the -force command does not seem to work, I get a message back saying 'No such command: sawtooth_default.yaml'

Rak (Tue, 16 Jan 2018 16:27:50 GMT):
thanks

amundson (Tue, 16 Jan 2018 16:30:23 GMT):
@zac at the network level, trust is more about consensus agreeing on the current chain head

ibansalankit (Tue, 16 Jan 2018 17:43:44 GMT):
Hello, I want to contribute to core development of sawtooth. I have been going through the architecture and different components of sawtooth from last few days. I was thinking of starting with a few bugs to get better idea of the code. I was looking for some unresolved bugs with the label help-wanetd like STL-99 but it looks obselete. Can someone point me to any particular direction from where I can start working?

ibansalankit (Tue, 16 Jan 2018 17:43:44 GMT):
Hello, I want to contribute to core development of sawtooth. I have been going through the architecture and different components of sawtooth from last few days. I was thinking of starting with a few bugs to get better idea of the code. I was looking for some unresolved bugs with the label help-wanetd like STL-99 but it looks obsolete. Can someone point me to any particular direction from where I can start working?

vmelachervu (Tue, 16 Jan 2018 19:12:26 GMT):
Has joined the channel.

mfford (Tue, 16 Jan 2018 19:12:31 GMT):
@ibansalankit If you wanted to get started wth bugs, you could look at https://jira.hyperledger.org/browse/STL-833 or https://jira.hyperledger.org/browse/STL-945. You could also look at https://jira.hyperledger.org/browse/STL-347

amundson (Tue, 16 Jan 2018 19:46:26 GMT):
@ibansalankit do you have any programming language preferences?

Dan (Tue, 16 Jan 2018 19:47:45 GMT):
we should probably scrub any two-digit jira item. those are all likely to be pretty out of date at this point.

AdamParker (Tue, 16 Jan 2018 20:31:56 GMT):
Hmmm.. wish I knew how to reproduce that. Somehow I hung my validator and spent a couple hours trying to debug my TP but really it was just the validator not responding.

amundson (Tue, 16 Jan 2018 20:56:48 GMT):
@AdamParker what version of sawtooth are you using?

AdamParker (Tue, 16 Jan 2018 20:57:27 GMT):
0.8.13

CaryMa (Tue, 16 Jan 2018 21:07:17 GMT):
Has joined the channel.

FrankCastellucci (Tue, 16 Jan 2018 22:12:53 GMT):
Has joined the channel.

jcraney (Tue, 16 Jan 2018 22:46:02 GMT):
Has joined the channel.

liushengxi (Wed, 17 Jan 2018 12:08:14 GMT):
Has joined the channel.

mauricio (Wed, 17 Jan 2018 14:59:37 GMT):
Has joined the channel.

Dan (Wed, 17 Jan 2018 15:28:21 GMT):
@mfford do you have a link to Zac's supply chain webcast (from the ST tech forum series) ?

tkuhrt (Wed, 17 Jan 2018 15:43:51 GMT):
@Dan : do you know what day Zac's supply chain webcast was?

tkuhrt (Wed, 17 Jan 2018 15:44:22 GMT):
You should be able to find it in this folder: https://drive.google.com/drive/u/0/folders/0B_NJV6eJXAA1VnFUakRzaG1raXc

tkuhrt (Wed, 17 Jan 2018 15:45:46 GMT):
Looks like the 19th October

tkuhrt (Wed, 17 Jan 2018 15:45:59 GMT):
https://drive.google.com/open?id=0B_NJV6eJXAA1ZHlaZjBCMVNpSWM

tkuhrt (Wed, 17 Jan 2018 15:46:38 GMT):
Looks like it starts @ 25 minutes

Dan (Wed, 17 Jan 2018 15:51:37 GMT):
Thanks @tkuhrt ! @mfford do you post a trimmed version? if not no worries I'll link to this one.

tkuhrt (Wed, 17 Jan 2018 15:53:27 GMT):
Oh..looks like there is a trimmed version at https://drive.google.com/open?id=0ByXbfT5DHjNjRDhiUFYzc011VHM

tkuhrt (Wed, 17 Jan 2018 15:53:42 GMT):
@Dan can you DM me about the project update

mfford (Wed, 17 Jan 2018 15:54:11 GMT):
Thought we had trimmed that one. Thanks for finding @tkuhrt

Dan (Wed, 17 Jan 2018 15:54:32 GMT):
@tkhurt wins the forensics badge today.

nicholas (Wed, 17 Jan 2018 16:49:33 GMT):
Has joined the channel.

AshishMishra 1 (Wed, 17 Jan 2018 16:52:52 GMT):
Has left the channel.

ibansalankit (Wed, 17 Jan 2018 17:02:25 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Tra8jEuKsG75eAq2S) @amundson I have experience with Python, Java, C++ and Javascript.

ibansalankit (Wed, 17 Jan 2018 17:02:53 GMT):
I do no restrict myself to any programming language

ibansalankit (Wed, 17 Jan 2018 17:06:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Ed7dA3jBYgH8bdYii) @mfford I will look into these bug. You can expect a pull request soon. Thank you

amundson (Wed, 17 Jan 2018 17:21:20 GMT):
@ibansalankit if you want a bulkier todo item, we need a signing library for Java that has a similar API as the signing libraries in Rust, Python, and Go

amundson (Wed, 17 Jan 2018 17:22:20 GMT):
there has been a lot of interest here in the Java SDK, so I think this would be a relatively big impact for some folks

amundson (Wed, 17 Jan 2018 17:25:24 GMT):
https://github.com/hyperledger/sawtooth-core/tree/master/sdk/rust/src/signing

amundson (Wed, 17 Jan 2018 17:25:52 GMT):
mod.rs has the general API, and secp256k1 is the one current implementation of it

amundson (Wed, 17 Jan 2018 17:26:32 GMT):
the rust API was finalized first, then we updated Go, Python, Javascript to be similar

ibansalankit (Wed, 17 Jan 2018 17:26:45 GMT):
I can surely work on that

amundson (Wed, 17 Jan 2018 17:27:14 GMT):
https://github.com/hyperledger/sawtooth-core/tree/master/sdk/java/src/main/java/sawtooth/sdk/client

amundson (Wed, 17 Jan 2018 17:27:24 GMT):
it should completely replace that current class

ibansalankit (Wed, 17 Jan 2018 17:27:25 GMT):
I will start looking into existing signing libraries to get a better understanding of them

amundson (Wed, 17 Jan 2018 17:28:57 GMT):
The tests, including https://github.com/hyperledger/sawtooth-core/blob/master/sdk/rust/src/signing/secp256k1.rs, should give some idea of how we would expect it to be used. I imagine we would have the same tests in Java.

amundson (Wed, 17 Jan 2018 17:29:07 GMT):
(tests are at the bottom of that file)

ibansalankit (Wed, 17 Jan 2018 17:35:26 GMT):
@amundson If I need some support to get started on this who is the right person to ask?

amundson (Wed, 17 Jan 2018 17:39:34 GMT):
this is a good forum for discussion; I worked on the Rust signing code, @adamludvik on the Go signing code, and @pschwarz (and others, over time) on the Python signing code

amundson (Wed, 17 Jan 2018 17:40:25 GMT):
@Dan knows a lot about secp256k1 and selected it for Sawtooth

amundson (Wed, 17 Jan 2018 17:41:57 GMT):
@boydjohnson did the initial work on the Java SDK

ibansalankit (Wed, 17 Jan 2018 17:47:35 GMT):
I will first improve my understanding of the signing library and will come back for clarifications.

AdamParker (Wed, 17 Jan 2018 18:51:08 GMT):
If a new name comes to my transaction processor, what state is loaded by state_store.get([address])?

Dan (Wed, 17 Jan 2018 19:33:00 GMT):
fresh blog content on data structure design for merkle radix trees: https://www.hyperledger.org/blog/2018/01/16/data-model-considerations-in-hyperledger-sawtooth

jsmitchell (Wed, 17 Jan 2018 19:33:27 GMT):
@AdamParker I'm not sure what you mean by a new name, but get() will return the bytes stored at the provided address anchored on the version of the state tree associated with the context in which the transaction is executed

AdamParker (Wed, 17 Jan 2018 19:38:41 GMT):
Well lets say I'm tracking a new widget, serial number [new serial number] which I'm using analogous to name in the intkey example. It seems like whatever it returns it's empty but my Python knowledge is mediocre.

AdamParker (Wed, 17 Jan 2018 19:48:07 GMT):
@jsmitchell Excuse me, I'm talking in intkey parlance. A new Address (which is tied to the name in intkey). By your explanation and reading the code I guess it would return an empty container

erikpupo (Wed, 17 Jan 2018 23:30:13 GMT):
Has joined the channel.

genesmith (Wed, 17 Jan 2018 23:40:03 GMT):
Has joined the channel.

BeeKay (Thu, 18 Jan 2018 05:39:02 GMT):
I am not sure i understand how to connect to the validator and register for events/post events. I am trying the code from "Subscribing to events" in documentation, and I see something listening on ports 8800 and 4004 (using lsof) vpnkit 3886 Krishna 22u IPv4 0xb966c38eca4988bf 0t0 TCP *:4004 (LISTEN) vpnkit 3886 Krishna 23u IPv6 0xb966c38ebea92217 0t0 TCP localhost:4004 (LISTEN) vpnkit 3886 Krishna 24u IPv4 0xb966c38eca0f5c9f 0t0 TCP *:8008 (LISTEN) vpnkit 3886 Krishna 25u IPv6 0xb966c38ebea93357 0t0 TCP localhost:8008 (LISTEN) that disappear if sawtooth goes down. But when connecting to the localhost:4004 0r 8008, a "Resource temporarily unavailable" error gets thrown on a non-blocking mode socket. Any pointers about how to debug?

mehmetshams (Thu, 18 Jan 2018 09:40:02 GMT):
Has joined the channel.

denis1990 (Thu, 18 Jan 2018 10:00:36 GMT):
Hi all! I am just learning sawtooth and not sure is it convinient to create public blockchains ? For example some blockchain with coins that can be transferred from node to node? Is Poet consensus good for it? Can spam attack or miner attack on validator crush everything ?

Dan (Thu, 18 Jan 2018 14:11:47 GMT):
@denis1990 welcome to Sawtooth! Sawtooth is designed for enterprise use. It has features such as poet that can facilitate public network usage but that is not our focus.

denis1990 (Thu, 18 Jan 2018 14:24:43 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=f6qLnw3d2wK9qQA95) @Dan Thanks for answer, Dan. Can you also tell me please, if I want to start create my own transaction family, from what should I start? Are there any good tutorials where shown hw the new TF created ? I will be very grateful for some links or simple advise with 1,2,3... steps. Thank you

Dan (Thu, 18 Jan 2018 14:26:11 GMT):
These should get you started @denis1990 https://hyperledger.org/blog/2017/06/22/whats-a-transaction-family https://sawtooth.hyperledger.org/docs/core/nightly/master/app_developers_guide.html

FrankCastellucci (Thu, 18 Jan 2018 17:13:20 GMT):
Greetings. Noob question... Just starting with sawtooth dev (using java SDK) and am creating a TransactionProcessor/Handler image for change/voting to a Unit chain. Do I also write the validator that knows what/how to communicate to my Unit TP? If not, do I register (and if so how) my TP to some other sawtooth component? Sorry for the raw ignorance on my part.

AdamParker (Thu, 18 Jan 2018 17:17:49 GMT):
TP registers to the validator. The validator will pass it the encoded payload of the block.

zac (Thu, 18 Jan 2018 17:21:51 GMT):
@FrankCastellucci The SDK should mostly handle the registration for you. You just need to point it at the right URL. Here is an example in Java: https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/intkey_java/IntegerKeyTransactionProcessor.java#L27

zac (Thu, 18 Jan 2018 17:22:07 GMT):
`args[0]` is the validator URL in this case

FrankCastellucci (Thu, 18 Jan 2018 17:28:03 GMT):
@zac Ahhhhh, so I can use the sawtooth validator URL when I start my TP image. I will start with that. Thank you!

AdamParker (Thu, 18 Jan 2018 17:33:42 GMT):
:/ My blocks are stuck in Pending despite calling state_store.set.

AdamParker (Thu, 18 Jan 2018 17:37:27 GMT):
set is returning a valid looking address

zac (Thu, 18 Jan 2018 19:15:12 GMT):
Anyone else seeing this when running the Docker image: `hyperledger/sawtooth-rest-api:1.0`? ``` supply-rest-api | [2018-01-18 19:12:15.859 INFO messaging] Connecting to tcp://validator:4004 supply-rest-api | [2018-01-18 19:12:15.861 INFO rest_api] Creating handlers for validator at tcp://validator:4004 supply-rest-api | [2018-01-18 19:12:15.865 INFO rest_api] Starting REST API on sawtooth-rest-api:8008 supply-rest-api | [2018-01-18 19:12:15.912 ERROR rest_api] [Errno -2] Name or service not known supply-rest-api | Traceback (most recent call last): supply-rest-api | File "/usr/lib/python3/dist-packages/sawtooth_rest_api/rest_api.py", line 240, in main supply-rest-api | wrapped_registry) supply-rest-api | File "/usr/lib/python3/dist-packages/sawtooth_rest_api/rest_api.py", line 138, in start_rest_api supply-rest-api | access_log_format='%r: %s status, %b size, in %Tf s') supply-rest-api | File "/usr/lib/python3/dist-packages/aiohttp/web.py", line 454, in run_app supply-rest-api | asyncio.gather(*server_creations, loop=loop) supply-rest-api | File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete supply-rest-api | return future.result() supply-rest-api | File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result supply-rest-api | raise self._exception supply-rest-api | File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step supply-rest-api | result = coro.throw(exc) supply-rest-api | File "/usr/lib/python3.5/asyncio/base_events.py", line 923, in create_server supply-rest-api | infos = yield from tasks.gather(*fs, loop=self) supply-rest-api | File "/usr/lib/python3.5/asyncio/futures.py", line 361, in __iter__ supply-rest-api | yield self # This tells Task to wait for completion. supply-rest-api | File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup supply-rest-api | future.result() supply-rest-api | File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result supply-rest-api | raise self._exception supply-rest-api | File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step supply-rest-api | result = coro.throw(exc) supply-rest-api | File "/usr/lib/python3.5/asyncio/base_events.py", line 871, in _create_server_getaddrinfo supply-rest-api | flags=flags, loop=self) supply-rest-api | File "/usr/lib/python3.5/asyncio/futures.py", line 361, in __iter__ supply-rest-api | yield self # This tells Task to wait for completion. supply-rest-api | File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup supply-rest-api | future.result() supply-rest-api | File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result supply-rest-api | raise self._exception supply-rest-api | File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run supply-rest-api | result = self.fn(*self.args, **self.kwargs) supply-rest-api | File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo supply-rest-api | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): supply-rest-api | socket.gaierror: [Errno -2] Name or service not known supply-rest-api exited with code 1 ```

ShowBox 3 (Thu, 18 Jan 2018 19:42:29 GMT):
Has joined the channel.

FrankCastellucci (Thu, 18 Jan 2018 20:26:07 GMT):
@zac One last question: I've setup on local machine and see the sawtooth-validator running and it has exposed port 4004. Not sure what to pass to my container though... I've tried tcp://validator:4004 but that throws an error. Is it some other format?

zac (Thu, 18 Jan 2018 20:32:16 GMT):
Going to depend on your setup

zac (Thu, 18 Jan 2018 20:32:38 GMT):
That URL will be valid if everything is running in containers with `docker-compose`

zac (Thu, 18 Jan 2018 20:33:14 GMT):
if you are running your TP on your local host machine then `tcp://localhost:4004` is probably what you want

AdamParker (Thu, 18 Jan 2018 21:17:28 GMT):
So I apply a transaction and then I immediately get another transaction despite not having submitted anything. The second one fails because the state has moved and the transaction is marked as invalid overall. Any ideas what could be happening here?

AdamParker (Thu, 18 Jan 2018 21:21:31 GMT):
It seems to be the same transaction twice which would explain why it fails the second time, the data is invalid for the new state.

agunde (Thu, 18 Jan 2018 21:23:53 GMT):
@AdamParker A transaction should be processed twice, once on block publishing and again on block validation. Make sure that the data you are storing in state is deterministic other wise the second validation will fail.

agunde (Thu, 18 Jan 2018 21:25:37 GMT):
Really all the code in your transaction processor needs to be deterministic otherwise you will see failures.

AdamParker (Thu, 18 Jan 2018 21:33:37 GMT):
Ah, sure enough. Does the entry I set have to be the same between the two processing cycles? I'm guessing so since it has to be deterministic.

agunde (Thu, 18 Jan 2018 21:36:16 GMT):
Yep, here is quick overview of state https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/global_state.html

FrankCastellucci (Thu, 18 Jan 2018 21:45:47 GMT):
@zac Fantastic, worked like a charm... thanks

amundson (Thu, 18 Jan 2018 21:58:15 GMT):
the Rust SDK in master now supports writing transaction processors

zac (Thu, 18 Jan 2018 22:01:19 GMT):
What about ledger syncs?

rbuysse (Thu, 18 Jan 2018 22:03:07 GMT):
We'll be rebooting the machine that hosts sawtooth.hyperledger.org in a few minutes. If you see any docs interruption, please wait a moment and refresh. I'll send another note when it's back up.

rbuysse (Thu, 18 Jan 2018 22:20:11 GMT):
Everything is back up now.

Mythul (Thu, 18 Jan 2018 23:26:57 GMT):
hi, does anybody have 5 minutes to help me with an error?

amundson (Thu, 18 Jan 2018 23:33:20 GMT):
@zac there is enough in the Rust SDK to do ledger sync

zac (Fri, 19 Jan 2018 00:01:47 GMT):
Now, do I have enough Rust to write it?

zac (Fri, 19 Jan 2018 00:01:58 GMT):
(no)

zac (Fri, 19 Jan 2018 00:02:14 GMT):
(but maybe soon)

Dan (Fri, 19 Jan 2018 00:37:51 GMT):
@Mythul just post your problem and generally someone will try to help answer :)

achenette (Fri, 19 Jan 2018 01:49:50 GMT):
Has joined the channel.

Mythul (Fri, 19 Jan 2018 07:20:11 GMT):
thanks

Mythul (Fri, 19 Jan 2018 07:20:28 GMT):
so I'm trying to use the following working example for sawtooth: https://github.com/delventhalz/transfer-chain-js

Mythul (Fri, 19 Jan 2018 07:21:06 GMT):
the project has the following transaction family defined: const FAMILY = 'transfer-chain'

Mythul (Fri, 19 Jan 2018 07:21:44 GMT):
is transfer-chain some kind of predefined transaction family? if I just change that name in the entire project, I get an invalid transaction error

Mythul (Fri, 19 Jan 2018 07:22:23 GMT):
when I revert back to the 'transfer-chain' name it works. I think I'm missing something easy here....

gaurang (Fri, 19 Jan 2018 08:22:59 GMT):
Has joined the channel.

ShowBox 3 (Fri, 19 Jan 2018 10:26:54 GMT):
i tried creating a participant in the bond asset settlement and got an error

ShowBox 3 (Fri, 19 Jan 2018 10:27:30 GMT):
the marketplace example worked

ShowBox 3 (Fri, 19 Jan 2018 10:29:13 GMT):
can anyone help with marketplace install and functionality at intel..any direct number?

Dan (Fri, 19 Jan 2018 13:55:07 GMT):
@ShowBox 3 you can get marketplace code, build, and install directions here: https://github.com/hyperledger/sawtooth-marketplace

Dan (Fri, 19 Jan 2018 13:56:24 GMT):
@zac see @Mythul 's post above ^

Mythul (Fri, 19 Jan 2018 14:20:49 GMT):
I've fixed my issue :)

Mythul (Fri, 19 Jan 2018 14:21:27 GMT):
forgot that the prefix needs to be the first 6 char of the hash of the actual family name

Mythul (Fri, 19 Jan 2018 14:21:35 GMT):
thanks @Dan

glotov (Fri, 19 Jan 2018 14:46:44 GMT):
Has joined the channel.

jaredcorduan (Fri, 19 Jan 2018 15:13:32 GMT):
apologies if this is documented somewhere, I can't find it, but can you configure the (software) poet wait times in the validator toml file?

jaredcorduan (Fri, 19 Jan 2018 15:15:12 GMT):
or is it configured in the settings txn family?

jaredcorduan (Fri, 19 Jan 2018 15:17:17 GMT):
ha ha, I find it as soon as I ask. `sawtooth.poet.target_wait_time`

Dan (Fri, 19 Jan 2018 16:05:04 GMT):
for other branch pack-rats, a command line to cleanup your local branches https://gist.github.com/dcmiddle/756445b9c2cca1e99b21b5eed065064f

AdamParker (Fri, 19 Jan 2018 16:06:52 GMT):
Is there a timeout on verifying a transaction?

bill.cawthra (Fri, 19 Jan 2018 16:23:47 GMT):
more questions relating to what :point_up: Jared asked, I'm seeing a lot of `Block marked invalid(invalid predecessor)` messages. How can we modify the wait settings to avoid this? Is that the right thing to address the issue? Still hunting on ways to understand and fix this.

bill.cawthra (Fri, 19 Jan 2018 16:24:02 GMT):
How are people load testing?

AdamParker (Fri, 19 Jan 2018 16:26:53 GMT):
Is there a short list of reasons why a transaction would be fed to my TP only once?

AdamParker (Fri, 19 Jan 2018 16:34:22 GMT):
I started the validator by hand and now it's working :rolling_eyes:

IronZion718 (Fri, 19 Jan 2018 17:13:03 GMT):
Has joined the channel.

IronZion718 (Fri, 19 Jan 2018 17:13:16 GMT):
What is the best IME for working with blockchain?

AdamParker (Fri, 19 Jan 2018 17:35:59 GMT):
There it is: ```[2018-01-19 11:34:40.983 INFO processor_handlers] registered transaction processor: connection_id=017cb6e1c82a0e724c42cb0d950bde27bc003e7578926106ef4338f72000e1d3d25e9f8a0cc7a6888217fdd2ff9211a1b6fa411818ff48b19bc5f4b08c0fb192, family=sawdost, version=1.0, encoding=application/cbor, namespaces=['69b636'] [2018-01-19 11:34:48.472 INFO publisher] Claimed Block: a750033b(9, S:9768fdb0, P:fef4663b) [2018-01-19 11:34:48.474 CRITICAL publisher] on_check_publish_block exception. [2018-01-19 11:34:48.474 ERROR publisher] 'NoneType' object has no attribute 'previous_block_id' Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/publisher.py", line 598, in on_check_publish_block self._block_sender.send(blkw.block) File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_sender.py", line 43, in send self._completer.add_block(block) File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/completer.py", line 285, in add_block self.block_cache[block.header_signature] = blkw File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_cache.py", line 85, in __setitem__ self._purge_expired() File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_cache.py", line 141, in _purge_expired dec_count_for.append(block.previous_block_id) AttributeError: 'NoneType' object has no attribute 'previous_block_id'```

AdamParker (Fri, 19 Jan 2018 17:35:59 GMT):
There it is: ```[2018-01-19 11:34:48.472 INFO publisher] Claimed Block: a750033b(9, S:9768fdb0, P:fef4663b) [2018-01-19 11:34:48.474 CRITICAL publisher] on_check_publish_block exception. [2018-01-19 11:34:48.474 ERROR publisher] 'NoneType' object has no attribute 'previous_block_id' Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/publisher.py", line 598, in on_check_publish_block self._block_sender.send(blkw.block) File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_sender.py", line 43, in send self._completer.add_block(block) File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/completer.py", line 285, in add_block self.block_cache[block.header_signature] = blkw File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_cache.py", line 85, in __setitem__ self._purge_expired() File "/usr/lib/python3/dist-packages/sawtooth_validator/journal/block_cache.py", line 141, in _purge_expired dec_count_for.append(block.previous_block_id) AttributeError: 'NoneType' object has no attribute 'previous_block_id'```

AdamParker (Fri, 19 Jan 2018 17:38:02 GMT):
I find it a bit strange that it's inconsistent. I restarted the validator and now it's fine again.

KyleJ 1 (Fri, 19 Jan 2018 17:59:16 GMT):
Has joined the channel.

Nick2567 (Fri, 19 Jan 2018 18:44:35 GMT):
Has joined the channel.

Nick2567 (Fri, 19 Jan 2018 19:37:07 GMT):
Hi, I am trying to start Sawtooth but I am seeing the following error -

Nick2567 (Fri, 19 Jan 2018 19:37:20 GMT):
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

zac (Fri, 19 Jan 2018 19:38:01 GMT):
Is Docker running?

Nick2567 (Fri, 19 Jan 2018 19:38:58 GMT):
Yes

Nick2567 (Fri, 19 Jan 2018 19:39:02 GMT):
docker.service loaded active running Docker Application

AdamParker (Fri, 19 Jan 2018 19:40:31 GMT):
Is you user in the docker group?

AdamParker (Fri, 19 Jan 2018 19:40:31 GMT):
Is your user in the docker group?

Nick2567 (Fri, 19 Jan 2018 19:44:23 GMT):
Good question, how do I check this? So far I have installed the prerequisites and downloaded the Docker Compose file.

Dan (Fri, 19 Jan 2018 20:01:19 GMT):
@bill.cawthra if you haven't changed any of the defaults I don't think an invalid block would be caused by a poet setting. An invalid predecessor means that for some reason sawtooth thinks the parent block is bad (has an invalid transaction, doesn't exist, was previously found to be invalid for some other reason, etc.). That's unlikely to happen in normal operation so I'd need to know more about what you are doing to dial in further. Are you stressing the system? You might pop loose a bug in that case. Did you restart a node with a different genesis block? then you'd have distinct chains that wouldn't trust each other.

jaredcorduan (Fri, 19 Jan 2018 20:09:39 GMT):
yes, @bill.cawthra is load testing the system. but he is not restarting a node with a different genesis block.

AdamParker (Fri, 19 Jan 2018 21:00:26 GMT):
In python, if I have a payload from a 'blocks/[block id]' response from the REST API. Can I load this back into CBOR?

AdamParker (Fri, 19 Jan 2018 21:20:07 GMT):
I just realized it got into the form by the encoder facilities. I can't find and decoding facilities in the Python API, do they exist?

AdamParker (Fri, 19 Jan 2018 21:20:07 GMT):
I just realized it got into the form by the encoder facilities. I can't find and decoding facilities in the Python API, do they exist? Edit: Found it, the data is a Base64 encoding, b64decode and then feed it to cbor.

amundson (Sat, 20 Jan 2018 00:00:29 GMT):
@AdamParker you can deserialize block and block headers using protobuf and then access the fields, if that's what you are trying to do

amundson (Sat, 20 Jan 2018 00:01:23 GMT):
same is true for batches and transactions

amundson (Sat, 20 Jan 2018 00:01:38 GMT):
payload is serialized/deserialized as defined by the transaction family

jcraney (Sat, 20 Jan 2018 10:11:07 GMT):
Hi i'm having trouble getting the validators to talk to each other on a private network. I posted in the slack channel and @Dan gave me an explanation but I'm still somewhat lost. He mentioned a toml file and endpoints. I can't find those files in the sawtooth tuna repo I downloaded from github or the simple installation on the documents site. I just don't know which configuration files I need to edit to add the right ip addresses for the different validator nodes. I'm not sure I'm fully understanding how the nodes are supposed to communicate and the docs don't really provide a walk-through for setting up a network of validators after you get the components set up in a docker environment or on a linux machine.

jcraney (Sat, 20 Jan 2018 10:13:33 GMT):
Right now I have a docker instance running sawtooth and a virtualbox ubuntu instance running sawtooth as well. I would like to connect them over the vpn and have them share blockchain information. I know the ip addresses but I don't know where I need to put them.

FrankCastellucci (Sat, 20 Jan 2018 10:28:36 GMT):
@jcraney I am a neophyte in this whole space but for the core repo, in validator https://github.com/hyperledger/sawtooth-core/tree/master/validator/packaging there are a number sample toml file that may shed some light. Deepest apologies if this completely missed your point.

FrankCastellucci (Sat, 20 Jan 2018 12:54:23 GMT):
I have hijacked the java intkey example, renamed the transaction family name to "uomkey". It starts and connects to sawtooth_validator_default. I would like to use the `intkey` utility to create a load file to test, is this possible as I am inferring that intkey generates transactions specifically to the intkey family?

amundson (Sat, 20 Jan 2018 15:13:47 GMT):
@jcraney the documentation for 1.0 is much better than for 0.8. https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/sysadmin_guide/configuring_sawtooth/validator_configuration_file.html

amundson (Sat, 20 Jan 2018 15:14:37 GMT):
to anyone using 0.8, I'd suggest migrating to 1.0

amundson (Sat, 20 Jan 2018 15:21:11 GMT):
@FrankCastellucci you could hack the intkey client to generate uomkey transactions. the family name is at https://github.com/hyperledger/sawtooth-core/blob/master/sdk/examples/intkey_python/sawtooth_intkey/client_cli/create_batch.py#L93

FrankCastellucci (Sat, 20 Jan 2018 15:26:52 GMT):
@amundson Ahhh, thank you sir. I was having difficulty finding the source and I see there is one for python but not for java. I should be able to map it reasonably enough to java (ideally Clojure but that is a heavier lift no doubt). Thanks again.

amundson (Sat, 20 Jan 2018 15:31:56 GMT):
@FrankCastellucci the challenge with that will be the current state of the client-side support in the Java SDK, in particular the signing code. @ibansalankit was considering working on a better implementation, but not sure if he has had a chance to start on it. as far as Clojure, @pschwarz may have the start of a Clojure SDK.

amundson (Sat, 20 Jan 2018 15:34:39 GMT):
in the docs for nightly master, we have started to attempt to describe the current state/readiness of each of the SDKs - https://sawtooth.hyperledger.org/docs/core/nightly/master/app_developers_guide/sdk_table.html

FrankCastellucci (Sat, 20 Jan 2018 15:45:05 GMT):
@amundson OK, I was perusing your state-export-prototype, and it helped for other things, but will go with the python client hack to make headway on testing my TP. Great new info btw...

jcraney (Sat, 20 Jan 2018 16:38:03 GMT):
@FrankCastellucci @amundson thank you both for your help. I think I got it from here.

yoni (Sat, 20 Jan 2018 19:22:52 GMT):
help please. i am working with one node in AWS instance with sawtooth 1.0.0-rc6 (upgraded from 0.8.13), and noticed that the genesis.batch file from /var/lib/sawtooth/ was being deleted. after it happened twice i noticed that it caused when restarting the sawtooth-setup.service. tried disabling this service but now the validator and rest-api services are not running after startup, even though they are enabled. thanks,

pschwarz (Sat, 20 Jan 2018 20:11:29 GMT):
@FrankCastellucci I have a start on it, but nothing 100% yet. I do have a project that uses the Event Subscription feature of Sawtooth via Clojure: https://github.com/peterschwarz/state-export-prototype . There a number of parts there for connecting to a validator. The heavy lifting was setting up the connection to the validator over ZMQ; handling transaction process requests should be trivial

FrankCastellucci (Sat, 20 Jan 2018 22:49:27 GMT):
@pschwarz I will look deeper at the Clojure code (starred it). I am just such a noob in the whole sawtooth space I don't know that I could contribute but will certain test anything you've got in the interim. Right now I've hijacked java_intkey and all I did was substitute the family name (i.e. "uomkey"), and in the sawtooth-shell-default modified the intkey batch family name to the same. Unfortunately the sawtooth-validator-default is not recognizing the family when I do a load.

FrankCastellucci (Sat, 20 Jan 2018 23:26:50 GMT):
In my TP Dockerfile do I need to expose any port in order for the sawtooth-validator-default to callback?

arthurgreef (Sat, 20 Jan 2018 23:39:29 GMT):
Has joined the channel.

AdamParker (Sun, 21 Jan 2018 05:33:22 GMT):
Spent the day practicing some sawtooth concepts and it even seems to work in narrow tests. I get nervous when all my experience with a platform is behind IP so I wrote this to test some stuff in public. https://github.com/foreverska/SensorChain Loving the platform!

FrankCastellucci (Sun, 21 Jan 2018 09:20:42 GMT):
Is very instructional. Do you mind a few questions around how you develop (inside docker image or on your host machine?)[ ](https://chat.hyperledger.org/channel/sawtooth?msg=ZpBiP8NKF9cyAHxGg) @AdamParker

basename (Sun, 21 Jan 2018 14:17:28 GMT):
Has joined the channel.

basename (Sun, 21 Jan 2018 14:22:57 GMT):
Hi guys! I not found information about peer nodes in documentation. I wanna to start a dynamic network of validators but, if the first one was started successful and I can to obtain information about blocks, but when I starting my second validator (and point the seeds property to first validator), I'm always stuck at discovering peer nodes. Please, anyone help with this, maybe stupid question. Here I'm attach a screen: https://prnt.sc/i3hfuy

basename (Sun, 21 Jan 2018 14:46:29 GMT):
sawtooth-validator-default | [2018-01-21 14:45:07.696 DEBUG interconnect] Adding connection to tcp://192.168.1.108:8800 sawtooth-validator-default | [2018-01-21 14:45:07.697 DEBUG selector_events] Using selector: ZMQSelector sawtooth-validator-default | [2018-01-21 14:45:07.697 DEBUG dispatch] Added send_message function for connection OutboundConnectionThread-tcp://192.168.1.108:8800 sawtooth-validator-default | [2018-01-21 14:45:07.698 DEBUG dispatch] Added send_last_message function for connection OutboundConnectionThread-tcp://192.168.1.108:8800 sawtooth-validator-default | [2018-01-21 14:45:07.703 DEBUG interconnect] Connection to 7c10b7ddf42168217271b0e5481ef9563acbf8e0e05a9dd6e0947994282fc2015f0296fc5b93676c34e9f5f1425fd2388a11bc0295c1fdef60248551637c7255 was acknowledged sawtooth-validator-default | [2018-01-21 14:45:07.708 DEBUG handlers] got connect message from 7c10b7ddf42168217271b0e5481ef9563acbf8e0e05a9dd6e0947994282fc2015f0296fc5b93676c34e9f5f1425fd2388a11bc0295c1fdef60248551637c7255. sending ack sawtooth-validator-default | [2018-01-21 14:45:07.708 DEBUG handlers] Endpoint of connecting node is tcp://validator:8800 sawtooth-validator-default | [2018-01-21 14:45:07.711 DEBUG permission_verifier] Chain head is not set yet. Permit all. sawtooth-validator-default | [2018-01-21 14:45:07.711 DEBUG gossip] Endpoint has completed authorization: tcp://validator:8800 (id: 7c10b7ddf42168217271b0e5481ef9563acbf8e0e05a9dd6e0947994282fc2015f0296fc5b93676c34e9f5f1425fd2388a11bc0295c1fdef60248551637c7255) sawtooth-validator-default | [2018-01-21 14:45:07.711 DEBUG gossip] Received unknown endpoint: tcp://validator:8800 sawtooth-validator-default | [2018-01-21 14:45:07.711 DEBUG handlers] Connection: 7c10b7ddf42168217271b0e5481ef9563acbf8e0e05a9dd6e0947994282fc2015f0296fc5b93676c34e9f5f1425fd2388a11bc0295c1fdef60248551637c7255 is approved sawtooth-validator-default | [2018-01-21 14:45:09.701 DEBUG

basename (Sun, 21 Jan 2018 14:48:31 GMT):
I ran the two docker containers on two different machines and set up apache reverse proxy for connect to external ips I'm boring in this line: sawtooth-validator-default | [2018-01-21 14:45:07.711 DEBUG gossip] Received unknown endpoint: tcp://validator:8800

AdamParker (Sun, 21 Jan 2018 15:11:21 GMT):
@FrankCastellucci So I'm lucky enough to have some extra real hardware that I run. At work I use a virtual machine. These two strategies are because I'm usually an embedded linux developer and I'm not great with docker yet. But my major strategy there is to install ssh, use sshfs to mount the remote filesystem on my dev machine and then open a few terminals where I SSH into the remote machine. This gives me lots of room to develop almost as if it's local without having to gum up my dev machine. This strategy would probably work in docker as well. Anything else feel free to ask.

FrankCastellucci (Sun, 21 Jan 2018 15:26:51 GMT):
Luxuries . My question was more about using the sawtooth sdk client compose and building your targets from within there versus setting up maven with the sawtooth-java-sdk jar. As I've been using the latter I'm beginning to think that is why my TransactionProcessor never shows up in the validator. @AdamParker

FrankCastellucci (Sun, 21 Jan 2018 15:26:51 GMT):
Luxuries . My question was more about using the sawtooth sdk client compose and building your targets from within there versus setting up maven with the sawtooth-java-sdk jar. As I've been using the latter I'm beginning to think that is why my TransactionProcessor never shows up in the validator. That would allow me to use my host machine tools (sublime, etc. etc) as well. @AdamParker

FrankCastellucci (Sun, 21 Jan 2018 15:34:46 GMT):
The I currently built my TP was, on my host machine, to go to the java sdk and install the sdk jar to my local maven, build my jar, wrap it in a docker image and invoke with passing tcp://localhost:4004. But it just sits there and I never see it registering in the validator.

FrankCastellucci (Sun, 21 Jan 2018 15:34:46 GMT):
The way I currently built my TP was, on my host machine, to go to the java sdk and install the sdk jar to my local maven, build my jar, wrap it in a docker image and invoke with passing tcp://localhost:4004. But it just sits there and I never see it registering in the validator.

yoni (Sun, 21 Jan 2018 15:43:18 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=eQ8B5fRXNkzrShwCA) anybody else seen this? happens only when running sawtooth as service

ibansalankit (Sun, 21 Jan 2018 16:27:26 GMT):
@amundson I have started looking into the Java SDK. I need some time to get to know more about Sawtooth especially theJava SDK.

amundson (Sun, 21 Jan 2018 18:35:03 GMT):
I updated the documentation "latest" link now points to the latest 1.0 software release (currently 1.0.0rc6), not 0.8.x. This is in support of the upcoming release of 1.0. (Multiple definitions of 'release' there, sorry.)

basename (Sun, 21 Jan 2018 19:47:04 GMT):
Guys, will be very glad if anyone knows how to connect node to existing network...

FrankCastellucci (Sun, 21 Jan 2018 22:25:31 GMT):
I've copied the client: section in sawtooth-local.yaml, renamed to jclient: renamed the container_name: and use the sawtooth-dev-java:latest image. But when I compose it loads everything but the last line is 'sawtooth-jclient-local exited with code 127'. Do I need to do something different to be able to 'shell' into that container and keep it from exiting?

arthurgreef (Mon, 22 Jan 2018 00:34:40 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=EKALZiEENXdTTHvNC) @FrankCastellucci The container exits when the first process terminates. What is the CMD command at the end of the docker file?

FrankCastellucci (Mon, 22 Jan 2018 09:05:33 GMT):
By adding my TP image to the equivalent of sawtooth-local.yaml I am not seeing the registration with the validator and I am getting at least 1 apply but I'm now facing "Invalid Transaction: sawtooth.sdk.processor.exceptions.InvalidTransactionException: Tried to get unauthorized address". I may have missed key generation steps.

FrankCastellucci (Mon, 22 Jan 2018 09:05:33 GMT):
By adding my TP image to the equivalent of sawtooth-local.yaml I am *now* seeing the registration with the validator and I am getting at least 1 apply but I'm now facing "Invalid Transaction: sawtooth.sdk.processor.exceptions.InvalidTransactionException: Tried to get unauthorized address". I may have missed key generation steps.

basename (Mon, 22 Jan 2018 09:57:34 GMT):
Thanks to all, I found solution. The issue was in apache proxy server that was used for ip passthrough from docker to external ip.

FrankCastellucci (Mon, 22 Jan 2018 10:58:06 GMT):
Fixed issue... working like a charm now. [ ](https://chat.hyperledger.org/channel/sawtooth?msg=Ji5fA8JBxMs9YDXyS)

tritone11 (Mon, 22 Jan 2018 15:42:33 GMT):
Has joined the channel.

vkblue (Mon, 22 Jan 2018 16:34:01 GMT):
Has joined the channel.

thegreatsunra (Mon, 22 Jan 2018 17:16:35 GMT):
Has joined the channel.

jingman (Mon, 22 Jan 2018 17:19:30 GMT):
In a multi-validator-node setup, how can I process transactions submitted to _any_ Validator Node with a _single_ instance of a TP?

jingman (Mon, 22 Jan 2018 17:21:07 GMT):
When a TP registers with a VN, does that VN broadcast that registration to peers, such that transaction submissions on those peers will be forwarded to the TP?

pschwarz (Mon, 22 Jan 2018 17:21:31 GMT):
TP's only support connecting to a single validator

jingman (Mon, 22 Jan 2018 17:21:45 GMT):
ok glad to see I did not misread that

jingman (Mon, 22 Jan 2018 17:23:15 GMT):
so transactions really need to be submitted directly to the VN that has the appropriate TP registered?

pschwarz (Mon, 22 Jan 2018 17:23:30 GMT):
Yes

pschwarz (Mon, 22 Jan 2018 17:24:35 GMT):
Well, not exactly - the transaction will be distributed to the rest of the network, where it will be processed by nodes that have the TP registered.

pschwarz (Mon, 22 Jan 2018 17:24:51 GMT):
But, nodes that don't have it registered will block processing until the TP is available

pschwarz (Mon, 22 Jan 2018 17:25:57 GMT):
So nodes that don't have it will fall behind the rest of the network

jingman (Mon, 22 Jan 2018 17:26:26 GMT):
oh, they'll _never_ process those transactions?

jingman (Mon, 22 Jan 2018 17:27:13 GMT):
I'd have thought that one of the VNs with a TP would process the transaction and validate/broadcast that change to peers

jingman (Mon, 22 Jan 2018 17:27:24 GMT):
but maybe I'm thinking about it wrong

jingman (Mon, 22 Jan 2018 17:28:05 GMT):
You're saying I need to have separate TP instances running for, and connected to, every Validator node in my network?

pschwarz (Mon, 22 Jan 2018 17:57:36 GMT):
yes

pschwarz (Mon, 22 Jan 2018 17:58:01 GMT):
They all need to validate the transactions by executing the transaction, to produce the same global state

jingman (Mon, 22 Jan 2018 18:01:43 GMT):
rgr, thanks @pschwarz

jingman (Mon, 22 Jan 2018 18:03:01 GMT):
Are there any tricks/tips to scaling and maintaining TPs across every VN? It sounds... challenging.

jsmitchell (Mon, 22 Jan 2018 18:21:57 GMT):
@jingman think of the TPs as a platform for building the transaction capabilities of the network. So, they could contain static business logic that a consortium agrees to run, or they could be stack/state machines which process instructions stored in blockchain state. So, the sawtooth seth transaction processor, for example implements an Ethereum EVM and executes EVM bytecode stored on the blockchain.

jsmitchell (Mon, 22 Jan 2018 18:23:08 GMT):
If your use case means frequent changes to executed transaction logic, you probably want some kind of on-blockchain contract

jingman (Mon, 22 Jan 2018 18:24:38 GMT):
Makes sense - thanks @jsmitchell

FrankCastellucci (Mon, 22 Jan 2018 18:49:30 GMT):
Can anyone direct me on best practices, tricks or shortcuts to load the python sdk packages into pip3?

Dan (Mon, 22 Jan 2018 20:18:42 GMT):
@yoni what do you get from these two commands: `systemctl list-unit-files | grep sawtooth` `dpkg -l | grep sawtooth`

cianx (Mon, 22 Jan 2018 20:57:01 GMT):
@yoni Please post the logs from your failure.

AdamParker (Tue, 23 Jan 2018 04:17:01 GMT):
The data set in SetStateData is supposed to become cannon on the chain, right?

AdamParker (Tue, 23 Jan 2018 04:19:29 GMT):
What I'm working through right now is the client is posting a block of a certain type with junk data in some of the fields. The TP is supposed to correct those fields and then post the correct data to the chain. However; the original junk fields are seeping into the chain and I can't figure out why.

yoni (Tue, 23 Jan 2018 07:32:20 GMT):
systemctl list-unit-files | grep sawtooth sawtooth-intkey-tp-python.service disabled sawtooth-parts-tp-python.service enabled sawtooth-poet-validator-registry-tp.service disabled sawtooth-rest-api.service enabled sawtooth-settings-tp.service enabled sawtooth-setup.service enabled sawtooth-validator.service enabled sawtooth-xo-tp-python.service disabled dpkg -l | grep sawtooth ii python3-sawtooth-cli 1.0.0rc6-1 all Sawtooth CLI ii python3-sawtooth-intkey 1.0.0rc6-1 all Sawtooth Intkey Python Example ii python3-sawtooth-poet-cli 1.0.0rc6-1 all Sawtooth PoET CLI ii python3-sawtooth-poet-common 1.0.0rc6-1 all Sawtooth PoET Common Modules ii python3-sawtooth-poet-core 1.0.0rc6-1 all Sawtooth Core Consensus Module ii python3-sawtooth-poet-families 1.0.0rc6-1 all Sawtooth Transaction Processor Families ii python3-sawtooth-poet-simulator 1.0.0rc6-1 all Sawtooth PoET Simulator Enclave ii python3-sawtooth-rest-api 1.0.0rc6-1 all Sawtooth REST API ii python3-sawtooth-sdk 1.0.0rc6-1 all Sawtooth Python SDK ii python3-sawtooth-settings 1.0.0rc6-1 all Sawtooth Settings Transaction Processor ii python3-sawtooth-signing 1.0.0rc6-1 all Sawtooth Signing Library ii python3-sawtooth-validator 1.0.0rc6-1 all Sawtooth Validator ii python3-sawtooth-xo 1.0.0rc6-1 all Sawtooth XO Example ii sawtooth 1.0.0rc6 all Hyperledger Sawtooth Distributed Ledger

yoni (Tue, 23 Jan 2018 07:33:08 GMT):

Clipboard - January 23, 2018 9:33 AM

yoni (Tue, 23 Jan 2018 07:38:48 GMT):
found a solution, i think maybe the setup service wasn't properly updated from version 0.8.13 i had before: sudo apt-get autoremove --purge '*sawtooth*' added the following lines to completely remove all sawtooth servies: sudo systemctl stop sawtooth-* sudo systemctl disable sawtooth-* sudo rm -R /etc/systemd/system/sawtooth-setup.service.wants sudo systemctl daemon-reload sudo systemctl reset-failed reset the instance reinstall sawtooth and add genesis batch and keys again restart and enable all services

RiyazPanarwala (Tue, 23 Jan 2018 09:50:36 GMT):
Has joined the channel.

RiyazPanarwala (Tue, 23 Jan 2018 09:51:44 GMT):
I am looking for sawtooth small-bank family examples.

yari_borbon (Tue, 23 Jan 2018 13:45:21 GMT):
Has joined the channel.

yari_borbon (Tue, 23 Jan 2018 14:08:49 GMT):
Dear all, I am new to blockchain and hyperledger. Gone throught the fabric tutorials and so far so good. Then moved onto the sawtooth and tried running ii, but, have no idea why the command goes on supply-shell unavailable server on and on:

yari_borbon (Tue, 23 Jan 2018 14:08:49 GMT):
Dear all, I am new to blockchain and hyperledger. Gone throught the fabric tutorials and so far so good. Then moved onto the sawtooth and tried running it, but, have no idea why the command goes on supply-shell unavailable server on and on:

yari_borbon (Tue, 23 Jan 2018 14:09:54 GMT):
supply-rethink | Listening on driver addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Listening on http addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Server ready, "05be5c800a9d_y51" 4c941f15-a0b3-4e68-b45b-4d6fa6fe93fc supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds...

yari_borbon (Tue, 23 Jan 2018 14:10:12 GMT):
anyone can shed light on how to six this?

yari_borbon (Tue, 23 Jan 2018 14:10:12 GMT):
anyone can shed light on how to fix this?

yari_borbon (Tue, 23 Jan 2018 14:10:47 GMT):
supply-rethink | Listening on driver addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Listening on http addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Server ready, "05be5c800a9d_y51" 4c941f15-a0b3-4e68-b45b-4d6fa6fe93fc supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds...

yari_borbon (Tue, 23 Jan 2018 14:11:16 GMT):
https://github.com/hyperledger/sawtooth-supply-chain

yari_borbon (Tue, 23 Jan 2018 14:12:36 GMT):
Start Up Once Docker is installed and you've cloned this repo, navigate to the root project directory and run: docker-compose up

yari_borbon (Tue, 23 Jan 2018 14:12:55 GMT):
supply-rethink | Listening on driver addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Listening on http addresses: 127.0.0.1, 172.18.0.3 supply-rethink | Server ready, "05be5c800a9d_y51" 4c941f15-a0b3-4e68-b45b-4d6fa6fe93fc supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds... supply-shell | Server unavailable, retrying in 5 seconds...

Dan (Tue, 23 Jan 2018 14:32:29 GMT):
@RiyazPanarwala the smallbank docs: https://sawtooth.hyperledger.org/docs/core/releases/latest/transaction_family_specifications/smallbank_transaction_family.html code is here: https://github.com/hyperledger/sawtooth-core/tree/master/families/smallbank I posted some instructions as a gist a while back. I don't know if the command lines are up to date there or not: https://gist.github.com/dcmiddle/edb6d70579a26064f68560f0c2ce946d

zac (Tue, 23 Jan 2018 15:15:24 GMT):
@yari_borbon The shell is a develop environment with dependencies installed to run Supply Chain scripts and components

zac (Tue, 23 Jan 2018 15:15:24 GMT):
@yari_borbon The shell is a development environment with dependencies installed to run Supply Chain scripts and components

zac (Tue, 23 Jan 2018 15:16:01 GMT):
It is trying to run scripts to seed the blockchain with example data, but can't until the server is running

zac (Tue, 23 Jan 2018 15:16:16 GMT):
The server does not appear to be running

zac (Tue, 23 Jan 2018 15:16:51 GMT):
See if you can find some logs from `supply-server` that might explain that

zac (Tue, 23 Jan 2018 15:16:51 GMT):
See if you can find some logs earlier from `supply-server` that might explain that

A0107400 (Tue, 23 Jan 2018 15:38:48 GMT):
Has joined the channel.

Dan (Tue, 23 Jan 2018 15:55:06 GMT):
Hey other sawtooth maintainers. One of you want to give the sawtooth update on Thursday at the TSC? I was going to do it but I just had a conflict emerge and can't attend the meeting.

ascatox (Tue, 23 Jan 2018 16:27:06 GMT):
Has joined the channel.

AdamParker (Tue, 23 Jan 2018 16:47:36 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_python.html ```from sawtooth_sdk.protobuf.transaction_pb2 import Transaction signature = signer.sign(txn_header_bytes) txn = Transaction( header=txn_header_bytes, header_signature=signature, payload: payload_bytes )``` Should be `payload=payload_bytes` I'm pretty sure

zac (Tue, 23 Jan 2018 17:08:56 GMT):
Indeed. Looks like some JS snuck in there.

AdamParker (Tue, 23 Jan 2018 17:10:16 GMT):
It was a gamble, could have been a positional dict without the braces. But yea, probably just some sneaky JS

zac (Tue, 23 Jan 2018 17:12:19 GMT):
I can fix it, unless you wanted to submit a contribution?

AdamParker (Tue, 23 Jan 2018 17:16:12 GMT):
I think I see how this works. I'll submit something in the next five

AdamParker (Tue, 23 Jan 2018 17:29:46 GMT):
https://github.com/hyperledger/sawtooth-core/pull/1369

zac (Tue, 23 Jan 2018 17:41:52 GMT):
@Dan Looks like Adam needs to be whitelisted

zac (Tue, 23 Jan 2018 17:42:01 GMT):
@AdamParker Looks like your commit needs to be signed

AdamParker (Tue, 23 Jan 2018 17:43:41 GMT):
My bad, I get so used to -m for my last two corporate gits

zac (Tue, 23 Jan 2018 17:45:25 GMT):
I was told once by someone not to use `-m` because it will omit some metadata from the commit

zac (Tue, 23 Jan 2018 17:46:06 GMT):
But now that I think about it, I have no idea _what_ metadata they were talking about, and it seems like silly behavior.

AdamParker (Tue, 23 Jan 2018 17:47:30 GMT):
Yea I don't know on that one. I got in the habit of -m because I'm in a rush for lunch or to go home and the finger acrobatics to write the commit the other way always felt slow.

zac (Tue, 23 Jan 2018 17:47:58 GMT):
In any case, you can use `-s` with `-m`

AdamParker (Tue, 23 Jan 2018 17:48:35 GMT):
Oh, so it's more a case of no one has ever cared about signatures before. Gotcha.

zac (Tue, 23 Jan 2018 17:49:29 GMT):
Yes. You may have to do some git configging if you have never signed anything before

zac (Tue, 23 Jan 2018 17:49:45 GMT):
It just grabs your name and email and adds them to the end of the commit message

AdamParker (Tue, 23 Jan 2018 17:50:17 GMT):
DCO seems to like my signature this time

zac (Tue, 23 Jan 2018 17:51:38 GMT):
Hooray! It's an approval by me.

zac (Tue, 23 Jan 2018 17:51:44 GMT):
Thanks for fixing that.

AdamParker (Tue, 23 Jan 2018 17:52:52 GMT):
No problem

Dan (Tue, 23 Jan 2018 18:18:56 GMT):
thanks @AdamParker ! I'm rerunning the jenkins job for you. We'll have to add your git account to the known list so it works automagically for you. (You still always need the -s . We just have an extra check for jenkins that the job is from a known id)

Dan (Tue, 23 Jan 2018 18:19:39 GMT):
Zac, if you have time you could make a PR to add Adam to the COMMITTERS list. I'm in mtgs for the foreseeable future :-/

zac (Tue, 23 Jan 2018 18:38:19 GMT):
https://github.com/hyperledger/sawtooth-core/pull/1370

zac (Tue, 23 Jan 2018 18:39:07 GMT):
@AdamParker Is this the correct name and github username for you: https://github.com/delventhalz/sawtooth-core/blob/7befa0ebc31aaa6a1189508b8793257d5b00dcda/COMMITTERS#L121

AdamParker (Tue, 23 Jan 2018 18:39:24 GMT):
Perfect

AdamParker (Tue, 23 Jan 2018 18:42:15 GMT):
My name in lights for a single character :grinning:

A0107400 (Tue, 23 Jan 2018 18:56:54 GMT):
Hi everyone, I am trying to run this step from the edx tutorial on Sawtooth: docker-compose -f sawtooth-default.yaml up ...it keeps getting stuck on this: sawtooth-validator-default | [2018-01-23 18:52:21.204 INFO executor] c0f1eb0d1bb8ee2a456079e3abbf38a8fbdc6ec219235530f20ddee07de182e419fce3ca6402835808d34fc1460913adab35217a4524a8cddebd443b6341abf8 did not respond to the TpPing, removing transaction processor. Any ideas on what I am missing?

donhoffman (Tue, 23 Jan 2018 20:55:18 GMT):
Has joined the channel.

Asettouf (Tue, 23 Jan 2018 21:48:59 GMT):
@A0107400 Have you started the transaction processor? (this part basically: https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS171x+3T2017/courseware/9faeeb6df17c4d25a205c965473925e5/016a2cd813884e32a0c3056c472d39b1/?activate_block_id=block-v1%3ALinuxFoundationX%2BLFS171x%2B3T2017%2Btype%40sequential%2Bblock%40016a2cd813884e32a0c3056c472d39b1)

Asettouf (Tue, 23 Jan 2018 21:49:28 GMT):
@A0107400 Have you started the transaction processor?

amundson (Tue, 23 Jan 2018 22:54:08 GMT):
@AdamParker nice. I'm still waiting on a single-letter doc PR to merge I submitted to Rocket (a Rust web framework) back in Oct.

Asettouf (Tue, 23 Jan 2018 23:08:07 GMT):
@AdamParker Actually 2 ^^

zac (Tue, 23 Jan 2018 23:27:16 GMT):
@AdamParker You are officially a Sawtooth contributor

hemantkshukla (Wed, 24 Jan 2018 01:08:07 GMT):
Has joined the channel.

AdamParker (Wed, 24 Jan 2018 05:26:15 GMT):
Haha, I know what it technically means but it feels somehow hollow. Maybe I'll earn my wings on STL-263, there's some self service there. Looks like you wrote that one up Zac, anything I should know past what I can read?

RiyazPanarwala (Wed, 24 Jan 2018 06:36:37 GMT):
Thanks Dan for information

RiyazPanarwala (Wed, 24 Jan 2018 06:36:56 GMT):
@Dan Thanks

RiyazPanarwala (Wed, 24 Jan 2018 06:45:47 GMT):
@Dan I need to encode smallbank.proto file in javascript so can you please provide any help on this.

RiyazPanarwala (Wed, 24 Jan 2018 06:46:54 GMT):
Also in latest releases of sawtooth 1.0.0rc6, new events are added in context

grkvlt (Wed, 24 Jan 2018 12:19:59 GMT):
hi. i'm in the process of making Seth compatible with the 1-0 release of Sawtooth, and I came across the new QUEUE_FULL state, not sure how to handle it? see here https://github.com/hyperledger/sawtooth-seth/pull/5/commits/2adae2fc8baf7fe57d667b7edf17c290f31ad6c8

MMSolo (Wed, 24 Jan 2018 13:22:46 GMT):
Has joined the channel.

gshap (Wed, 24 Jan 2018 13:24:45 GMT):
Has joined the channel.

gshap (Wed, 24 Jan 2018 13:32:16 GMT):
Hi. I am trying to run a program that uses the sawtooth sdk.

gshap (Wed, 24 Jan 2018 13:32:16 GMT):
Hi. I am trying to run a program that uses the sawtooth sdk. However I am getting the following error. Cannot find module './protobuf_bundle.json' Through debugging it seems that the SDK is not being built correctly. Note I am running on Windows. When I try do step 4 from here: https://github.com/hyperledger/sawtooth-core/blob/master/BUILD.md I am getting the error: bin/build_all: line 230: docker: command not found I have docker installed for Windows and I am able to get sawtooth working from here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/docker.html

gshap (Wed, 24 Jan 2018 13:32:16 GMT):
Hi. I am trying to run a program that uses the sawtooth sdk. (https://github.com/Huawei-OSG/caliper) However I am getting the following error. Cannot find module './protobuf_bundle.json' Through debugging it seems that the SDK is not being built correctly. Note I am running on Windows. When I try do step 4 from here: https://github.com/hyperledger/sawtooth-core/blob/master/BUILD.md I am getting the error: bin/build_all: line 230: docker: command not found I have docker installed for Windows and I am able to get sawtooth working from here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/docker.html

gshap (Wed, 24 Jan 2018 13:37:36 GMT):
Anyone able to help?

askmish (Wed, 24 Jan 2018 13:42:36 GMT):
docker is perhaps not in the PATH?

MMSolo (Wed, 24 Jan 2018 13:43:04 GMT):
Hi there, i am basically new to everything involving programming. I am currently following the blockchain for businesse course and im trying to install/get sawtooth on my ubuntu. Howerver when i enter "doker-compose -f sawtooth-default.yaml up" in my terminal i get the error: no such file or directory: u'./sawtooth-default.yaml'

MMSolo (Wed, 24 Jan 2018 13:43:12 GMT):
how can i solve this?

askmish (Wed, 24 Jan 2018 13:44:41 GMT):
@MMSolo could you verify if sawtooth-default.yaml file is in the same directory, where you're executing docker-compose

MMSolo (Wed, 24 Jan 2018 13:47:10 GMT):

Clipboard - January 24, 2018 2:46 PM

MMSolo (Wed, 24 Jan 2018 13:47:36 GMT):
does this sufice as proof?

amundson (Wed, 24 Jan 2018 14:29:34 GMT):
@grkvlt the queue full state basically means "retry later"; the validator is attempting to slow down the rate of work ingested so it doesn't accept batches which can't be processed in the next few blocks. in the integration tests, we retry to submit in a loop if it occurs. the CLI commands probably exit to the user. so the correct handling depends on context.

grkvlt (Wed, 24 Jan 2018 14:30:14 GMT):
understood. i guess throwing an exception isn't _exactly_ right, then!

amundson (Wed, 24 Jan 2018 14:30:44 GMT):
@RiyazPanarwala are you working on a smallbank ui?

amundson (Wed, 24 Jan 2018 14:34:15 GMT):
@MMSolo the question is whether you are in that directory on the command line in the window you are running the docker-compose command

jaredcorduan (Wed, 24 Jan 2018 15:05:18 GMT):
is `v1.1.0` the most stable up-to-date release? I just tried upgrading to this version and I am having issues with the validator raising uncaught exceptions relating to the tp settings family.

jaredcorduan (Wed, 24 Jan 2018 15:10:25 GMT):
it ultimately comes down to a `KeyError` on this dictionary get: https://github.com/hyperledger/sawtooth-core/blob/master/validator/sawtooth_validator/execution/context_manager.py#L547

MMSolo (Wed, 24 Jan 2018 15:22:29 GMT):
thnx @amundson ! found the problem

amundson (Wed, 24 Jan 2018 15:57:04 GMT):
@jaredcorduan the best release to use is 1.0.0rc6. we haven't done a release of 1.1.x yet, though that's what is in master

jaredcorduan (Wed, 24 Jan 2018 15:57:24 GMT):
ok, thank you!

thohidulk (Wed, 24 Jan 2018 16:37:48 GMT):
Has joined the channel.

jaredcorduan (Wed, 24 Jan 2018 16:53:51 GMT):
I still get the uncaught exception in the validator on `1.0.0rc6`. I can't tell if this is a logic error, ie that get in the link I posted above should always have that item in the dictionary (and hence we want the KeyError there), or if that get needs to be guarded.

zac (Wed, 24 Jan 2018 16:54:06 GMT):
@AdamParker Blast from the past. I assume you found the proposal in Google Docs: https://docs.google.com/document/d/1NcHE1ecWAD3FvhftPoiR4w9c8TuUIrNN7MXtFdoYiy4/edit#

AdamParker (Wed, 24 Jan 2018 16:55:13 GMT):
Sure did

zac (Wed, 24 Jan 2018 16:55:46 GMT):
That was written before the identity transaction family. I was not involved in its creation, but I assume that family should be leveraged with, or instead of, settings

zac (Wed, 24 Jan 2018 16:56:03 GMT):
Next step would be reading over those specs and giving that a think:

zac (Wed, 24 Jan 2018 16:56:05 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/transaction_family_specifications/identity_transaction_family.html

zac (Wed, 24 Jan 2018 16:56:17 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/transaction_family_specifications/settings_transaction_family.html

zac (Wed, 24 Jan 2018 16:58:50 GMT):
On rereading it, I also wonder if the settings lists should just be JSON arrays instead of trying to reinvent the wheel with a custom syntax. I dunno.

zac (Wed, 24 Jan 2018 17:00:03 GMT):
It's a very nicely fleshed out proposal if I do say so myself, but it is six-months out of date at this point. I think there needs to be some redesign. Not sure if @Dan or @amundson want to weigh in on it.

zac (Wed, 24 Jan 2018 17:03:12 GMT):
---------------------------- @gshap Yes. That error is indicative of the build failing. One of the things required for the JS SDK to work properly is to create a JSON file from the protobufs, which seems to be missing for you. I've never tried to build the JS SDK from source on Windows. Is there a reason you can't just `npm install` it?

zac (Wed, 24 Jan 2018 17:05:32 GMT):
`npm install --save sawtooth-sdk@^1.0.0-rc` shoould get you the newest release candidate if you are looking for 1.0 instead of 0.8

amundson (Wed, 24 Jan 2018 18:53:25 GMT):
@zac JSON may be a poor choice for settings content if different serialization libraries produce slightly different results (you need byte-for-byte accuracy)

zac (Wed, 24 Jan 2018 18:54:57 GMT):
Yeah, that must be why we went with something else. Though JSON arrays are ordered. If you specified a JSON array with no whitespace, it should _probably_ be deterministic. Might need some more research though.

AlanDickman (Wed, 24 Jan 2018 19:44:01 GMT):
Has joined the channel.

yoni (Wed, 24 Jan 2018 22:06:53 GMT):
hi, having some problems with subscribing to special event from TP, is there any example of subscribing to specific event and not just to general state change event?

yoni (Wed, 24 Jan 2018 22:07:53 GMT):
tried following this example:https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/rest_api/state_delta_websockets.html?highlight=event but couldn't subscribe to the specific event sent from my transaction processor

zac (Wed, 24 Jan 2018 22:14:43 GMT):
What sort of "specific event" are you talking about?

yoni (Wed, 24 Jan 2018 22:21:37 GMT):
in transaction processor i used the context api addEvent with event_type="my_event" and some attributes, from debugging it seems event is being sent, now trying to subscribe to it from client side

eliotlandrum (Wed, 24 Jan 2018 22:40:59 GMT):
Has joined the channel.

zac (Wed, 24 Jan 2018 23:10:23 GMT):
ah

zac (Wed, 24 Jan 2018 23:10:34 GMT):
I don't think that's possible from the REST API

zac (Wed, 24 Jan 2018 23:11:04 GMT):
You'd have to subscribe directly via ZMQ

zac (Wed, 24 Jan 2018 23:12:44 GMT):
There are docs here: https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/app_developers_guide/event_subscriptions.html

zac (Wed, 24 Jan 2018 23:14:22 GMT):
What language are you using?

RiyazPanarwala (Thu, 25 Jan 2018 04:55:08 GMT):
@amundson i am trying to use smallbank family with our app. so doing some research on that

RiyazPanarwala (Thu, 25 Jan 2018 04:55:51 GMT):
@amundson right now i am developing an app using sawtooth latest 1.0.0rc6 release

RiyazPanarwala (Thu, 25 Jan 2018 04:57:16 GMT):
just curious to know about more in smallbank family if that supports ERC20 token type facility

amundson (Thu, 25 Jan 2018 05:05:03 GMT):
@RiyazPanarwala the spec is here if you haven't seen it already - https://sawtooth.hyperledger.org/docs/core/releases/1.0.0rc6/transaction_family_specifications/smallbank_transaction_family.html

amundson (Thu, 25 Jan 2018 05:06:23 GMT):
we use it for testing and benchmarking activities

amundson (Thu, 25 Jan 2018 05:06:23 GMT):
we use it for testing and performance activities

RiyazPanarwala (Thu, 25 Jan 2018 05:08:04 GMT):
means i need to encode .proto in javascript

RiyazPanarwala (Thu, 25 Jan 2018 05:08:25 GMT):
i have not used go before

RiyazPanarwala (Thu, 25 Jan 2018 05:09:42 GMT):
just try to send batches using javascript (with smallbank family). but i got some error in encoding

amundson (Thu, 25 Jan 2018 05:10:21 GMT):
we use Rust for generating load (the client) and Go for the transaction processor. I'm not super familiar with writing javascript clients though. what's the error?

RiyazPanarwala (Thu, 25 Jan 2018 05:19:36 GMT):
Actually i have not done proper encoding of payload

RiyazPanarwala (Thu, 25 Jan 2018 05:20:03 GMT):
like in go you have to pack payload using proto.marshall

RiyazPanarwala (Thu, 25 Jan 2018 05:20:20 GMT):
so transaction processor will decode using proto.unmarshall

RiyazPanarwala (Thu, 25 Jan 2018 05:22:32 GMT):
But i am using node so have to encode payload in javascript. Need to figure out how to do payload encoding in node js which will do same as proto.marshal

amundson (Thu, 25 Jan 2018 05:31:59 GMT):
you may want to reference sawtooth supply chain as it has some javascript code that does that. in particular, https://github.com/hyperledger/sawtooth-supply-chain/blob/master/fish_client/src/services/payloads.js and https://github.com/hyperledger/sawtooth-supply-chain/blob/master/fish_client/src/services/transactions.js

amundson (Thu, 25 Jan 2018 05:34:02 GMT):
this too - https://github.com/hyperledger/sawtooth-supply-chain/blob/master/fish_client/scripts/compile_protos.js

RiyazPanarwala (Thu, 25 Jan 2018 06:20:23 GMT):
thanks will look into this

yoni (Thu, 25 Jan 2018 07:46:44 GMT):
@zac thanks for the direction will try it now, using javascript for both sending and subscribing to the event

RiyazPanarwala (Thu, 25 Jan 2018 13:03:38 GMT):
@amundson thanks for providing documents.

RiyazPanarwala (Thu, 25 Jan 2018 13:05:17 GMT):
Sometimes in sawtooth 1.0.0rc6, when i submit batch requests the apply method of transaction processor doesn't get called.

RiyazPanarwala (Thu, 25 Jan 2018 13:06:26 GMT):
I have to down the validator using docker-compose and restart it again for this type of case.

grkvlt (Thu, 25 Jan 2018 13:19:00 GMT):
does the supply-chain demo app now support 1-0 sawtooth? i remember not being able to get it to work when i tried in december...

grkvlt (Thu, 25 Jan 2018 13:21:07 GMT):
@RiyazPanarwala if you want to support tokens you must write an implementation of an ERC-20 token that can be used by the https://github.com/hyperledger/sawtooth-seth transaction processor, which implements the EVM and allows solidity to be used

Dan (Thu, 25 Jan 2018 15:47:19 GMT):
@grkvlt I think @zac updated supply-chain recently to sawtooth1-0 api or is in progress on that.

Dan (Thu, 25 Jan 2018 15:48:14 GMT):
@askmish Shawn caught a little doc change that should go into https://github.com/hyperledger/sawtooth-core/pull/1367. Could you please add that and then we can get this into the master - > 1.0 test / backport process. thx.

AdamParker (Thu, 25 Jan 2018 16:26:19 GMT):
If SGX isn't available, how is PoeT running? Dev mode or something?

Dan (Thu, 25 Jan 2018 16:29:23 GMT):
3 consensus options: DevMode, Poet Simulated Enclave (partial BFT), PoET SGX (full BFT).

AdamParker (Thu, 25 Jan 2018 16:31:17 GMT):
I recently read some rumors about Raft support in 1-0. Did that make it?

Dan (Thu, 25 Jan 2018 16:31:37 GMT):
nope :( had to push that out .. probably not for another quarter

AdamParker (Thu, 25 Jan 2018 16:37:00 GMT):
:/ That's a shame. Alright, Simulated Enclave should stand in dev.

AdamParker (Thu, 25 Jan 2018 17:08:09 GMT):
Does this Amazon instance have PoET SGX support. This tool I'm running says SGX is not supported but I figured I'd ask.

AdamParker (Thu, 25 Jan 2018 17:08:09 GMT):
Does this Amazon instance have PoET SGX support? This tool I'm running says SGX is not supported but I figured I'd ask.

zac (Thu, 25 Jan 2018 17:34:11 GMT):
@yoni Sawtooth Supply Chain uses JavaScript to sync state updates with a database. These aren't custom events, but it should be a good example to follow regardless: https://github.com/delventhalz/sawtooth-supply-chain/tree/ledger-sync-distribute/ledger_sync

yoni (Thu, 25 Jan 2018 17:35:37 GMT):
thanks

zac (Thu, 25 Jan 2018 17:36:22 GMT):
Note that I linked to my fork, because right now the subscription is handled by the same process as the REST API. There is an outstanding PR from this branch which splits it of. So master will soon look like this, but not yet.

zac (Thu, 25 Jan 2018 17:38:19 GMT):
@grkvlt @Dan Yep, Supply Chain is all 1.0ed up

grkvlt (Thu, 25 Jan 2018 17:46:48 GMT):
as far as i know aws does not _yet_ support SGX on any of their instances - your best bet in the cloud is probably microsoft azure and https://azure.microsoft.com/en-gb/blog/introducing-azure-confidential-computing/

AdamParker (Thu, 25 Jan 2018 17:56:43 GMT):
Yea, that was my feeling. Good to get a second opinion.

Dan (Thu, 25 Jan 2018 18:46:46 GMT):
Yep, if you want SGX you're best bet right now is physical hosts. We use NUCs in testing (they're just cheap little computers).

AdamParker (Thu, 25 Jan 2018 18:47:40 GMT):
I had forgotten about NUCs. I have a proposed project that is looking for SBC style computers. NUC might just fit the bill. Time to go shopping.

Dan (Thu, 25 Jan 2018 18:49:35 GMT):
have fun :) https://www.google.com/search?q=nuc+lego+rack&rlz=1C1GGRV_enUS751US752&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwi0nobP4_PYAhUF1GMKHcaUBbcQsAQINA&biw=970&bih=718&dpr=1.25

RyanBennett (Thu, 25 Jan 2018 19:01:23 GMT):
Has joined the channel.

bill.cawthra (Fri, 26 Jan 2018 01:29:57 GMT):
Any guides on how to enable `Poet Simulated Enclave`?

BhaskarKhadka (Fri, 26 Jan 2018 07:11:09 GMT):
Has joined the channel.

BhaskarKhadka (Fri, 26 Jan 2018 07:15:43 GMT):
Hi, I am new here. I instantiated a couple of sawtooth-supply-chain nodes, and trying to get them in a network... I've configured the validators to start up wiht the -peers, and --endpoints option. Now I get "RECEIVED A NETWORK_CONNECT, but no handler defined" error. Is there a guide I can use to set up a network?

Aleshia (Fri, 26 Jan 2018 16:17:49 GMT):
Has joined the channel.

Aleshia (Fri, 26 Jan 2018 16:21:15 GMT):
Morning Everyone, I thought I would finally Introduce myself because I've been lurking here for a while. I'm a M.S. Cyber Engineering student looking to incorporate Sawtooth into my thesis on aircraft maintenance records and I'll finally be working on the code today. Is this an appropriate place to ask specific questions If I have any?

AdamParker (Fri, 26 Jan 2018 16:23:26 GMT):
Aircraft Maintenance Records! As a man who used to correct maintenance records when management didn't want him on the flightline I can say that database will store a lot of fat finger corrections.

Aleshia (Fri, 26 Jan 2018 16:59:19 GMT):
@AdamParker Agreed, however a lot of mechanics I've interviewed are appalled by the idea. Nevertheless, it has been an interesting case study! Time has come to make a prototype ledger for it

Johnjam (Fri, 26 Jan 2018 17:00:57 GMT):
Hi all, can someone tell me what kind of string representation (buffer hash ? encoding ?) the rest-api returns for the transaction payloads ? e.g. when I request at GET /blocks, I got a payload like "CAESNwocc2F3dG9vdGguY29uc2Vuc3VzLmFsZ29yaXRobRIEcG9ldBoRMTUxNjk4NTYyOS44NDIxODI=" for a sawtooth_settings transaction. I would like to know if I can revert this string to a buffer to decode it in a protobuf object. Thanks =)

AdamParker (Fri, 26 Jan 2018 17:01:24 GMT):
Base64

AdamParker (Fri, 26 Jan 2018 17:01:24 GMT):
Base64 then your underlying encoding

Johnjam (Fri, 26 Jan 2018 18:58:36 GMT):
Thank you, I'll try !

bill.cawthra (Fri, 26 Jan 2018 22:48:28 GMT):
hi y'all, can anyone tell me about this particular pub key: https://github.com/hyperledger/sawtooth-core/blob/master/consensus/poet/simulator/packaging/simulator_rk_pub.pem ? how's it created, what's it used for, should it be unique to the particular validator network?

bill.cawthra (Fri, 26 Jan 2018 22:49:47 GMT):
i did find this link that helps... a little. https://github.com/hyperledger/sawtooth-core/blob/5094a9a1a7d086c14704e7055cfad9de77d1e6aa/consensus/poet/simulator/packaging/readme.txt

Dan (Fri, 26 Jan 2018 23:10:04 GMT):
Hi @bill.cawthra that key does not need to be unique per network. It's used to check the authenticity of an "attestation verification report".

Dan (Fri, 26 Jan 2018 23:11:29 GMT):
In the enclave simulator since there isn't real hardware attestation we just pick a key to act like the service that would verify attestations.

Dan (Fri, 26 Jan 2018 23:12:22 GMT):
In an actual TEE implementation like SGX, there would be a service that verifies the hardware attestations.

Dan (Fri, 26 Jan 2018 23:13:37 GMT):
The attestations themselves are used for admitting a node into the consensus population.

bill.cawthra (Fri, 26 Jan 2018 23:14:28 GMT):
thank you @Dan

rhaenni (Sat, 27 Jan 2018 06:13:55 GMT):
Has joined the channel.

rhaenni (Sat, 27 Jan 2018 06:18:02 GMT):
I just stumbled across sawtooth and done some reading on PoeT, I am a bit confused because some high level articles about sawtooth say it is permission based, but in the sawtooth docs itself it says it can work permissionless as well, I would like to figure out if sawtooth is usable in a public blockchain scenario (permissionless) and what the security implications would be, e.g. how easy is it for bad actors to become the elected validator in PoeT assuming that all participants are public?

BeeKay (Sat, 27 Jan 2018 06:36:32 GMT):
@Zac: how can I replicate STL-945?

neoscreenager (Sat, 27 Jan 2018 09:25:34 GMT):
Has joined the channel.

fjarino (Sat, 27 Jan 2018 19:19:21 GMT):
Has joined the channel.

romankrav4 (Sun, 28 Jan 2018 13:45:27 GMT):
Has joined the channel.

romankrav4 (Sun, 28 Jan 2018 13:49:16 GMT):
Hi for all. Is someone who test the transactions capacity of Sawtooth? Interested in at least the approximate values. In the official documentation, such information is not available.

jlazyj (Sun, 28 Jan 2018 18:56:23 GMT):
Has joined the channel.

jlazyj (Sun, 28 Jan 2018 18:58:00 GMT):
Not a coder but I would like to help bring sawtooth to my industry. Any advice?

Dan (Sun, 28 Jan 2018 19:26:03 GMT):
@rhaenni the design of PoET using SGX is meant to provide byzantine fault tolerance regardless of permissioned or public network deployment policies. PoET using the simulated enclave (no Hardware Trusted Execution Environment) provides only partial byzantine fault tolerance and is more suited to only permissioned networks.

Dan (Sun, 28 Jan 2018 19:29:12 GMT):
@romankrav4 we have not published any throughput numbers, in part because these are likely to be application specific and also because Hyperledger is working on defining throughput metrics generally. My guidance would be to look at business problems for which public blockchain throughput is tolerable. Sawtooth should be able to exceed that requirement.

Dan (Sun, 28 Jan 2018 19:30:48 GMT):
@jlazyj Look for problems that require multiple companies to read and write from the same database. Anything where multiple companies have to agree on information. If you have a business problem like that, then Sawtooth can probably play a key role in a technical solution. In general blockchains are a piece of a technical solution not, however, by themselves a complete solution to all technical and business problems.

welstein (Mon, 29 Jan 2018 02:57:44 GMT):
Has joined the channel.

Jayamine (Mon, 29 Jan 2018 03:18:29 GMT):
Has joined the channel.

RiyazPanarwala (Mon, 29 Jan 2018 04:54:39 GMT):
@amundson @Dan can i have sawtooth-seth written in node.js?

RiyazPanarwala (Mon, 29 Jan 2018 04:55:43 GMT):
Also, what are the changes in sawtooth 1.0.0rc7 release? i am using 1.0.0rc6.

harshmaur (Mon, 29 Jan 2018 05:09:53 GMT):
Has joined the channel.

ahmedanees (Mon, 29 Jan 2018 14:25:46 GMT):
Has joined the channel.

ahmedanees (Mon, 29 Jan 2018 14:26:51 GMT):
Hi everyone , I'm following the sawtooth tutorial in the edx.org blockchain for business course and I'm wondering about how I could get 2 nodes on different machines to share transactions and blockchain state?

lujangusCollection (Mon, 29 Jan 2018 14:30:32 GMT):
Has joined the channel.

Dan (Mon, 29 Jan 2018 15:08:55 GMT):
Per the other thread @ahmedanees Ok just edit the sawtooth config files to point to each other's IP addresses. I'll point you to a recent thread ... https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-January/000155.html

amundson (Mon, 29 Jan 2018 15:09:16 GMT):
@RiyazPanarwala I'll have release notes for 1.0.0rc7 out later in the morning

ahmedanees (Mon, 29 Jan 2018 15:10:49 GMT):
ok thanks @Dan let me see

Dan (Mon, 29 Jan 2018 15:10:57 GMT):
@zac, @ahmedanees is referencing the edx material which turns out to be in this repo. https://github.com/hyperledger/education/tree/master/LFS171x/sawtooth-material/sawtooth-tuna. Do you think that's v0.8.? ? Maybe @tkuhrt knows? In the readme we should link to the right version of the docs.

zac (Mon, 29 Jan 2018 15:46:47 GMT):
@BeeKay You need to subscribe to events which is not _super_ straightforward. You can currently reproduce by cloning either Supply Chain or Marketplace and running `docker-compose up`: https://github.com/hyperledger/sawtooth-supply-chain https://github.com/hyperledger/sawtooth-marketplace

zac (Mon, 29 Jan 2018 15:46:47 GMT):
@BeeKay You need to subscribe to events which is not _super_ straightforward. You can reproduce by cloning Supply Chain and running `docker-compose up`: https://github.com/hyperledger/sawtooth-supply-chain

zac (Mon, 29 Jan 2018 15:47:46 GMT):
That will start up a validator in very verbose mode (`-vv`) and start up an event subscriber, and send in some transactions.

zac (Mon, 29 Jan 2018 15:49:09 GMT):
You'll see some of the Validator logs are logging out the entire entire event.

zac (Mon, 29 Jan 2018 15:49:09 GMT):
You'll see some of the Validator logs are logging out the entire event object.

zac (Mon, 29 Jan 2018 15:49:09 GMT):
You'll see some of the Validator logs are logging out the entire event.

zac (Mon, 29 Jan 2018 15:49:38 GMT):
So there is a debug log in there somewhere, which is just logging out an event object. That should be changed to just its id or something.

zac (Mon, 29 Jan 2018 15:49:38 GMT):
So there is a debug logger in there somewhere, which is just logging out an event object. That should be changed to just its id or something.

zac (Mon, 29 Jan 2018 15:56:48 GMT):
@Dan Yeah, that's running on 0.8

AdamParker (Mon, 29 Jan 2018 15:59:28 GMT):
Can anyone shine some light on how the Consensus and Journal talk? Or how a consensus is loaded?

zac (Mon, 29 Jan 2018 16:39:15 GMT):
@Dan Although "running" might be the wrong word. It is two components which are coded against the 0.8 JS SDK. They don't have a docker-compose file in the repo, so someone might try to run it against 1.0 or something. It would break in that case.

AdamParker (Mon, 29 Jan 2018 16:39:38 GMT):
```adam@ubuntu:~/sawdost/tmp$ sawset proposal create -k /etc/sawtooth/keys/validator.priv -o sawset.batch sawtooth.consensus.algorithm=poet sawtooth.poet.initial_wait_timer=1 sawtooth.poet.target_wait_time=1 sawtooth.poet.minimum_wait_time=1 sawtooth.poet.population_estimate_sample_size=1 sawadm genesis sawset.batch Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_cli/sawset.py", line 652, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_cli/sawset.py", line 636, in main _do_config_proposal_create(args) File "/usr/lib/python3/dist-packages/sawtooth_cli/sawset.py", line 89, in _do_config_proposal_create for setting in settings] File "/usr/lib/python3/dist-packages/sawtooth_cli/sawset.py", line 89, in for setting in settings] File "/usr/lib/python3/dist-packages/sawtooth_cli/sawset.py", line 324, in _create_propose_txn setting_key, setting_value = setting_key_value ValueError: not enough values to unpack (expected 2, got 1)```

AdamParker (Mon, 29 Jan 2018 16:43:50 GMT):
Is: ```sawset proposal create \ -k -o sawset.batch \ sawtooth.consensus.algorithm=poet \ sawtooth.poet.initial_wait_timer=x \ sawtooth.poet.target_wait_time=x \ sawtooth.poet.minimum_wait_time=x \ sawtooth.poet.population_estimate_sample_size=x \ sawadm genesis \ sawset.batch``` Supposed to read: ```sawset proposal create \ -k \ -o sawset.batch \ sawtooth.consensus.algorithm=poet \ sawtooth.poet.initial_wait_timer=x \ sawtooth.poet.target_wait_time=x \ sawtooth.poet.minimum_wait_time=x \ sawtooth.poet.population_estimate_sample_size=x sawadm genesis \ sawset.batch````

AdamParker (Mon, 29 Jan 2018 16:43:50 GMT):
Is: ```sawset proposal create \ -k -o sawset.batch \ sawtooth.consensus.algorithm=poet \ sawtooth.poet.initial_wait_timer=x \ sawtooth.poet.target_wait_time=x \ sawtooth.poet.minimum_wait_time=x \ sawtooth.poet.population_estimate_sample_size=x \ sawadm genesis \ sawset.batch``` Supposed to read: ```sawset proposal create \ -k \ -o sawset.batch \ sawtooth.consensus.algorithm=poet \ sawtooth.poet.initial_wait_timer=x \ sawtooth.poet.target_wait_time=x \ sawtooth.poet.minimum_wait_time=x \ sawtooth.poet.population_estimate_sample_size=x sawadm genesis \ sawset.batch``` Note the missing slash after -k option and extra slash after population

grkvlt (Mon, 29 Jan 2018 17:04:29 GMT):
yes, looks like it

AdamParker (Mon, 29 Jan 2018 17:04:45 GMT):
Even with that change I'm not sure what I'm doing here because I clean out the `/var/lib/sawtooth/` directory, go through those two commands and boot the validator and it crashes with ```[2018-01-29 10:58:51.757 ERROR cli] Unable to create genesis block, due to batch 4d45a2479d9c91ea4896429eec30cda6b54f8bd218612542bb9b5f5bcf0fa7dc2183af4bca5b2638b45769163ad1a2be559c5074b0ce88bf6a61fd5ea97b2c5b````

AdamParker (Mon, 29 Jan 2018 17:04:45 GMT):
Even with that change I'm not sure what I'm doing here because I clean out the `/var/lib/sawtooth/` directory, go through those two commands and boot the validator and it crashes with ```[2018-01-29 10:58:51.757 ERROR cli] Unable to create genesis block, due to batch 4d45a2479d9c91ea4896429eec30cda6b54f8bd218612542bb9b5f5bcf0fa7dc2183af4bca5b2638b45769163ad1a2be559c5074b0ce88bf6a61fd5ea97b2c5b```

AdamParker (Mon, 29 Jan 2018 17:06:46 GMT):
But I'll file a pull for that change I guess.

pschwarz (Mon, 29 Jan 2018 18:21:55 GMT):
@AdamParker You'll need to run `sawset genesis` before any settings: ``` $ sawset genesis \ -k \ -o config-genesis.batch # your poet settings $ sawadm genesis config-genesis.batch sawset.batch ```

pschwarz (Mon, 29 Jan 2018 18:21:55 GMT):
@AdamParker You'll need to run `sawset genesis` before any settings: ``` $ sawset genesis \ -k \ -o config-genesis.batch # your poet settings command $ sawadm genesis config-genesis.batch sawset.batch ```

AdamParker (Mon, 29 Jan 2018 18:44:00 GMT):
That worked. Thanks, @pschwarz.

Dan (Mon, 29 Jan 2018 19:36:30 GMT):
@AdamParker also note in that list of sawtooth settings above, I've taken out minimum_wait_time in a recent PR. You'll see that in RC7.

AdamParker (Mon, 29 Jan 2018 19:36:57 GMT):
Would you like me to amend my commit for that?

AdamParker (Mon, 29 Jan 2018 19:38:10 GMT):
Oh wait, that's already changed in master. I didn't notice when I was doing my pull. I copied that from rc6.

amundson (Mon, 29 Jan 2018 20:05:03 GMT):
1.0.0rc7 release notes - https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-January/000157.html

jmason900 (Mon, 29 Jan 2018 20:55:26 GMT):
Has joined the channel.

jmason900 (Mon, 29 Jan 2018 21:01:20 GMT):
Ubuntu - how to remove full sawtooth install from docker easily? I’m following the edx Hyperledger course and failed on the Sawtooth install in docker-compose using the yaml file. docker-compose -f sawtooth-default.yaml up After correcting the docker-compose version, re-running default Sawtooth install fails. Is there a simple way to clear all of the items from docker across all the containers ?? thanks

AdamParker (Mon, 29 Jan 2018 21:08:52 GMT):
What's the status of the raft consensus? PoET makes cloud installs pretty expensive.

amundson (Mon, 29 Jan 2018 21:15:39 GMT):
@jmason900 I suspect that yaml file from the course is too old (from before we specified the major/minor version in the docker compose files). you might try modifying it such that all ":latest" strings are ":0.8"

jmason900 (Mon, 29 Jan 2018 21:41:58 GMT):
@amundson thanks .. that did the trick on the yaml file - set version "2.0" and changed the suffix from: :latest to :0.8 .. it all loads then starts up and runs ... end state is the initial blocks are created and the server started.. if I need to shut down the server and restart at some point, is there anything I need to do for the proper shutdown and restart of Sawtooth now that it's installed ?? thanks

Sutrannu (Mon, 29 Jan 2018 22:27:22 GMT):
Has joined the channel.

amundson (Mon, 29 Jan 2018 22:44:59 GMT):
@jmason900 everything runs inside docker containers, so you can docker-compose up and then ctrl-c when you are done, or docker-compose down, etc.

bill.cawthra (Tue, 30 Jan 2018 01:48:17 GMT):
if we want to run using a block_info injector, do we need to build our own docker container?

bill.cawthra (Tue, 30 Jan 2018 01:48:54 GMT):
after creating a genesis block with ``` sawset proposal create \ -k /etc/sawtooth/keys/validator.priv \ sawtooth.validator.batch_injectors=block_info \ 'sawtooth.validator.block_validation_rules=NofX:1,block_info;XatY:block_info,0;local:0' \ -o config.batch && \ ``` the validator will eventually error with... ``` MainThread publisher ERROR No module named 'sawtooth_block_info' ```

bill.cawthra (Tue, 30 Jan 2018 01:49:35 GMT):
it seems when y'all test this, you're volume mounting the project into the test container: https://github.com/hyperledger/sawtooth-core/blob/v1.0.1/integration/sawtooth_integration/docker/test_block_info_injector.yaml

roblav96 (Tue, 30 Jan 2018 02:24:02 GMT):
Has joined the channel.

Dan (Tue, 30 Jan 2018 03:46:46 GMT):
@AdamParker probably a couple quarters out. Hard to say. Went back burner to tighten up 1.0

Dan (Tue, 30 Jan 2018 03:47:11 GMT):
What do you mean about cloud cost though?

AdamParker (Tue, 30 Jan 2018 03:49:04 GMT):
SGX access, IBM is the only "cloud" we've found with availability.

AdamParker (Tue, 30 Jan 2018 03:51:02 GMT):
Trouble is, it's 150/mo per machine.

Dan (Tue, 30 Jan 2018 04:04:11 GMT):
I see. I think azure also has sgx. Probably see it across CSPs soon. But meanwhile PoET sim will give

Dan (Tue, 30 Jan 2018 04:04:31 GMT):
You CFT on cloud without SGX.

Dan (Tue, 30 Jan 2018 04:04:42 GMT):
Raft is also CFT.

AdamParker (Tue, 30 Jan 2018 04:10:39 GMT):
Somehow I thought Raft was full BFT but no you appear to be right. I guess I don't need full BFT in a private network, right?

AdamParker (Tue, 30 Jan 2018 04:10:39 GMT):
Somehow I thought Raft was full BFT but no you appear to be right. I guess it's kind of alright. I'd like full BFT in the cloud but CFT can move forward.

glenik (Tue, 30 Jan 2018 04:41:57 GMT):
Has joined the channel.

glenik (Tue, 30 Jan 2018 04:43:43 GMT):
Hey all. Are validators meant to run at each "peer" organization with it's branches or remote servers serving as processors? I am trying to grasp the concept of validators/processors in the context of a use case.

RiyazPanarwala (Tue, 30 Jan 2018 04:58:21 GMT):
Thanks @amundson

Dan (Tue, 30 Jan 2018 04:58:42 GMT):
Each validator is like a "full node" . Transaction processors are like apps or smart contracts. Each validator should run all TPs that the network requires.

Dan (Tue, 30 Jan 2018 05:00:07 GMT):
@AdamParker PoET sim has partial bft. Eg if one validator starts claiming too many blocks the other nodes stop accepting them. See ztest.

glenik (Tue, 30 Jan 2018 05:00:47 GMT):
Okay. That said the concept of PoET is at the validator level (not the processor?)

Dan (Tue, 30 Jan 2018 05:01:11 GMT):
Yep

Dan (Tue, 30 Jan 2018 05:01:29 GMT):
PoET is a consensus protocol

glenik (Tue, 30 Jan 2018 05:01:39 GMT):
between the validators, got it.

glenik (Tue, 30 Jan 2018 05:05:08 GMT):
Is it correct to say that in a nakamoto consensus model, the validator and processor would both be the same abstraction ?

Dan (Tue, 30 Jan 2018 05:05:45 GMT):
Not really

glenik (Tue, 30 Jan 2018 05:06:25 GMT):
hmm okay, what would be the processor in the equivalent of a bitcoin core?

Dan (Tue, 30 Jan 2018 05:07:19 GMT):
Utxo

Dan (Tue, 30 Jan 2018 05:07:51 GMT):
Except instead of just utxo you can write any business rules

Dan (Tue, 30 Jan 2018 05:08:07 GMT):
And you can have many of them

AdamParker (Tue, 30 Jan 2018 05:09:28 GMT):
Do you have a rough latency number for PoET-SGX and PoET-Sim?

glenik (Tue, 30 Jan 2018 05:09:29 GMT):
got it. Gonna do some more reading now. Thanks for that clarification.

BeeKay (Tue, 30 Jan 2018 05:11:54 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=c5FdEB7TSrz89QLNa) @zac Thank you Zac. Let me see :)

Dan (Tue, 30 Jan 2018 05:12:07 GMT):
@AdamParker not really. It depends a lot on the app. We don't have an artificial block size limit like btc so you can stuff a lot in a block if you like. I normally test with 30s blocks

Dan (Tue, 30 Jan 2018 05:12:54 GMT):
And there shouldn't be any difference between with or without sgx.

AdamParker (Tue, 30 Jan 2018 05:13:49 GMT):
Hmmm, I've never really tested it. We have half an app at work with like 500 Byte payload that doesn't really care about latency. I have a personal project with a tiny payload but I'd want good latency on. Just going to have to test.

glenik (Tue, 30 Jan 2018 05:46:10 GMT):
deploying sawtooth on docker " writing file: /root/.sawtooth/keys/my_key.pub" is taking over 15 mins, is that normal?

amundson (Tue, 30 Jan 2018 05:52:12 GMT):
no, it is not

glenik (Tue, 30 Jan 2018 05:53:04 GMT):
okay thought so just wanted to double check before a kc it

glenik (Tue, 30 Jan 2018 05:53:14 GMT):
or ck it...

glenik (Tue, 30 Jan 2018 06:13:45 GMT):
reran it, still stuck, any thoughts?

krishnamvv (Tue, 30 Jan 2018 06:39:17 GMT):
Has joined the channel.

FrankCastellucci (Tue, 30 Jan 2018 11:28:10 GMT):
Mental block: Running macos 10.12.16 with docker. Cloned sawtooth-core and did a `bin/build_all -l python` and have written a simple TP. I know to setup a compose to include the TP but I am stuck on how to structure my project Dockerfile so that my python code accesses the python_sdk for either running my TP or debugging my TP. Any examples, insights or references would be helpful in getting past this one...

ahmedanees (Tue, 30 Jan 2018 12:33:37 GMT):
is there any reference links to write and application just like edx for 1.0.0rc7 https://github.com/hyperledger/education/tree/master/LFS171x/sawtooth-material/sawtooth-tuna

ahmedanees (Tue, 30 Jan 2018 12:33:37 GMT):
Here is the path /home/ahmed/work/pu/processor/handlers.js:126 class JSONHandler extends TransactionHandler { ^ TypeError: Class extends value undefined is not a function or null at Object. (/home/ahmed/work/pu/processor/handlers.js:126:27)

Dan (Tue, 30 Jan 2018 13:02:44 GMT):
https://www.coindesk.com/intels-hyperledger-blockchain-now-ready-business/

ahmedanees (Tue, 30 Jan 2018 13:17:33 GMT):
How to check latest version of sawtooth-sdk

ahmedanees (Tue, 30 Jan 2018 13:18:02 GMT):
i have install by using npm install --save sawtooth-sdk Sawtooth-tuna-chain-client@0.0.0 /path └── sawtooth-sdk@0.8.13

ahmedanees (Tue, 30 Jan 2018 13:18:12 GMT):
it show .8.13

ahmedanees (Tue, 30 Jan 2018 13:18:23 GMT):
is this teh letest one?

ahmedanees (Tue, 30 Jan 2018 13:18:23 GMT):
is this teh latest one?

ahmedanees (Tue, 30 Jan 2018 13:24:43 GMT):
can anyone tell me Module not found: Error: Can't resolve 'sawtooth-sdk/client

ahmedanees (Tue, 30 Jan 2018 13:26:33 GMT):
what is the actual path of client in └── sawtooth-sdk@1.0.1

Dan (Tue, 30 Jan 2018 14:03:39 GMT):
https://techcrunch.com/2018/01/30/hyperledger-releases-new-open-source-distributed-ledger-called-hyperledger-sawtooth/

zac (Tue, 30 Jan 2018 14:11:38 GMT):
@ahmedanees Unfortunately there is no client in the 1.0 JS SDK. We "feature gated" it, as he we have yet to arrive at an API we are satisfied with, and want to support going forward. It should be a part of a future release, but in the mean time, you'll have to build and sign the transactions manually. You can see this done in Sawtooth Supply Chain. Transactions: https://github.com/hyperledger/sawtooth-supply-chain/blob/master/fish_client/src/services/transactions.js Batches: https://github.com/hyperledger/sawtooth-supply-chain/blob/master/server/blockchain/batcher.js

zac (Tue, 30 Jan 2018 14:12:26 GMT):
Note that creating a `TransactionList` is unnecessary if you are building transactions and batches in the same process.

zac (Tue, 30 Jan 2018 14:14:09 GMT):
@FrankCastellucci Check out this Dockerfile: https://github.com/hyperledger/sawtooth-marketplace/blob/master/rest_api/Dockerfile#L23

ahmedanees (Tue, 30 Jan 2018 14:15:01 GMT):
thanks @zac let me see this

brankoterzic (Tue, 30 Jan 2018 14:15:19 GMT):
Has joined the channel.

zac (Tue, 30 Jan 2018 14:16:37 GMT):
That repo was `0.8` and got converted over. If it helps to see the diff, that commit is here: https://github.com/hyperledger/sawtooth-supply-chain/commit/a019c8ea9e260170660c0e079755d7babad6c12e

zac (Tue, 30 Jan 2018 14:17:14 GMT):
@Dan > _"Long considered one of the most promising codebases hosted by the Hyperledger blockchain consortium, Intel's Sawtooth software is officially ready for enterprise use."_

zac (Tue, 30 Jan 2018 14:17:19 GMT):
Well now.

zac (Tue, 30 Jan 2018 14:17:32 GMT):
That's very nice of them to say.

Juanan_Tejero (Tue, 30 Jan 2018 14:38:26 GMT):
Has joined the channel.

ahmedanees (Tue, 30 Jan 2018 15:06:55 GMT):

handler.txt

ahmedanees (Tue, 30 Jan 2018 15:07:31 GMT):
handlers.js:126 class JSONHandler extends TransactionHandler { ^ TypeError: Class extends value undefined is not a function or null at Object. (/home/ahmed/work/pu/processor/handlers.js:126:27)

ahmedanees (Tue, 30 Jan 2018 15:08:05 GMT):
can any one guide me how to fix this issue

shanlusun (Tue, 30 Jan 2018 15:08:12 GMT):
Has joined the channel.

ahmedanees (Tue, 30 Jan 2018 15:28:31 GMT):
FIxed ^ issue by this const { TransactionHandler } = require('sawtooth-sdk/processor/handler') path setting

ahmedanees (Tue, 30 Jan 2018 15:29:18 GMT):
Now getting this issue handler.versions.forEach(version => { ^ TypeError: handler.versions.forEach is not a function

ahmedanees (Tue, 30 Jan 2018 15:29:39 GMT):
sawtooth-sdk processor-index.js:161:26

ahmedanees (Tue, 30 Jan 2018 15:30:08 GMT):
@zac or anyone else please guide

amundson (Tue, 30 Jan 2018 15:35:14 GMT):
Sawtooth 1.0.1 release notes (more of a summary this time) - https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-January/000159.html

zac (Tue, 30 Jan 2018 15:42:18 GMT):
@ahmedanees That's odd. Can you attach the source code where you set up the TransactionHandler and TransactionProcessor?

zac (Tue, 30 Jan 2018 15:48:55 GMT):
If I had to guess, I would say you passed in the version for your TransactionHandler as a string, it should be an array

pschwarz (Tue, 30 Jan 2018 15:49:14 GMT):
Does the constructor of your handler look something like this: ``` class IntegerKeyHandler extends TransactionHandler { constructor () { super(INT_KEY_FAMILY, ['1.0'], [INT_KEY_NAMESPACE]) } ... ```

pschwarz (Tue, 30 Jan 2018 15:49:14 GMT):
Does the constructor of your handler look something like this: ```js class IntegerKeyHandler extends TransactionHandler { constructor () { super(INT_KEY_FAMILY, ['1.0'], [INT_KEY_NAMESPACE]) } ... ```

pschwarz (Tue, 30 Jan 2018 15:49:14 GMT):
Does the constructor of your handler look something like this: ```javascript class IntegerKeyHandler extends TransactionHandler { constructor () { super(INT_KEY_FAMILY, ['1.0'], [INT_KEY_NAMESPACE]) } ... ```

zac (Tue, 30 Jan 2018 15:49:15 GMT):
An array wrapped around one or more strings specifically

zac (Tue, 30 Jan 2018 15:49:55 GMT):
What could possibly posses :rocket: to highlight a string like that?

Dan (Tue, 30 Jan 2018 15:55:35 GMT):
sweet mysteries of :rocket:

rjones (Tue, 30 Jan 2018 15:58:21 GMT):
it's probably a library they import. I went spelunking on some topic and found it's libraries _all the way down_

robinrob (Tue, 30 Jan 2018 16:09:19 GMT):
Has joined the channel.

mihaipruna (Tue, 30 Jan 2018 16:10:35 GMT):
Has joined the channel.

zac (Tue, 30 Jan 2018 16:26:54 GMT):
:turtle: :turtle: :turtle:

mihaipruna (Tue, 30 Jan 2018 16:28:33 GMT):
Is there an example of writing a transaction processor and client from scratch with Javascript?

zac (Tue, 30 Jan 2018 16:29:01 GMT):
"from scratch"?

zac (Tue, 30 Jan 2018 16:29:12 GMT):
Meaning without the JS SDK?

mihaipruna (Tue, 30 Jan 2018 16:30:56 GMT):
No, I plan to use the SDK :)

mihaipruna (Tue, 30 Jan 2018 16:32:04 GMT):
I'm interested in something simple like the tuna tracking example but with all the steps explained

RiyazPanarwala (Tue, 30 Jan 2018 16:38:03 GMT):
https://sawtooth.hyperledger.org/docs/seth/ this link is not working

RiyazPanarwala (Tue, 30 Jan 2018 16:38:56 GMT):
Need sawtooth-seth document. Is this available in JS SDK

zac (Tue, 30 Jan 2018 16:45:09 GMT):
@mihaipruna In that case, there are a few

zac (Tue, 30 Jan 2018 16:45:20 GMT):
Some transaction processors: https://github.com/hyperledger/sawtooth-core/tree/master/sdk/examples

zac (Tue, 30 Jan 2018 16:46:07 GMT):
Also, worth looking at Supply Chain: https://github.com/hyperledger/sawtooth-supply-chain

zac (Tue, 30 Jan 2018 16:46:25 GMT):
That's an app, similar to the fish client thing, with a number of JS components

zac (Tue, 30 Jan 2018 16:46:33 GMT):
The Transaction Processor is Python though

amundson (Tue, 30 Jan 2018 16:49:28 GMT):
@RiyazPanarwala we will publish seth docs shortly; in the meantime, the raw docs are at https://github.com/hyperledger/sawtooth-seth/tree/master/docs/source

amundson (Tue, 30 Jan 2018 16:51:00 GMT):
there is nothing javascript specific in the seth implementation; the transaction processor is in go and the web3 api is in rust, but client could talk to the api with javascript

amundson (Tue, 30 Jan 2018 16:51:20 GMT):
(similar to interacting with ethereum)

mihaipruna (Tue, 30 Jan 2018 16:54:07 GMT):
@zac Thank you

candidosg (Tue, 30 Jan 2018 17:42:21 GMT):
Has joined the channel.

Dan (Tue, 30 Jan 2018 19:33:26 GMT):
Regarding Javascript, here's an 'unofficial' example from @cianx on how to create a Javascript client which builds transactions that will be interpreted by a c++ transaction processor. https://github.com/cianx/cookie-maker

Dan (Tue, 30 Jan 2018 19:34:41 GMT):
I like how this separates the client from the server. Sometimes its fine to make both pieces with the same language, but I think increasingly you'll see a client language choice differ from the backend language choice.

jaredcorduan (Tue, 30 Jan 2018 20:16:38 GMT):
has anyone else had trouble with the block info inconsistently not showing up in the merkle tree in the newer versions? we are running with sawtooth code from December, and the block info works great. I was trying to upgrade to `1.0.1` today, and our integration test have missing block info about 10% of the time.

Dan (Tue, 30 Jan 2018 20:24:03 GMT):
Can you say a little more? Like the query fails randomly or you don't see the transaction processor connect correctly?

jaredcorduan (Tue, 30 Jan 2018 20:27:27 GMT):
yea. we deserialize the protobuff inside `'00b10c01' + ''.zfill(62)` so that we can get the `latest_block`. we then look at `BLOCK_INFO_PREFIX + hex(block_num)[2:].zfill(62)` to get the timestamp. but there is sometimes, like 10% of the time, nothing inside this second address

amundson (Tue, 30 Jan 2018 20:29:33 GMT):
we might want to augment 'sawadm block' so we can get more info out of the the block store

amundson (Tue, 30 Jan 2018 20:30:10 GMT):
like, enough so we can see which blocks don't have the expected transaction

amundson (Tue, 30 Jan 2018 20:30:37 GMT):
and with that, we could look through the logs to see if there are any hints as to what might have happened

amundson (Tue, 30 Jan 2018 20:31:12 GMT):
does the integration test use devmode or poet?

jsmitchell (Tue, 30 Jan 2018 20:31:21 GMT):
hmm

jaredcorduan (Tue, 30 Jan 2018 20:31:37 GMT):
it is using devmode

jsmitchell (Tue, 30 Jan 2018 20:31:49 GMT):
@pschwarz @adamludvik injector/unscheduler ^^

jaredcorduan (Tue, 30 Jan 2018 20:32:01 GMT):
injectifier :)

boydjohnson (Tue, 30 Jan 2018 20:32:04 GMT):
Something that sprang to mind that happened between December and now is unscheduling. The block info txns are sent through the scheduler aren't they?

jsmitchell (Tue, 30 Jan 2018 20:32:38 GMT):
yeah, and there is consideration for injected transactions remaining, but perhaps there is a bug

pschwarz (Tue, 30 Jan 2018 20:32:49 GMT):
Was just going to say that

amundson (Tue, 30 Jan 2018 20:32:51 GMT):
@jaredcorduan could we make that test generic enough to include in sawtooth-core?

jaredcorduan (Tue, 30 Jan 2018 20:33:46 GMT):
possibly, unfortunately right now the test is pretty complicated. but I bet we could just use intkey and check for timestamps over and over and we'd see it

pschwarz (Tue, 30 Jan 2018 20:34:25 GMT):
it should already be covered by `integration/sawtooth_integration/test_block_info_injector.py`

pschwarz (Tue, 30 Jan 2018 20:34:40 GMT):
That's the reason we had to preserve those batches in the first place

pschwarz (Tue, 30 Jan 2018 20:35:13 GMT):
It's possible that test isn't thorough enough

jaredcorduan (Tue, 30 Jan 2018 20:35:31 GMT):
fwiw, I get the same trouble with rc6 and rc7

amundson (Tue, 30 Jan 2018 20:35:43 GMT):
I think if I had the test and could repeat it, I'd want to use git bisect to figure out when the regression was introduced initially

amundson (Tue, 30 Jan 2018 20:36:13 GMT):
if you could determine which rcX it appears in, that would be helpful

pschwarz (Tue, 30 Jan 2018 20:36:18 GMT):
Unscheduling went into rc6, I think

jaredcorduan (Tue, 30 Jan 2018 20:36:28 GMT):
I could test rc5 real quick

oatmealraisin (Tue, 30 Jan 2018 20:54:41 GMT):
Hello! Congrats on 1.0

oatmealraisin (Tue, 30 Jan 2018 20:55:10 GMT):
Is there documentation on sawtooth storage? I'm standing up a blockchain in prod and need to understand what options I have

oatmealraisin (Tue, 30 Jan 2018 20:55:10 GMT):
@jsmitchell I'm just getting started with the documentation, and was looking for a manual for configurations such as the one you mentioned. I can just ask away here, but I feel like I'd be wasting your time with entry level questions :P

oatmealraisin (Tue, 30 Jan 2018 20:55:10 GMT):
@jsmitchell There's no information on where the data is stored? Or some information on sizing, backup, integration?

jaredcorduan (Tue, 30 Jan 2018 20:57:33 GMT):
block info is stable in `rc5`, I cannot reproduce the issue with it

jaredcorduan (Tue, 30 Jan 2018 20:58:22 GMT):
so yea, it seems this was introduced in `rc6`

jsmitchell (Tue, 30 Jan 2018 21:03:51 GMT):
@oatmealraisin what are your questions? State and blockchain data is stored in LMDB instances. By using the state delta export pattern, you can write an adapter to land your data into a database(sql, nosql, etc) to support more sophisticated querying/analytics

oatmealraisin (Tue, 30 Jan 2018 21:09:09 GMT):
oops, I was editing my last message i think

jsmitchell (Tue, 30 Jan 2018 21:09:17 GMT):
There are no alternative storage implementations, so there is nothing to configure

jsmitchell (Tue, 30 Jan 2018 21:10:06 GMT):
@pschwarz do we have an example state delta export somewhere?

pschwarz (Tue, 30 Jan 2018 21:11:40 GMT):
https://github.com/hyperledger/sawtooth-supply-chain has state delta export in JS

pschwarz (Tue, 30 Jan 2018 21:12:01 GMT):
https://github.com/hyperledger/sawtooth-marketplace has state delta export in Python

oatmealraisin (Tue, 30 Jan 2018 21:12:12 GMT):
wth, my messages keep getting put in my first one, i'm sorry

pschwarz (Tue, 30 Jan 2018 21:12:16 GMT):
Both of those go to a Rethink DB instance

oatmealraisin (Tue, 30 Jan 2018 21:12:38 GMT):
@jsmitchell There's no information on where the data is stored? Or some information on sizing, backup, integration?

jsmitchell (Tue, 30 Jan 2018 21:12:52 GMT):
@oatmealraisin oh, you can configure paths and stuff in a toml file

pschwarz (Tue, 30 Jan 2018 21:12:56 GMT):
Less official: https://github.com/peterschwarz/state-export-prototype in Clojure to a PostgreSQL db

oatmealraisin (Tue, 30 Jan 2018 21:13:08 GMT):
@pschwarz That's nifty, thanks!

jsmitchell (Tue, 30 Jan 2018 21:13:23 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/sysadmin_guide/configuring_sawtooth/path_configuration_file.html

jmason900 (Tue, 30 Jan 2018 21:13:23 GMT):
@zac sawltooth-material app in course LFS171x help. I believe you built the tuna example in the sawtooth-material course demo?? If we get errors bringing up the app in docker-compose, is there auxillary doc anywhere on how to debug the issues ? the base Sawtooth example worked fine in my unbuntu setup for docker-compose .. no errors . After I corrected the sawtooth-default.yaml file to: version “2.0” replaced all “:latest” with “1.0” running docker-compose again sawtooth-material yaml I get the errors below on the initial version of the file. Making the same yaml changes that worked for the base sawtooth default app, did not fix the issues in this startup. Any ideas on next steps or related documentation ? I pulled the errors below from the startup log for sawtooth-material app sawtooth-validator-default | usage: sawtooth [-h] [-v] [-V] sawtooth-intkey-tp-python-default | intkey-tp-python: error: unrecognized arguments: tcp://validator:4004 sawtooth-validator-default | {batch,block,identity,keygen,peer,settings,state,transaction} sawtooth-validator-default | ... sawtooth-validator-default | sawtooth: error: argument command: invalid choice: 'admin' (choose from 'batch', 'block', 'identity', 'keygen', 'peer', 'settings', 'state', 'transaction') …. sawtooth-validator-default exited with code 2 sawtooth-intkey-tp-python-default exited with code 2

pschwarz (Tue, 30 Jan 2018 21:17:10 GMT):
There was a change in arguments between 0.8 and 1.0, where it should be `--connect tcp://validator:4004` (or `-C` for the short arg)

oatmealraisin (Tue, 30 Jan 2018 21:29:00 GMT):
@jsmitchell Thank you :)

oatmealraisin (Tue, 30 Jan 2018 21:29:39 GMT):
Are there any plans in the future to allow other storage options, such as etcd (another k/v store)

oatmealraisin (Tue, 30 Jan 2018 21:29:39 GMT):
?

pschwarz (Tue, 30 Jan 2018 21:33:58 GMT):
@jaredcorduan Are you using the parallel scheduler or the default? Either way you could test it with the opposite one on 1.0.1 and see if it still occurs?

szan 1 (Tue, 30 Jan 2018 21:36:19 GMT):
Has joined the channel.

szan 1 (Tue, 30 Jan 2018 21:36:58 GMT):
Hi, i am from Intel, and trying to setup the demo on Intel Nuc and i am facing issue with asset tracking

szan 1 (Tue, 30 Jan 2018 21:37:56 GMT):
i could not get to http://localhost:8021

szan 1 (Tue, 30 Jan 2018 21:38:08 GMT):
can anyone help me setup this demo ? this is for upcming event

kelly_ (Tue, 30 Jan 2018 21:41:45 GMT):
@szan 1 can you post your error message

jsmitchell (Tue, 30 Jan 2018 22:04:48 GMT):
@oatmealraisin no current plans, but PRs would certainly be reviewed and considered!

Verticom (Tue, 30 Jan 2018 22:19:04 GMT):
Has joined the channel.

zac (Tue, 30 Jan 2018 22:50:38 GMT):
@jmason900 I would peg all the sawtooth images in that docker-compose file to `:0.8`

zac (Tue, 30 Jan 2018 22:51:07 GMT):
There are a number of steps you will have to take to update that edX code to 1.0

zac (Tue, 30 Jan 2018 22:53:03 GMT):
@tkuhrt Not sure if you know where the docker-compose file they are using for the edX comes from, but the 1.0 release today probably broke that course material. It should have `:latest` switched to `:0.8` for all the sawtooth components.

zac (Tue, 30 Jan 2018 22:53:40 GMT):
If we want the course to be up to date with the 1.0 API, there are some larger changes that would need to happen

tkuhrt (Tue, 30 Jan 2018 22:53:42 GMT):
Okay...this is in github.com/hyperledger/education

tkuhrt (Tue, 30 Jan 2018 22:54:21 GMT):
Let me update this @zac

zac (Tue, 30 Jan 2018 22:54:42 GMT):
cool

szan 1 (Tue, 30 Jan 2018 23:03:04 GMT):
docker exec -it supply-shell bash Once inside the shell, you might try running the one of the update scripts to see live updates populate in an example web app. First navigate to the server directory: cd server/ Then run one of the two provided npm scripts: npm run update-sample-assets npm run update-sample-fish

szan 1 (Tue, 30 Jan 2018 23:03:27 GMT):
not able to find the npm scripts in the following directories

szan 1 (Tue, 30 Jan 2018 23:03:46 GMT):
and is this the one way to populate sample data ?

tkuhrt (Tue, 30 Jan 2018 23:04:29 GMT):
@zac : Would you mind having a glance at this before I merge it: https://github.com/hyperledger/education/pull/19

zac (Tue, 30 Jan 2018 23:06:05 GMT):
Looks good to me

zac (Tue, 30 Jan 2018 23:06:54 GMT):
@szan 1 The base data is populated automatically

zac (Tue, 30 Jan 2018 23:07:13 GMT):
Those scripts run some live updates

zac (Tue, 30 Jan 2018 23:08:46 GMT):
You won't find any script files names "update-sample-assets". It's a script defined in `server/package.json`: https://github.com/hyperledger/sawtooth-supply-chain/blob/master/server/package.json#L16

zac (Tue, 30 Jan 2018 23:09:43 GMT):
if you are in the server directory you should be able to run it with `npm run update-same-assets`

zac (Tue, 30 Jan 2018 23:09:43 GMT):
if you are in the server directory you should be able to run it with `npm run update-sample-assets`

zac (Tue, 30 Jan 2018 23:10:25 GMT):
This is a common way of setting up scripts in Node.js projects.

toddinpal (Wed, 31 Jan 2018 00:50:57 GMT):
Has joined the channel.

bill.cawthra (Wed, 31 Jan 2018 00:58:21 GMT):
anyone ever seen errors like: ``` Failed to create wait certificate: Cannot create wait certificate because timer has timed out ```

bill.cawthra (Wed, 31 Jan 2018 01:12:41 GMT):
actually, if anyone has any recommendations for the poet settings, i'm all ears. currently using: ``` sawset proposal create -k /etc/sawtooth/keys/validator.priv \ sawtooth.poet.target_wait_time=5 \ sawtooth.poet.initial_wait_time=25 \ sawtooth.publisher.max_batches_per_block=100 \ sawtooth.poet.population_estimate_sample_size=500 \ ```

bill.cawthra (Wed, 31 Jan 2018 01:12:41 GMT):
actually, if anyone has any recommendations for the poet settings, i'm all ears. currently using: ``` sawset proposal create -k /etc/sawtooth/keys/validator.priv \ sawtooth.poet.target_wait_time=5 \ sawtooth.poet.initial_wait_time=25 \ sawtooth.publisher.max_batches_per_block=100 \ sawtooth.poet.population_estimate_sample_size=500 \ -o poet-settings.batch ```

jaredcorduan (Wed, 31 Jan 2018 01:45:10 GMT):
thank you for the idea, @pschwarz. I just tried it out on `1.0.1`, and unfortunately I get the error both when a launch the validator with `--scheduler parallel` and with `--scheduler serial`.

jaredcorduan (Wed, 31 Jan 2018 01:51:33 GMT):
strangely, it also seems like everytime the integration test fails due to missing block info, there are also missing settings from the settings txn family that we set.

RiyazPanarwala (Wed, 31 Jan 2018 05:29:16 GMT):
Thanks @amundson. So it is like same as web3 object. (sawtooth-seth) Also it will be more helpful after you publish seth docs.

ranjan008 (Wed, 31 Jan 2018 06:16:34 GMT):
Has joined the channel.

MaritereNieto (Wed, 31 Jan 2018 07:53:55 GMT):
Has joined the channel.

darrylpargeter (Wed, 31 Jan 2018 07:56:07 GMT):
Has joined the channel.

ahmedanees (Wed, 31 Jan 2018 08:52:38 GMT):
Hi @amundson Cannot read property 'TransactionHeader' of undefined on line const transactionHeaderBytes = protobuf.TransactionHeader.encode({ I am using "sawtooth-sdk": "^1.0.1" const {protobuf} = require('sawtooth-sdk/protobuf') const transactionHeaderBytes = protobuf.TransactionHeader.encode({ familyName: 'intkey', familyVersion: '1.0', inputs: ['1cf1266e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7'], outputs: ['1cf1266e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7'], signerPublicKey: signer.getPublicKey().asHex(), // In this example, we're signing the batch with the same private key, // but the batch can be signed by another party, in which case, the // public key will need to be associated with that key. batcherPublicKey: signer.getPublicKey().asHex(), // In this example, there are no dependencies. This list should include // an previous transaction header signatures that must be applied for // this transaction to successfully commit. // For example, // dependencies: ['540a6803971d1880ec73a96cb97815a95d374cbad5d865925e5aa0432fcf1931539afe10310c122c5eaae15df61236079abbf4f258889359c4d175516934484a'], dependencies: [], payloadSha512: createHash('sha512').update(payloadBytes).digest('hex') }).finish() const transaction = new TransactionEncoder(privateKey, { inputs: [PREFIX], outputs: [PREFIX], familyName: FAMILY, familyVersion: VERSION, payloadEncoding: 'application/json', payloadEncoder: p => Buffer.from(JSON.stringify(p)) }).create(payload)

ahmedanees (Wed, 31 Jan 2018 08:53:34 GMT):
can anyone guide me how to fix this issue

OSubachev (Wed, 31 Jan 2018 11:02:46 GMT):
Has joined the channel.

ZeeshanAnis (Wed, 31 Jan 2018 12:56:05 GMT):
Has joined the channel.

RiyazPanarwala (Wed, 31 Jan 2018 12:56:24 GMT):
@ahmedanees have you declared protobuf in client side ??

RiyazPanarwala (Wed, 31 Jan 2018 12:56:44 GMT):
If so then please declare it in server side

RiyazPanarwala (Wed, 31 Jan 2018 13:12:28 GMT):
@amundson Do you have any examples on event subscription in sawtooth 1.0.1

ahmedanees (Wed, 31 Jan 2018 13:17:39 GMT):
yes

ahmedanees (Wed, 31 Jan 2018 13:18:16 GMT):
@RiyazPanarwala const {protobuf} = require('sawtooth-sdk/protobuf')

ahmedanees (Wed, 31 Jan 2018 13:18:35 GMT):
here I declare

ahmedanees (Wed, 31 Jan 2018 13:19:32 GMT):
this is on clint side

RiyazPanarwala (Wed, 31 Jan 2018 13:22:25 GMT):
please declare it on server side

ahmedanees (Wed, 31 Jan 2018 13:23:07 GMT):
Ok let me try

ahmedanees (Wed, 31 Jan 2018 13:35:11 GMT):

detail.txt

ahmedanees (Wed, 31 Jan 2018 13:36:00 GMT):
@RiyazPanarwala I need to set i) Payload ii) Make transaction ii) Send to $.post({ url: `${API_URL}/batches?wait`, data: batchBytes, headers: {'Content-Type': 'application/octet-stream'}, processData: false, // Any data object indicates the Batch was not committed success: ({ data }) => cb(!data), error: () => cb(false) })

ahmedanees (Wed, 31 Jan 2018 13:37:23 GMT):
can you please tell me if i am doing something wrong

ZeeshanAnis (Wed, 31 Jan 2018 13:42:58 GMT):
Hello every one

ZeeshanAnis (Wed, 31 Jan 2018 13:42:58 GMT):
Hello every one.

ZeeshanAnis (Wed, 31 Jan 2018 13:42:58 GMT):
Hello every one.i am trying to publish blockchain nodes on the network.

ZeeshanAnis (Wed, 31 Jan 2018 13:42:58 GMT):
Hello every one.i am trying to publish blockchain nodes on the network.i have two systems running on network with both validator and API

ZeeshanAnis (Wed, 31 Jan 2018 13:55:26 GMT):
i am trying to publish blockchain nodes on the network

ahmedanees (Wed, 31 Jan 2018 13:56:07 GMT):
Can anyone tell me we are trying to peer to nodes on the same server to communicate data from one node to other nodes Below logs appear on terminal is this mean we are csuccessfully connect? [2018-01-31 05:52:12.576 DEBUG gossip] Peers are: ['tcp://192.168.10.9:8800']. Unpeered candidates are: [] [2018-01-31 05:52:13.579 DEBUG gossip] Number of peers (1) below minimum peer threshold (3). Doing topology search. [2018-01-31 05:52:13.596 DEBUG gossip_handlers] Got peers response message from 01d3fdcde1b63a267d8e9ae2b6bca124fd492f4359f37b07d8019c13f679b205e75c2c80b5e5d692c5fb7c5c6c7502396daaa482d8aa266987d4631392206706. Endpoints: ['tcp://192.168.10.11:8800', 'tcp://192.168.10.9:8800']

ahmedanees (Wed, 31 Jan 2018 13:56:07 GMT):
Can anyone tell me we are trying to peer two nodes on the same server to communicate data from one node to other nodes Below logs appear on terminal is this mean we are csuccessfully connect? [2018-01-31 05:52:12.576 DEBUG gossip] Peers are: ['tcp://192.168.10.9:8800']. Unpeered candidates are: [] [2018-01-31 05:52:13.579 DEBUG gossip] Number of peers (1) below minimum peer threshold (3). Doing topology search. [2018-01-31 05:52:13.596 DEBUG gossip_handlers] Got peers response message from 01d3fdcde1b63a267d8e9ae2b6bca124fd492f4359f37b07d8019c13f679b205e75c2c80b5e5d692c5fb7c5c6c7502396daaa482d8aa266987d4631392206706. Endpoints: ['tcp://192.168.10.11:8800', 'tcp://192.168.10.9:8800']

ZeeshanAnis (Wed, 31 Jan 2018 13:57:02 GMT):
i have two systems running on network with both validator and API

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

ZeeshanAnis (Wed, 31 Jan 2018 13:58:06 GMT):

validator.toml.txt

Dan (Wed, 31 Jan 2018 13:58:22 GMT):
@bill.cawthra that wait certificate timeout thing happens for 2 reasons I know of. Possibly one that I don't. 1. No transactions happened for ~30s. (I should correct the log message to `warning` rather than `error` 2. So much processing that the block couldn't be built in ~30s. That's a bad situation. You'd want to make smaller blocks if that's happening. Or make more efficient TPs. 3. Could be something else causing this. I've seen it in logs recently without good explanation but also without it causing obvious problems. For params, it depends on how many nodes you are running. Lemme know and i can provide some better guidance.

Dan (Wed, 31 Jan 2018 14:00:12 GMT):
@ahmedanees that looks connected

ahmedanees (Wed, 31 Jan 2018 14:01:45 GMT):
Now this means if I have created some data on Node1 it will go to node2 now?

ahmedanees (Wed, 31 Jan 2018 14:01:45 GMT):
Now this means if I have created some data(Blocks) on Node1 it will go to node2 now?

Dan (Wed, 31 Jan 2018 14:09:09 GMT):
Yes. (Technically if you send a transaction to one of those nodes, then yes it will circulate the transaction to the other node. Both nodes will try to build a block with it. One of them will win and send the other the block.)

ahmedanees (Wed, 31 Jan 2018 14:10:30 GMT):
ok Thanks a lot , Let me build transaction on node 1 , will ask question if any

ahmedanees (Wed, 31 Jan 2018 14:14:07 GMT):

detail.txt

ahmedanees (Wed, 31 Jan 2018 14:15:20 GMT):
@dan I am follow https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html and try to creat transactionHeaderBytes and gets error on line

ahmedanees (Wed, 31 Jan 2018 14:15:21 GMT):
const signer = CryptoFactory(context).newSigner(privateKey)

ahmedanees (Wed, 31 Jan 2018 14:15:34 GMT):
const signer = CryptoFactory(context).newSigner(privateKey) ^ TypeError: Class constructor CryptoFactory cannot be invoked without 'new'

ahmedanees (Wed, 31 Jan 2018 14:15:41 GMT):
Please guide

Dan (Wed, 31 Jan 2018 14:23:21 GMT):
Sorry there's a typo in the doc. Should read `signer = new CryptoFactory(context).new_signer(private_key)` cianx put a fix in to master yesterday. it won't be reflected in the 1.0 docs until we release our first 1.0 update.

ahmedanees (Wed, 31 Jan 2018 14:26:46 GMT):
ok let me try

ahmedanees (Wed, 31 Jan 2018 14:29:12 GMT):
const signer = new CryptoFactory(context).new_signer(privateKey) ^ TypeError: (intermediate value).new_signer is not a function Resolved by this const signer = new CryptoFactory(context).newSigner(privateKey)

gastonmorixe (Wed, 31 Jan 2018 14:34:53 GMT):
Has joined the channel.

ahmedanees (Wed, 31 Jan 2018 14:40:33 GMT):
also can tell me http://192.168.10.11:8080/batch_statuses?id=8fc820311 show newly created batch with pending status "status": "PENDING"

ahmedanees (Wed, 31 Jan 2018 14:40:55 GMT):
it should be active to list in http://192.168.10.11:8080/batches

ahmedanees (Wed, 31 Jan 2018 14:40:56 GMT):
?

Dan (Wed, 31 Jan 2018 14:58:54 GMT):
@amundson @achenette what do you want to do about doc updates like above? Should we update the published docs independent of point release or only update on the point releases?

jaredcorduan (Wed, 31 Jan 2018 15:42:07 GMT):
@pschwarz, I'm starting to isolate the trouble with `block_info`. Before I should have probably mentioned that we are trying to read the block info from inside a transaction processor, not from the rest api. The rest api always looks good, there is always block info there. The trouble is attempting to write transaction processors which depend on block info. I wrote transaction processor that only does the following: attempt to read block info config, get the latest block number, attempt to read the block info for the latest block, and log what happens. if you send off <10 of these transactions to the rest api, all is lovely. but once you start sending ~15 transactions in rapid fire (not batch together), what happens is this for about one of those 15 txns: the first time the transaction processor attempts to use `apply`, block info config is there and has a latest block, but there is no block info data for that latest block at the associated address. The second time the transaction processor attempts to process the transaction (ie when it is doing the `apply` for consensus), the block info is there.

pschwarz (Wed, 31 Jan 2018 15:43:13 GMT):
Hmm, that sounds like it could be an issue with the context manager. What do you think, @boydjohnson ?

jaredcorduan (Wed, 31 Jan 2018 15:43:49 GMT):
you could easily test this yourself with intkey if you just make it attempt to read block info on the latest block

pschwarz (Wed, 31 Jan 2018 15:44:05 GMT):
:thumbsup:

FrankCastellucci (Wed, 31 Jan 2018 15:47:05 GMT):
@zac - Thank you, the `sawtooth-marketpace` is rich with "how to" and I'm already up and running because if it.

jaredcorduan (Wed, 31 Jan 2018 16:12:26 GMT):
ok, I've got some more clues. Every single time block_info is missing for `latest_block`, it's in the situation where the transaction processor sees the latest block as n, but the transaction actually ends up going into block n+1. whats weird is that all the transactions that successfully make it into block n are earlier transactions which do see info for block n.

Hatchi 1 (Wed, 31 Jan 2018 16:52:38 GMT):
Has joined the channel.

ShowBox 3 (Wed, 31 Jan 2018 17:40:31 GMT):
cant add participant server error only once did i get in successfully this is in is i *this is in marketplace

ShowBox 3 (Wed, 31 Jan 2018 17:41:40 GMT):
no one answered this question in the forumn eithet

pschwarz (Wed, 31 Jan 2018 18:19:44 GMT):
@jaredcorduan Can you open a jira bug ticket on this issue?

pschwarz (Wed, 31 Jan 2018 18:20:31 GMT):
Or, actually, I'll open it, and you can fill in some more details for me.

pschwarz (Wed, 31 Jan 2018 18:23:03 GMT):
I still have a couple of more questions on it too: Do you specify a scheduler? Are you running poet simulator or just dev mode consensus?

pschwarz (Wed, 31 Jan 2018 18:43:20 GMT):
@jaredcorduan https://jira.hyperledger.org/browse/STL-1034

zac (Wed, 31 Jan 2018 18:48:17 GMT):
@ShowBox 3 Are you trying to create a user through the web app?

zac (Wed, 31 Jan 2018 18:48:40 GMT):
Is the server or the validator logging out anything interesting?

jaredcorduan (Wed, 31 Jan 2018 18:52:37 GMT):
@pschwarz thanks for opening that ticket, I'll add some context, thanks! I'm running in dev mode, but I'm happy to try software poet if you think that would be interesting. I've seen the issue in when launching the validator with `--scheduler parallel` and also with `--scheduler serial`.

pschwarz (Wed, 31 Jan 2018 18:54:04 GMT):
Devmode helps narrow it down. I would suggest trying it with PoET simulator. It may be an issue with devmode, which may have some timing issues

pschwarz (Wed, 31 Jan 2018 18:54:04 GMT):
Devmode helps narrow it down. I would suggest trying it with PoET simulator. It may be an issue with devmode, which may be causing some timing issues

jaredcorduan (Wed, 31 Jan 2018 18:58:44 GMT):
is this just a matter of starting the validator with the correct flags?

jaredcorduan (Wed, 31 Jan 2018 19:06:43 GMT):
ah, it's tp settings

zac (Wed, 31 Jan 2018 19:06:47 GMT):
@ShadowBox\ 3

zac (Wed, 31 Jan 2018 19:09:20 GMT):
@ShadowBox%203

zac (Wed, 31 Jan 2018 19:10:08 GMT):
@ShadowBox 3

zac (Wed, 31 Jan 2018 19:10:30 GMT):
Is there no way to ping a user with a space in their name?

zac (Wed, 31 Jan 2018 19:10:43 GMT):
:rocket: leaves much to be desired

bill.cawthra (Wed, 31 Jan 2018 19:23:23 GMT):
@rbuysse i'm going to talk here. feel like i'm DM'ing you too much. :)

bill.cawthra (Wed, 31 Jan 2018 19:23:55 GMT):
for the gallery, just want to verify, the validators ONLY talk on tcp port 8800? i believe some local services (rest_api i believe) use the validator TCP port 4004

romankrav4 (Wed, 31 Jan 2018 19:24:54 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=CLJhN9WRvavLWqKqY) @Dan thanks for clarify

rbuysse (Wed, 31 Jan 2018 19:25:23 GMT):
@bill.cawthra you're correct

bill.cawthra (Wed, 31 Jan 2018 19:26:08 GMT):
anyone here using software poet and testing on multiple validators? i'm seeing a lot of inconsistent behavior and messages/blocks not being published... just a ton of inconsistent behavior.

bill.cawthra (Wed, 31 Jan 2018 19:26:22 GMT):
and i'm trying to figure out how to `get good`

bill.cawthra (Wed, 31 Jan 2018 19:27:18 GMT):
example - stood up a new validator network, with tp_config, tp_validator_registry, block_info TP, smoke_txns TP. - send successful smoke messages. sent them once, twice, three times. - on the 4th one, issues occurred. the first few messages were fairly close together in time (within 5 minutes or so). the last message that failed happened after 15minutes from the cluster being started.

bill.cawthra (Wed, 31 Jan 2018 19:42:01 GMT):
@rbuysse i tried setting the wait setting to 80 (`sawtooth.poet.initial_wait_time`, was set at 800). now i see: ``` failed on-chain validation rules ```

bill.cawthra (Wed, 31 Jan 2018 19:42:08 GMT):
for any block

rbuysse (Wed, 31 Jan 2018 19:43:45 GMT):
hm

rbuysse (Wed, 31 Jan 2018 19:43:50 GMT):
@Dan

bill.cawthra (Wed, 31 Jan 2018 19:47:17 GMT):
think he's in meetings all day. going to hammer at it some more @rbuysse

bill.cawthra (Wed, 31 Jan 2018 19:47:22 GMT):
will let you know what i stumble on

boydjohnson (Wed, 31 Jan 2018 19:50:23 GMT):
@pschwarz @jaredcorduan If I understand this correctly, the transactions that miss block info eventually end up in block n+1 but for block n they are missing the block info. I would think this would be a scheduler - context manager interaction where while the txn is "in-flight" the unscheduling happens and the context id that the transaction processor is asking about doesn't exist and so it looks like there is no state.

jaredcorduan (Wed, 31 Jan 2018 19:51:26 GMT):
exactly. the context/state-store goes totally dark for these vagabonds

jaredcorduan (Wed, 31 Jan 2018 19:51:59 GMT):
tp settings values also dissapear

boydjohnson (Wed, 31 Jan 2018 19:52:25 GMT):
And the same thing happens that they end up in a later block?

jaredcorduan (Wed, 31 Jan 2018 19:53:35 GMT):
I mean for those transactions that are being moved around, tp setting values from long ago that havent changed and aren't changing are also missing from the context

jaredcorduan (Wed, 31 Jan 2018 19:54:42 GMT):
and yea, all is lovely once everything reaches consensus

boydjohnson (Wed, 31 Jan 2018 19:54:48 GMT):
Ah, yeah I would think so if my idea that the context id is gone after unscheduling.

jaredcorduan (Wed, 31 Jan 2018 19:55:01 GMT):
yea

jaredcorduan (Wed, 31 Jan 2018 19:55:39 GMT):
I was trying to figure out if settitngs and block info are special, or if you loose everything not in your own namespace

bill.cawthra (Wed, 31 Jan 2018 19:57:44 GMT):
@rbuysse set it to 800 and error is removed.

bill.cawthra (Wed, 31 Jan 2018 19:58:44 GMT):
but only for 1 transaction. error pops back up on the next smoke test message. bah.

alan (Wed, 31 Jan 2018 20:29:03 GMT):
Has joined the channel.

Dan (Wed, 31 Jan 2018 20:29:35 GMT):
@bill.cawthra initial_wait_time is a lie ;) It's actually the target initial local mean (I am going to the bad place for not relabeling that setting). Don't worry what that means, just always set it to your population * desired interblock time. After 50 to 500 blocks (or whatever you set population_estimate_sample_size to) its irrelevant. It's just a ramp parameter so the network reaches the right statistics. Generally you are more interested in setting target_wait_time. This is the interblock time.

bill.cawthra (Wed, 31 Jan 2018 20:38:16 GMT):
@Dan what i keep struggling with is that the validators justseem to.... stop working. we have a smoke_txns processor that can send messages . then after X amount of time/messages, it stops....

bill.cawthra (Wed, 31 Jan 2018 20:39:39 GMT):
i've found that there's some combination of restarting the validator and tp_config seems to "unstick" things

bill.cawthra (Wed, 31 Jan 2018 20:43:50 GMT):
interesting. there it is. was working well as i was firing smoke tests. then i waited just over 2 minutes, sent a new smoke test, got the error: ``` [2018-01-31 20:42:13.195 ERROR poet_block_publisher] Failed to create wait certificate: Cannot create wait certificate because timer has timed out ``` accross all nodes

bill.cawthra (Wed, 31 Jan 2018 20:48:33 GMT):
all validators are missing the message as well.

Dan (Wed, 31 Jan 2018 20:49:03 GMT):
might be a red herring. was there something like a minute of idle before sending the last transaction?

bill.cawthra (Wed, 31 Jan 2018 20:49:17 GMT):
yes

bill.cawthra (Wed, 31 Jan 2018 20:49:29 GMT):
waited ~ 2minutes before sending

Dan (Wed, 31 Jan 2018 20:51:05 GMT):
ok, so that log message is expected (tho like I mentioned its probably mislabeled as an error). However it might also be a real problem in this case. The node should just create a new timer and try to put that transaction in a block.

bill.cawthra (Wed, 31 Jan 2018 20:51:47 GMT):
once i hit that state, where i've waited too long before sending a new message, i need to restart the validator and tp_config in order to get things going again.

bill.cawthra (Wed, 31 Jan 2018 20:51:59 GMT):
so.... what am i missing?

Dan (Wed, 31 Jan 2018 20:52:23 GMT):
so sending another transaction doesn't work? (it's bad if it loses the first transaction, but I would hope it would at least keep going with the subsequent transactions)

bill.cawthra (Wed, 31 Jan 2018 20:54:12 GMT):
here's what i do: - send message `smoke 1` - view message on all nodes (`smoke 1`). first test good. - wait some time (lets say 2 minutes, haven't solved the actual number where things go bad) - send message `smoke 2` - view messages on all nodes. they all say `smoke 1` and not the new message.

jaredcorduan (Wed, 31 Jan 2018 20:54:56 GMT):
smoke is basically intkey, btw. we made the simplest txn processor we could for testing.

bill.cawthra (Wed, 31 Jan 2018 20:55:04 GMT):
if i choose to wait LESS than the `magical number` (again, still finding this), `smoke 2` will be seen on all nodes.

Dan (Wed, 31 Jan 2018 20:55:34 GMT):
the magic number is probably 30s + target_wait_time

bill.cawthra (Wed, 31 Jan 2018 20:56:01 GMT):
so how do i avoid the resulting affect of the `magical number`?

Dan (Wed, 31 Jan 2018 20:57:38 GMT):
First of all this is an unintended effect so I'll see if I can remedy it. That said, you could help me figure out the effect a little bit. If without waiting long you could send a smoke 3 and that gets through or doesn't get through that will tell me something.

Dan (Wed, 31 Jan 2018 20:58:30 GMT):
i.e. send smoke 1. wait ~2min. Send Smoke 2. Wait 1 second. Send Smoke 3. I expect that Smoke 2 and 3 will get in a block then.

bill.cawthra (Wed, 31 Jan 2018 20:59:01 GMT):
once i hit the magical number, all new smoke txns do not appear until i restart the validator and tp_config.

bill.cawthra (Wed, 31 Jan 2018 20:59:20 GMT):
so once my smoke view stops showing the correct smoke number, all new messages dont appear.

bill.cawthra (Wed, 31 Jan 2018 20:59:52 GMT):
but if i keep sending messages - `1,2,3,4,5,6,7,8,9.....` and don't pause too long, those messages appear on all nodes. it's once i STOP that things get all funky.

Dan (Wed, 31 Jan 2018 21:00:12 GMT):
Ok, that helps. thanks

bill.cawthra (Wed, 31 Jan 2018 21:00:42 GMT):
i'm fully willing to accept i have a bad config. just trying to figure out what i've done wrong with the software poet settings.

bill.cawthra (Wed, 31 Jan 2018 21:00:42 GMT):
i'm fully willing to accept i have a bad config and need to `learn 2 play noob`. just trying to figure out what i've done wrong with the software poet settings.

Dan (Wed, 31 Jan 2018 21:00:53 GMT):
Probably not your settings.

bill.cawthra (Wed, 31 Jan 2018 21:01:06 GMT):
cool.

jaredcorduan (Wed, 31 Jan 2018 21:10:05 GMT):
I've got my integration tests using PoET simulator, thanks to @bill.cawthra. I do _not_ have the same missing block info problem with PoET simulator. which is great!

twilson63 (Wed, 31 Jan 2018 21:41:42 GMT):
Has joined the channel.

pschwarz (Wed, 31 Jan 2018 22:33:24 GMT):
@jaredcorduan I added a comment to the Jira ticket that might explain things better.

jaredcorduan (Thu, 01 Feb 2018 00:50:59 GMT):
Ok, I see, the issue may still be there, just with a much lower probability when running PoET simulator. Thanks for the help troubleshooting this, @pschwarz!

alan (Thu, 01 Feb 2018 01:34:33 GMT):
any talk about Proof of Luck in here?

AdamParker (Thu, 01 Feb 2018 02:18:04 GMT):
Is that where you roll an N sided die?

alan (Thu, 01 Feb 2018 03:53:02 GMT):
https://arxiv.org/abs/1703.05435

alan (Thu, 01 Feb 2018 03:53:12 GMT):
https://dl.acm.org/citation.cfm?id=3007790

alan (Thu, 01 Feb 2018 03:53:49 GMT):
TEE random number generator to choose a consensus leader

JOYELIN (Thu, 01 Feb 2018 05:41:23 GMT):
Has joined the channel.

ShowBox 3 (Thu, 01 Feb 2018 06:17:33 GMT):
i still cant connect to demo marketplace not even with Firefox

ShowBox 3 (Thu, 01 Feb 2018 06:24:19 GMT):
the demo on your site

ShowBox 3 (Thu, 01 Feb 2018 06:40:05 GMT):
is it up?

ShowBox 3 (Thu, 01 Feb 2018 06:40:35 GMT):
check my connection from montreal..canada

ShowBox 3 (Thu, 01 Feb 2018 06:41:09 GMT):
if you log the cinnecti2ons and errors

sibil (Thu, 01 Feb 2018 07:45:24 GMT):
Has joined the channel.

ShowBox 3 (Thu, 01 Feb 2018 08:00:53 GMT):
i see the manager is the client that uses marketplace

ShowBox 3 (Thu, 01 Feb 2018 08:01:49 GMT):
marketplace still doesn't work on the link i provided

ShowBox 3 (Thu, 01 Feb 2018 08:11:19 GMT):
https://sawtooth.hyperledger.org/examples/marketplace.html

ZeeshanAnis (Thu, 01 Feb 2018 09:05:33 GMT):
No one answered my question.so asking again: I am trying to publish blockchain nodes on the network. I have two systems running on network with both validator and API. Attched is my validator.toml file. One more thing what should be my peering type : 1) static or 2) dynamic

ZeeshanAnis (Thu, 01 Feb 2018 09:05:33 GMT):
No one answered my question :( so asking again: I am trying to publish blockchain nodes on the network. I have two systems running on network with both validator and API. Attched is my validator.toml file. One more thing what should be my peering type : 1) static or 2) dynamic. Both systems are using Ubuntu 16.04 and connected through wifi with same router using bridging option in ubuntu

ZeeshanAnis (Thu, 01 Feb 2018 09:06:23 GMT):

validator.toml.txt

gaurang (Thu, 01 Feb 2018 11:14:36 GMT):
I am able to run PoET simulator on two nodes. On node1, I was running my custom Transaction Processor. Node 2 was having just settings-tp + poet-validator-registry-tp

gaurang (Thu, 01 Feb 2018 11:16:16 GMT):
I was able to do transaction on node1, how ever as the node2 was not running the custom transaction processor. Those blocks were not propagated to my node2.

gaurang (Thu, 01 Feb 2018 11:16:55 GMT):
As soon as I attached my custom TP to node2, I was able to see the blocks were also on the node2.

gaurang (Thu, 01 Feb 2018 11:23:05 GMT):
Later I detached the custom TP from node2.

gaurang (Thu, 01 Feb 2018 11:23:37 GMT):
No new transactions were propagating again to node2

gaurang (Thu, 01 Feb 2018 11:23:57 GMT):
So, node1 and node2 both were showing different state.

gaurang (Thu, 01 Feb 2018 11:24:25 GMT):
As soon as I attach the TP to node2, both went in equilibrium state.

gaurang (Thu, 01 Feb 2018 11:24:47 GMT):
Is is expected like this only or It's a bug?

JitendraKumar (Thu, 01 Feb 2018 12:07:58 GMT):
Has joined the channel.

gaurang (Thu, 01 Feb 2018 12:32:00 GMT):
@ZeeshanAnis , Please look at https://github.com/hyperledger/sawtooth-core/tree/master/integration/sawtooth_integration/tests/poet_liveness_data

gaurang (Thu, 01 Feb 2018 12:32:22 GMT):
You will see five validators config. validator-0.toml is seed

gaurang (Thu, 01 Feb 2018 12:32:26 GMT):
and rest are peer.

gaurang (Thu, 01 Feb 2018 12:34:01 GMT):
If you want to put static IP, change the 'validator-*:8800' to your IP

gaurang (Thu, 01 Feb 2018 12:34:01 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Lc3zn5fza7h2Qdujj) @supersergiy Yes, I am also surprised as on multiple validator scenario it may be the case where some TP s/w is not up-to-date and they may not be able to validate the data OR may be generating different state.

gaurang (Thu, 01 Feb 2018 12:34:02 GMT):
=> endpoint = "tcp://validator-4:8800" , seeds = ["tcp://validator-0:8800"] ,

gaurang (Thu, 01 Feb 2018 12:34:23 GMT):
To endpoint = "tcp://1.2.3.4:8800" , seeds = ["tcp://2.3.4.5:8800"]

Dan (Thu, 01 Feb 2018 14:42:23 GMT):
@alan yes that's very much like PoET. We don't have an implementation of proof of luck in Sawtooth. Always interested to hear if there's some new features somewhere that would be cool to add to sawtooth though. We also have a #sawtooth-consensus channel for chatting about these topics.

Dan (Thu, 01 Feb 2018 14:42:50 GMT):
@bill.cawthra do you have time to see if the timeout issue is repeatable with rc5? I'm now wondering if the scheduler bug the other guys were talking about is actually killing this condition too.

Dan (Thu, 01 Feb 2018 14:46:00 GMT):
@gaurang yes, that sounds expected. If a node does not have a transaction processor installed it can't validate those transactions and hence can't update its state for those transitions. The behavior is part of the deployment/upgradeability features. We want nodes to be able to deploy and upgrade transaction processors asynchronously.

agunde (Thu, 01 Feb 2018 15:12:51 GMT):
@ZeeshanAnis From looking above at your original question, yes it looks like the nodes are peered. As far as for static vs dynamic, it depends how you are configuring your network. If you know all of the nodes on the network and want to control how they are peered use static and the peer option. This will peer you node to only those you specify. Dynamic is useful when you wish to join a network where you may not know all the participants but know at least one node, in this case use dynamic and the seeds option. This will request the peers from the seed and build out you possible peers until you are fully peered.

gentios (Thu, 01 Feb 2018 15:20:49 GMT):
Has joined the channel.

ornit17 (Thu, 01 Feb 2018 15:52:50 GMT):
Has joined the channel.

javrevasandeep (Thu, 01 Feb 2018 16:21:51 GMT):
Has joined the channel.

javrevasandeep (Thu, 01 Feb 2018 16:21:54 GMT):
hi guys

javrevasandeep (Thu, 01 Feb 2018 16:23:26 GMT):
I am using hyperledger fabric for a couple of months but now i want to explore swatooth as well. can anyone pls tell me how is it different from hyperledger fabric technically

DhavalShah (Thu, 01 Feb 2018 16:25:50 GMT):
@Dan Is it possible to run a single instance of a TP and register it with multiple validators?

AdamParker (Thu, 01 Feb 2018 16:34:16 GMT):
@DhavalShah the TransactionProcessor base class in Python only takes in one endpoint so I'd wager not. What's the angle?

DhavalShah (Thu, 01 Feb 2018 16:36:47 GMT):
@AdamParker I was just asking from architecture stand point, because if I could, then I would isolate all TPs on a VM, and make them connect to the various validator nodes. And rightly said about python, but in Java I could probably achive this by multi threading

AdamParker (Thu, 01 Feb 2018 16:39:01 GMT):
Oh yea, in Python I'd imagine you could instantiate multiple classes and hand them to threads. That's probably fine. Though I'd be nervous about having all my TPs on a single node. I'd personally like them distributed.

DhavalShah (Thu, 01 Feb 2018 16:44:06 GMT):
Good point :), I think it does depend on how you intend to use sawtooth, on a public network yes, maybe on private or managed network where you want to eradicate the headache of TP versions

javrevasandeep (Thu, 01 Feb 2018 16:59:48 GMT):
@DhavalShah @AdamParker could you pls tell me how sawtooth is different from hyperledger fabric from technical and business perspective and any scenarios difference where to use fabric and sawtooth.

bill.cawthra (Thu, 01 Feb 2018 17:02:17 GMT):
@Dan i can deploy rc5 stuff. sure , let me :hammer: at it

bill.cawthra (Thu, 01 Feb 2018 17:22:08 GMT):
@Dan parsing the debug logs, i see this: ``` 2018-02-01T17:20:08.330 ThreadPoolExecutor-7_0 validation_rule_enforcer DEBUG Transaction at postion 0 is not of type block_info ```

bill.cawthra (Thu, 01 Feb 2018 18:49:25 GMT):
we also see this with block_info: ``` [2018-02-01 18:41:30.555 WARNING core] Invalid Transaction Block number must be one more than previous block's. Got 1 expected 2 ```

jaredcorduan (Thu, 01 Feb 2018 18:50:24 GMT):
I wonder if ^^^ could be related the issue I was seeing with block info and the unscheduler. ie https://jira.hyperledger.org/browse/STL-1034 if block info tried to write block number `n`, but ended up getting unscheduled, maybe it's trying to put that block number `n` into block n+1?

jaredcorduan (Thu, 01 Feb 2018 18:54:06 GMT):
also, is it worrisome that `time.time()` is called here inside the block info txns: https://github.com/hyperledger/sawtooth-core/blob/master/families/block_info/sawtooth_block_info/processor/handler.py#L48 seems like that would cause any validator who is catching up on previous blocks from more than `tolerance` seconds ago would run into trouble.

MicBowman (Thu, 01 Feb 2018 19:00:40 GMT):
we are writing a couple transaction processors that require access to previously committed transactions... yes, the information could be stored in state but it would be... "unwieldy" at best and exceptionally inefficient for storage... other than going through the REST interface for the ledger, is there an api i can use to pull out the data in a transaction by transaction id from within a TP?

Dan (Thu, 01 Feb 2018 19:04:59 GMT):
@amundson @jsmitchell ^

Dan (Thu, 01 Feb 2018 19:08:35 GMT):
sprint planning https://zoom.us/j/4034983298

pschwarz (Thu, 01 Feb 2018 19:32:28 GMT):
@MicBowman There is not an api for that

MicBowman (Thu, 01 Feb 2018 19:46:41 GMT):
@pschwarz any problems with a TP going through the REST api to get that information?

MicBowman (Thu, 01 Feb 2018 19:47:10 GMT):
only problem i can see is that i might have to follow a fairly long chain to get the transaction that i want

Dan (Thu, 01 Feb 2018 19:49:13 GMT):
Maybe you could describe your use case a little bit and there's a pattern that does satisfy it, or people could see a gap for which a new API would be motivated.

MicBowman (Thu, 01 Feb 2018 19:52:01 GMT):
@Dan fine :-)

MicBowman (Thu, 01 Feb 2018 19:53:03 GMT):
A PDO (private data object) goes through a series of state updates that are recorded as transactions... every state is identified by a contract/object id, state hash pair

MicBowman (Thu, 01 Feb 2018 19:53:44 GMT):
a given state update can describe dependencies on the state of other contracts

MicBowman (Thu, 01 Feb 2018 19:54:06 GMT):
so... don't commit Ci:Sj unless Ck:Sl has been committed

MicBowman (Thu, 01 Feb 2018 19:54:33 GMT):
so i need to go through the history of contract Ck to see if any previous transaction has committed that state version

MicBowman (Thu, 01 Feb 2018 19:55:04 GMT):
the commit predicates are on "history"

MicBowman (Thu, 01 Feb 2018 19:55:42 GMT):
so either history has to be captured in state (which could be exceptionally inefficient) or, far better, we use the history that already exist in the ledger (this is a blockchain afterall)

pschwarz (Thu, 01 Feb 2018 20:23:22 GMT):
As long as the rest api is returning something deterministic, then it should be fine (it might just be slow). The deterministic part is the harder to guarantee, in most cases. In Sawtooth's case, the deeper in the chain the transaction is, the more likely that it's committed, therefore more trustworthy. But in most recent blocks, you may have some strange behaviour about that transaction, due to possible short-lived forks

pschwarz (Thu, 01 Feb 2018 20:23:55 GMT):
Sawtooth's REST API case

pschwarz (Thu, 01 Feb 2018 20:23:55 GMT):
Sawtooth's REST API case, I mean

pschwarz (Thu, 01 Feb 2018 20:24:39 GMT):
With third party API's determinism would be impossible to guarantee

Dan (Thu, 01 Feb 2018 20:36:15 GMT):
by state, do you mean a global state root hash, or do you mean a hash of the serialized object this transaction family is storing in global state?

pschwarz (Thu, 01 Feb 2018 20:39:57 GMT):
@jaredcorduan block_info transactions should never get unscheduled

Dan (Thu, 01 Feb 2018 20:40:57 GMT):
@MicBowman let me rephrase.. I understand you to mean that the TP logic needs to reference earlier versions of the object. And those objects are described with an object ID and a hash of the serialized contents of that object at each commit.

Dan (Thu, 01 Feb 2018 20:40:57 GMT):
@MicBowman let me rephrase.. I understand you to mean that the TP logic needs to reference earlier versions of the object. And those objects are described with an object ID (probably a radix addr or mappable to one) and a hash of the serialized contents of that object at each commit. A

Dan (Thu, 01 Feb 2018 20:41:41 GMT):
@EugeneYYY I believe this is pertinent to you too ^

EugeneYYY (Thu, 01 Feb 2018 20:41:41 GMT):
Has joined the channel.

jaredcorduan (Thu, 01 Feb 2018 20:50:14 GMT):
ok, thanks. But you understand why a transactions context could have no block info in the event that it push to the next block?

jaredcorduan (Thu, 01 Feb 2018 20:50:14 GMT):
ok, thanks. But you understand why a transactions context could have no block info in the event that it is pushed to the next block?

amrit.gautam (Thu, 01 Feb 2018 20:57:04 GMT):
Has joined the channel.

pschwarz (Thu, 01 Feb 2018 20:59:59 GMT):
Not exactly yet

pschwarz (Thu, 01 Feb 2018 21:00:05 GMT):
Still trying to figure that part out

jaredcorduan (Thu, 01 Feb 2018 21:01:37 GMT):
ok, thanks!

MicBowman (Thu, 01 Feb 2018 21:03:33 GMT):
@pschwarz in theory... the ledger should be deterministic... at least the history leading up to validating a particular transaction... that kind of is the point of a blockchain :)

MicBowman (Thu, 01 Feb 2018 21:04:04 GMT):
@dan when I say state... i mean the state of an off chain contract, what is going on chain is just a hash

pschwarz (Thu, 01 Feb 2018 21:04:11 GMT):
Right, that part I agree with

oatmealraisin (Thu, 01 Feb 2018 21:04:19 GMT):
Hello! I've stood up sawtooth in OpenShift/Kubernetes based off of the docker compose files

MicBowman (Thu, 01 Feb 2018 21:04:20 GMT):
or really a hash of the previous state and a hash of the current state

oatmealraisin (Thu, 01 Feb 2018 21:04:20 GMT):
https://gist.github.com/oatmealraisin/2cf6772e023b2abd2d6616a29d915679

oatmealraisin (Thu, 01 Feb 2018 21:04:39 GMT):
I'm having an issue getting the transaction processors to connect to the validator

MicBowman (Thu, 01 Feb 2018 21:05:02 GMT):
the TP state is not a good place to store a complete record of the history of an object

oatmealraisin (Thu, 01 Feb 2018 21:05:34 GMT):
In kubernetes, different containers are resolved by their service names. So in this case, the validator is 'validator.svc.cluster.local'. Would this change any of the commands for the validator itself?

pschwarz (Thu, 01 Feb 2018 21:07:48 GMT):
@jaredcorduan the usage of `time.time()` is intended to be used to validate that the block info transaction occurred in the past (i.e. no future times should be considered). The way that it's checked, implies otherwise. That may be another bug

zac (Thu, 01 Feb 2018 21:08:08 GMT):
@oatmealraisin Did you change the validator url? Typically it's `-C tcp://validator:4004`

oatmealraisin (Thu, 01 Feb 2018 21:09:58 GMT):
I was wondering about that one. If its new dns name is validator.svc.cluster.local, would the command become `-C tcp://validator.svc.cluster.local:4004`?

pschwarz (Thu, 01 Feb 2018 21:12:08 GMT):
That's the correct name

jaredcorduan (Thu, 01 Feb 2018 21:13:37 GMT):
ah, ok, so you probably want `time.time() + tolerance >= timestamp`

jaredcorduan (Thu, 01 Feb 2018 21:15:31 GMT):
I can file a ticket for ^^ if that would be helpful

oatmealraisin (Thu, 01 Feb 2018 21:22:43 GMT):
@zac Aside from changing the flags for the transaction processors, are there any flags that need to be changed for the validator?

oatmealraisin (Thu, 01 Feb 2018 21:22:58 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/docker/compose/sawtooth-default.yaml is the file I based the kube infra off of

zac (Thu, 01 Feb 2018 21:25:13 GMT):
You'll probably want to change the `--bind rest-api:8008` for the REST API, and the `--endpoint tcp://validator:8800` for the validator.

zac (Thu, 01 Feb 2018 21:25:54 GMT):
those are both local, so I'm not sure what the kubernetes convention for that is

zac (Thu, 01 Feb 2018 21:26:20 GMT):
on your host machine is would be `--bind localhost:8008` and `--endpoint tcp://localhost:8800`

pschwarz (Thu, 01 Feb 2018 21:36:35 GMT):
That would be really useful :)

oatmealraisin (Thu, 01 Feb 2018 21:40:03 GMT):
@zac Cool that makes sense, thanks. I'm hoping there's not an issue with binding to eth0. That wasn't an issue before the update a few days ago, though

zac (Thu, 01 Feb 2018 21:41:08 GMT):
I don't really know what those bindings do exactly, but I've never had to modify them when doing docker deploys versus deploying on my host machine or in vagrant.

oatmealraisin (Thu, 01 Feb 2018 21:42:06 GMT):
@zac Should the tp's be connecting to 8800? What is that port used for on the validator?

oatmealraisin (Thu, 01 Feb 2018 21:42:17 GMT):
It doesn't seem to get exposed in the docker compose files

zac (Thu, 01 Feb 2018 21:44:26 GMT):
also not clear to me

zac (Thu, 01 Feb 2018 21:44:42 GMT):
it get's used for something obscure

zac (Thu, 01 Feb 2018 21:45:01 GMT):
it's different from the 4004 binding though, which is what the TPs should use

oatmealraisin (Thu, 01 Feb 2018 21:45:55 GMT):
Right, I thought so

jaredcorduan (Thu, 01 Feb 2018 21:46:10 GMT):
ok, I made this ticket for the time.time() issue: https://jira.hyperledger.org/browse/STL-1048

oatmealraisin (Thu, 01 Feb 2018 21:46:30 GMT):
Is there a url I could curl to make sure that the container running the tp can connect to the validator? like /healthz?

pschwarz (Thu, 01 Feb 2018 21:46:46 GMT):
I made this issue for one of @bill.cawthra mentioned items https://jira.hyperledger.org/browse/STL-1049

oatmealraisin (Thu, 01 Feb 2018 21:46:51 GMT):
Right now I know that kube dns is working, I can trace to the ip of the container

amundson (Thu, 01 Feb 2018 21:51:18 GMT):
@pschwarz @MicBowman the rest api suggestion is exceptionally bad. please don't do that.

amundson (Thu, 01 Feb 2018 21:54:04 GMT):
@MicBowman transaction processors implement state transition. we implement a pure S1 = T(S0) function, where T is the transaction processor (S1 being end state, S0 beginning state). We do not implement or support any auxillary information, including S1 = T(S0, B) (where B is previous block chain information).

amundson (Thu, 01 Feb 2018 21:54:04 GMT):
@MicBowman transaction processors implement state transition. we implement a pure S1 = T(S0) function, where T is the transaction processor (S1 being end state, S0 beginning state). We do not implement or support any auxillary information, including S1 = T(S0, B ) (where B is previous block chain information).

amundson (Thu, 01 Feb 2018 21:54:54 GMT):
further, you should make no assumptions that you have the entire chain present. that will likely relatively soon not be the case -- you might only have the last N blocks, for example.

zac (Thu, 01 Feb 2018 21:55:38 GMT):
@oatmealraisin That would be really nice wouldn't it? I don't believe there is any easy way to ping the validator though.

amundson (Thu, 01 Feb 2018 21:59:20 GMT):
@MicBowman kind of related - we have the block info transaction family, which keeps some previous block information on the chain, and to support that we have a (currently internal to the validator) capability to inject relevant transactions into the block (currently at the beginning) to change state such that block number and block hash (with some finite history) are present in state. this is used by Seth to implement the EVM's op code which rely on block information.

oatmealraisin (Thu, 01 Feb 2018 22:04:21 GMT):
@zac Not sure what is happening behind the scenes, but `eth0` might not be a device in the container. Could that be set to anything else, such as 0.0.0.0?

amundson (Thu, 01 Feb 2018 22:04:36 GMT):
a roadmap feature is to externalize the block injector capability to allow arbitrary injection

MicBowman (Thu, 01 Feb 2018 22:07:14 GMT):
@amundson.... we are talking about different states

MicBowman (Thu, 01 Feb 2018 22:07:29 GMT):
i have an off chain contract

amundson (Thu, 01 Feb 2018 22:07:39 GMT):
ok, I'm talking about global state within sawtooth

MicBowman (Thu, 01 Feb 2018 22:07:41 GMT):
i ask an enclave to apply a method to the current state

MicBowman (Thu, 01 Feb 2018 22:08:07 GMT):
the enclave signs a transaction that it invoked method M on input state SI and generated output state SO

MicBowman (Thu, 01 Feb 2018 22:08:19 GMT):
the transaction is sent to the ledger

MicBowman (Thu, 01 Feb 2018 22:08:46 GMT):
so the current state of the contract is Si

MicBowman (Thu, 01 Feb 2018 22:08:53 GMT):
sorry... So

MicBowman (Thu, 01 Feb 2018 22:09:17 GMT):
we may also add to the transaction a set of dependencies that are references to the state of other contracts

MicBowman (Thu, 01 Feb 2018 22:09:33 GMT):
again... this is not the ledger state...

MicBowman (Thu, 01 Feb 2018 22:09:54 GMT):
the ledger state for the contract just says that So (or actually the hash of So) is the current state

MicBowman (Thu, 01 Feb 2018 22:10:30 GMT):
the predicates that we need to enforce for the dependencies are of the form "at some point in the past, state Sj was committed for contract C)

MicBowman (Thu, 01 Feb 2018 22:10:43 GMT):
again... its really hash(Sj)

MicBowman (Thu, 01 Feb 2018 22:11:03 GMT):
so... either i need to record the hash of every state ever committed to contract C

MicBowman (Thu, 01 Feb 2018 22:11:18 GMT):
or i just walk the ledger and find the transactions that i need

MicBowman (Thu, 01 Feb 2018 22:11:24 GMT):
that handled the transitions

MicBowman (Thu, 01 Feb 2018 22:11:37 GMT):
the ledger is *designed* to store history

MicBowman (Thu, 01 Feb 2018 22:11:46 GMT):
so i would MUCH rather look through the ledger

amundson (Thu, 01 Feb 2018 22:13:32 GMT):
"the predicates that we need to enforce for the dependencies" -- is this within the transaction processor code?

MicBowman (Thu, 01 Feb 2018 22:14:12 GMT):
yes

MicBowman (Thu, 01 Feb 2018 22:14:25 GMT):
if you think of it this way... we're building a graph

MicBowman (Thu, 01 Feb 2018 22:14:30 GMT):
and there are predicates on the graph

MicBowman (Thu, 01 Feb 2018 22:14:59 GMT):
btw... we also enforce that the transaction dependencies subsume the contract dependencies

amundson (Thu, 01 Feb 2018 22:15:05 GMT):
when you do that check, is there a natural key to lookup what you need (So or Si?) or is it literally necessary to scan through everything in history?

MicBowman (Thu, 01 Feb 2018 22:15:09 GMT):
so we need the full transaction

MicBowman (Thu, 01 Feb 2018 22:15:22 GMT):
we need to scan

MicBowman (Thu, 01 Feb 2018 22:15:39 GMT):
we can use the transaction dependencies to optimize the scan

MicBowman (Thu, 01 Feb 2018 22:16:06 GMT):
not sure if i can paste a picture here

MicBowman (Thu, 01 Feb 2018 22:16:13 GMT):
but i can send you stuff separately

amundson (Thu, 01 Feb 2018 22:16:15 GMT):
I think I get it

MicBowman (Thu, 01 Feb 2018 22:16:38 GMT):

Clipboard - February 1, 2018 2:16 PM

MicBowman (Thu, 01 Feb 2018 22:16:52 GMT):
the gray boxes are the contract dependencies

MicBowman (Thu, 01 Feb 2018 22:17:06 GMT):
the transaction specifies dependencies for the validator that must subsume those

MicBowman (Thu, 01 Feb 2018 22:17:16 GMT):
the TP must enforce the subsumes ordering

MicBowman (Thu, 01 Feb 2018 22:17:30 GMT):
so then we can walk history through the transaction dependencies

MicBowman (Thu, 01 Feb 2018 22:17:35 GMT):
fairly efficiently

MicBowman (Thu, 01 Feb 2018 22:18:05 GMT):
in my 0.4 implementation... i just make the chain available to the TPs

MicBowman (Thu, 01 Feb 2018 22:18:13 GMT):
it is immutable so there is no sharing issue

amundson (Thu, 01 Feb 2018 22:20:31 GMT):
you should store the information you need in global state and put some thought in how the addressing works so you got some balance of information per-node and the number of nodes you (usually) need to access.

MicBowman (Thu, 01 Feb 2018 22:21:03 GMT):
we may have thousands of previous states per contract

MicBowman (Thu, 01 Feb 2018 22:21:13 GMT):
which would have to be copied each time

MicBowman (Thu, 01 Feb 2018 22:21:23 GMT):
that doesn't strike me as a very good use of disk space

MicBowman (Thu, 01 Feb 2018 22:21:44 GMT):
is there a reason to not make the chain available?

MicBowman (Thu, 01 Feb 2018 22:22:21 GMT):
i mean there is the obvious "its not implemented" which i completely get

MicBowman (Thu, 01 Feb 2018 22:22:36 GMT):
but the "its not a good idea" is something i don't understand

amundson (Thu, 01 Feb 2018 22:23:27 GMT):
accessing state is not less efficient than accessing the block chain, and the data structure behind it is copy-on-write, so if you break it up so you aren't overwriting the same nodes continually it will act reasonably

amundson (Thu, 01 Feb 2018 22:23:49 GMT):
re: reason for the pure state transition - yes, I'll attempt to explain

MicBowman (Thu, 01 Feb 2018 22:23:58 GMT):
i need to append a string to a list on every commit

MicBowman (Thu, 01 Feb 2018 22:24:17 GMT):
so the field associated with state (which may have thousands of entries) gets copied

MicBowman (Thu, 01 Feb 2018 22:24:21 GMT):
since it was written

zac (Thu, 01 Feb 2018 22:24:55 GMT):
Why not do each entry at its own address?

MicBowman (Thu, 01 Feb 2018 22:25:02 GMT):
what entry?

MicBowman (Thu, 01 Feb 2018 22:25:09 GMT):
every contract already has an entry

zac (Thu, 01 Feb 2018 22:25:09 GMT):
In your list

MicBowman (Thu, 01 Feb 2018 22:25:13 GMT):
then every update

MicBowman (Thu, 01 Feb 2018 22:25:25 GMT):
i would have to enumerate all entires

MicBowman (Thu, 01 Feb 2018 22:25:34 GMT):
which wasn't possible last time i looked

MicBowman (Thu, 01 Feb 2018 22:25:44 GMT):
enumerate in order

zac (Thu, 01 Feb 2018 22:27:05 GMT):
I am jumping in part way through, so I might be missing something crucial, but we've done apps that split lists over multiple nodes in state.

zac (Thu, 01 Feb 2018 22:27:51 GMT):
In particular because we didn't want to have to read/write thousands of entries all the time.

MicBowman (Thu, 01 Feb 2018 22:28:02 GMT):
i need an ordered list that is appended on every transaction for that object and the list last "for ever" (so it is not uncommon to have 1000's of entries in the list)

MicBowman (Thu, 01 Feb 2018 22:29:09 GMT):
and... i'm sure i could encode it... but why not just use the log for what its good for?

MicBowman (Thu, 01 Feb 2018 22:29:31 GMT):
the point of having a blockchain is that its an immutable log

amundson (Thu, 01 Feb 2018 22:33:24 GMT):
there are a few reasons why we have enforced pure state transition (it is not an unimplemented feature, quite the reverse). 1) the schedulers make assumptions about state changes and state accesses. they do not know anything about block information. this allows cross-block parallelism (not implemented, but in a future journal implementation it will). 2) we plan to implement state checkpointing. when we do that, we literally will throw away old chain and state. further, some nodes may state at the checkpoint and move forward from there, never having seen the entire chain. 3) we don't currently use old chain information as we are running (or even during restarts), except for fork resolution; we assume if we validated it once, it's good. that leaves us the option of purging old blocks out of local validator history (unclear the rules with respect to consensus that fork -- ideally some limit on how far back we will fork (which might require state checkpointing), but easy for consensus with finality); this will potentially allow us to constrain disk space to what is needed to process transactions against current state.

zac (Thu, 01 Feb 2018 22:33:32 GMT):
Well, the addresses are "ordered" (00...ff), so that's totally doable. I don't have as much of an opinion on whether or not you should.

MicBowman (Thu, 01 Feb 2018 22:35:20 GMT):
pure state transition is great if you have finality... but that also means that you lose decentralization. that's a choice certainly. though it seems that its a choice to move away from sawtooth's greatest strenghts

MicBowman (Thu, 01 Feb 2018 22:35:40 GMT):
the other approach is to garbage collect old state because it can be replayed through the log

MicBowman (Thu, 01 Feb 2018 22:35:50 GMT):
thats the approach we've taken in the research code

MicBowman (Thu, 01 Feb 2018 22:35:56 GMT):
so the log win

MicBowman (Thu, 01 Feb 2018 22:35:58 GMT):
wins

MicBowman (Thu, 01 Feb 2018 22:36:35 GMT):
and fork resolution doesn't really affect access since each transaction is evaluated in the context of whatever the current chain is

MicBowman (Thu, 01 Feb 2018 22:36:47 GMT):
so the history is immutable from that transactions perspective

MicBowman (Thu, 01 Feb 2018 22:37:14 GMT):
to be clear... we've been purging old blocks for a long time

amundson (Thu, 01 Feb 2018 22:37:18 GMT):
@MicBowman in sawtooth supply chain, we keep a time series database in-state (essentially), and for that we chose to use a ring buffer. you could use a similar incrementing address mechanism.

MicBowman (Thu, 01 Feb 2018 22:38:24 GMT):
and... let me just verify my other assumption... you don't garbage collect old state right now, right?

amundson (Thu, 01 Feb 2018 22:38:54 GMT):
not yet, but soon

MicBowman (Thu, 01 Feb 2018 22:39:40 GMT):
uggh

amundson (Thu, 01 Feb 2018 22:40:19 GMT):
(very soon)

MicBowman (Thu, 01 Feb 2018 22:40:20 GMT):
a lot of what we're trying to do moves almost all validation off chain... validators are dirt simple

MicBowman (Thu, 01 Feb 2018 22:40:34 GMT):
no semantics other than graph validation

jsmitchell (Thu, 01 Feb 2018 22:40:41 GMT):
sounds like a client?

MicBowman (Thu, 01 Feb 2018 22:40:46 GMT):
client?

MicBowman (Thu, 01 Feb 2018 22:40:53 GMT):
no

jsmitchell (Thu, 01 Feb 2018 22:40:58 GMT):
yeah, not a transaction processor

MicBowman (Thu, 01 Feb 2018 22:40:59 GMT):
its an off chain contract

amundson (Thu, 01 Feb 2018 22:41:07 GMT):
a client from a sawtooth validator perspective, and I think that's what Mic is saying

MicBowman (Thu, 01 Feb 2018 22:41:22 GMT):
the off chain contract processor is a client

amundson (Thu, 01 Feb 2018 22:41:24 GMT):
it's executed and then the transaction contains the result

MicBowman (Thu, 01 Feb 2018 22:41:31 GMT):
it just uses the ledger as a registry of enclaves

MicBowman (Thu, 01 Feb 2018 22:41:42 GMT):
and then records an anonymized state transition

jsmitchell (Thu, 01 Feb 2018 22:41:52 GMT):
clients are not restricted in terms of only querying state

MicBowman (Thu, 01 Feb 2018 22:42:09 GMT):
true.. but the TP has to enforce graph primitives

MicBowman (Thu, 01 Feb 2018 22:42:18 GMT):
so think of the transactions as adding nodes to a graph

MicBowman (Thu, 01 Feb 2018 22:42:27 GMT):
there are predicates on the structure of the graph

MicBowman (Thu, 01 Feb 2018 22:42:31 GMT):
that have to be enforced

MicBowman (Thu, 01 Feb 2018 22:42:41 GMT):
which mean i need to be able to walk the graph

jsmitchell (Thu, 01 Feb 2018 22:42:41 GMT):
yep, that graph would need to exist in state

MicBowman (Thu, 01 Feb 2018 22:42:56 GMT):
the transaction log works perfectly fine (our state is extremely small)

MicBowman (Thu, 01 Feb 2018 22:42:59 GMT):
i mean TP state

jsmitchell (Thu, 01 Feb 2018 22:43:03 GMT):
considering that TPs are state transition functions

MicBowman (Thu, 01 Feb 2018 22:43:05 GMT):
and we just use the chain

jsmitchell (Thu, 01 Feb 2018 22:43:14 GMT):
not state + universe transition functions

MicBowman (Thu, 01 Feb 2018 22:43:24 GMT):
huh?

MicBowman (Thu, 01 Feb 2018 22:43:57 GMT):
i'm transitioning the state of a graph

MicBowman (Thu, 01 Feb 2018 22:44:17 GMT):
but a flat state is not a particularly efficient represntation... the transaction log is

amundson (Thu, 01 Feb 2018 22:44:41 GMT):
flat state?

MicBowman (Thu, 01 Feb 2018 22:44:46 GMT):
the transaction log works well for capturing the links between nodes

amundson (Thu, 01 Feb 2018 22:45:03 GMT):
it's a radix tree with copy-on-write properties

MicBowman (Thu, 01 Feb 2018 22:45:04 GMT):
a lot like UTXO

MicBowman (Thu, 01 Feb 2018 22:45:08 GMT):
i know that

MicBowman (Thu, 01 Feb 2018 22:45:27 GMT):
but it is not particularly good at storing dynamic nodes

MicBowman (Thu, 01 Feb 2018 22:45:48 GMT):
where nodes ref other nodes & need to follow paths through those nodes

MicBowman (Thu, 01 Feb 2018 22:46:21 GMT):
although... that might work

MicBowman (Thu, 01 Feb 2018 22:46:44 GMT):
make every be an address in the tree

MicBowman (Thu, 01 Feb 2018 22:46:50 GMT):
with references to others

jsmitchell (Thu, 01 Feb 2018 22:46:56 GMT):
there is nothing about the design of state that says that you have to stick everything at a single address

MicBowman (Thu, 01 Feb 2018 22:46:57 GMT):
no way i could enumerate the read set

jsmitchell (Thu, 01 Feb 2018 22:47:08 GMT):
you can partition the addresses

MicBowman (Thu, 01 Feb 2018 22:47:14 GMT):
but i know that all nodes in the current graph are always immutable

MicBowman (Thu, 01 Feb 2018 22:47:42 GMT):
do i still need to pre-fetch everything i'm going to use? or can i follow links?

MicBowman (Thu, 01 Feb 2018 22:48:11 GMT):
so if one has a reference to another... can it load it dynamically?

amundson (Thu, 01 Feb 2018 22:50:47 GMT):
if you really want block access semantics, then derive your node address from the block number or block hash. it would be very similar storage-wise to the block chain itself. you are only incurring write penalties, reads are similar to the block store itself.

MicBowman (Thu, 01 Feb 2018 22:51:08 GMT):
i don't want block semantics

MicBowman (Thu, 01 Feb 2018 22:51:20 GMT):
that's not what i'm asking

MicBowman (Thu, 01 Feb 2018 22:51:29 GMT):
i want to be able to fetch a transaction by id

MicBowman (Thu, 01 Feb 2018 22:51:37 GMT):
as an alternative..

MicBowman (Thu, 01 Feb 2018 22:52:02 GMT):
i could image having one address in the TP state for each combination

MicBowman (Thu, 01 Feb 2018 22:52:34 GMT):
and then add values to that which are references to other addresses (which correspond to the dependent references)

MicBowman (Thu, 01 Feb 2018 22:52:47 GMT):
so each address corresponds to a node in the graph

MicBowman (Thu, 01 Feb 2018 22:52:59 GMT):
but that means i have to walk the connections between them

MicBowman (Thu, 01 Feb 2018 22:53:13 GMT):
i KNOW that all of the other addresses are immutable

MicBowman (Thu, 01 Feb 2018 22:53:23 GMT):
so everything is read only

MicBowman (Thu, 01 Feb 2018 22:53:33 GMT):
other than the current node

amundson (Thu, 01 Feb 2018 22:54:28 GMT):
ok, I thought you had to scan and couldn't look up graph nodes directly by an index

amundson (Thu, 01 Feb 2018 22:55:23 GMT):
re:caching that's going to be very very complex if you need to know whether something _doesn't_ exist in the current context

amundson (Thu, 01 Feb 2018 22:55:57 GMT):
seems open to issues, but might be solvable with great care

MicBowman (Thu, 01 Feb 2018 22:56:52 GMT):
bad news is that i cannot enumerate what i will need to read

amundson (Thu, 01 Feb 2018 22:57:12 GMT):
you can set a wildcard on that namespace

amundson (Thu, 01 Feb 2018 22:57:20 GMT):
read wildcards aren't that bad

MicBowman (Thu, 01 Feb 2018 22:57:26 GMT):
the wildcard might be more or less "all nodes"

oatmealraisin (Thu, 01 Feb 2018 22:57:27 GMT):
on 1.0.1, is `sawadm` a thing?

amundson (Thu, 01 Feb 2018 22:58:07 GMT):
yes, you can just specify a prefix (namespace) for the input field

jsmitchell (Thu, 01 Feb 2018 22:58:18 GMT):
@MicBowman can't the transaction processor just confirm the incremental dependencies, and rely on the prior iteration having done the same?

MicBowman (Thu, 01 Feb 2018 22:58:25 GMT):
no

MicBowman (Thu, 01 Feb 2018 22:58:45 GMT):
let me see if i can show you more...

MicBowman (Thu, 01 Feb 2018 22:58:58 GMT):

Clipboard - February 1, 2018 2:58 PM

MicBowman (Thu, 01 Feb 2018 22:59:10 GMT):
so thats an example of a fair exchange protocol

MicBowman (Thu, 01 Feb 2018 22:59:23 GMT):
two participants

MicBowman (Thu, 01 Feb 2018 22:59:35 GMT):
each holds a container for blue marbles and a container for red marbles

amundson (Thu, 01 Feb 2018 22:59:44 GMT):
another roadmap feature (maybe further out) is to record inputs/outputs that were done during publishing, so we can get 100% parallelization efficiency when processing the block in non-publishing contexts.

MicBowman (Thu, 01 Feb 2018 23:00:13 GMT):
there are dependencies on the various contract transitions that are necessary to ensure that the givers are escrowed prior to being exchanged

amundson (Thu, 01 Feb 2018 23:00:14 GMT):
seth, for example, provides no real input/output hints, and so everything is serial

amundson (Thu, 01 Feb 2018 23:00:23 GMT):
(within it's namespace)

zac (Thu, 01 Feb 2018 23:00:30 GMT):
@oatmealraisin yes, `sawadm`, `sawset`, and . . . I wanna say `sawnet`

MicBowman (Thu, 01 Feb 2018 23:01:28 GMT):
what goes into the TP is something like:

MicBowman (Thu, 01 Feb 2018 23:02:05 GMT):
which only gets committed if the current state of contract I is hash(Sj) and that hash(Sk) is somewhere in the history of Contract J

MicBowman (Thu, 01 Feb 2018 23:02:18 GMT):
other predicates are more expressive (we can add tags to nodes)

MicBowman (Thu, 01 Feb 2018 23:03:04 GMT):
anyway... let me talk to @EugeneYYY about changing the addressing... it might get ugly... or it might not

MicBowman (Thu, 01 Feb 2018 23:03:18 GMT):
would still prefer gettransaction(ID)

MicBowman (Thu, 01 Feb 2018 23:03:20 GMT):
;-)

jsmitchell (Thu, 01 Feb 2018 23:03:22 GMT):
how big are your hashes?

oatmealraisin (Thu, 01 Feb 2018 23:03:28 GMT):
@zac thanks, I just found out I was using 1.0.0 instead of 1.0.1

MicBowman (Thu, 01 Feb 2018 23:03:28 GMT):
256

jsmitchell (Thu, 01 Feb 2018 23:08:08 GMT):
so it ends up being an existence check for a hash associated with a contract

zac (Thu, 01 Feb 2018 23:08:28 GMT):
Any 1.0.x should have those CLI commands

jsmitchell (Thu, 01 Feb 2018 23:08:55 GMT):
you could partition the namespace by contract and then subdivide the remainder of the address space under that contract by the highest order bytes of the hash

jsmitchell (Thu, 01 Feb 2018 23:09:08 GMT):
so you would have a set of hash pages that would be relatively infrequently written to

oatmealraisin (Thu, 01 Feb 2018 23:14:34 GMT):
@zac Would the order of the flags change anything?

MicBowman (Thu, 01 Feb 2018 23:21:12 GMT):
@jsmitchell a bit more complicated than that... but yes. biggest problem is that there might be thousands of those hashes for a given contract

oatmealraisin (Thu, 01 Feb 2018 23:26:47 GMT):
@zac thanks so much for all the help, I've figured out the issues

oatmealraisin (Thu, 01 Feb 2018 23:27:31 GMT):
The way I was starting the tp's was with a `bash -c intkey-tp-python ...`, which was tokenized in the Kubernetes Deployments into `bash` `-c` `intkey-tp-python` `-C` ..

jsmitchell (Thu, 01 Feb 2018 23:43:49 GMT):
@MicBowman thousands of hashes representing the contract's history, but only one hash write per update, right?

jsmitchell (Thu, 01 Feb 2018 23:45:20 GMT):
with enough bits representing the pages, and a decent estimate of the number of versions (hashes) over the lifetime of the contract, you could be fairly sure that no single page would get unreasonable large

jsmitchell (Thu, 01 Feb 2018 23:45:20 GMT):
with enough bits representing the pages, and a decent estimate of the number of versions (hashes) over the lifetime of the contract, you could be fairly sure that no single page would get unreasonably large

jsmitchell (Thu, 01 Feb 2018 23:45:31 GMT):
where each page contains a sorted list of the full hashes

jsmitchell (Thu, 01 Feb 2018 23:45:54 GMT):
plus, with an encoding scheme like this, the client could construct the full input address that the TP would need to read

adokce (Fri, 02 Feb 2018 01:15:56 GMT):
Has joined the channel.

bill.cawthra (Fri, 02 Feb 2018 01:21:52 GMT):
@oatmealraisin you're running in kubernetes?

bill.cawthra (Fri, 02 Feb 2018 01:21:57 GMT):
that's bad ass :)

A0107400 (Fri, 02 Feb 2018 01:55:15 GMT):
Hi all, I am running into this while taking the hyperledger course on edx: sawtooth-rest-api-default | [2018-02-01 22:09:42.266 WARNING route_handlers] Timed out while waiting for validator response while trying to verify the connection with curl http://rest-api:8080/blocks

A0107400 (Fri, 02 Feb 2018 01:55:19 GMT):
any ideas?

vjuge (Fri, 02 Feb 2018 08:01:44 GMT):
Has joined the channel.

bogomazov (Fri, 02 Feb 2018 08:50:38 GMT):
Has joined the channel.

bogomazov (Fri, 02 Feb 2018 09:09:24 GMT):
Hey guys, I am having two issues: 1. Every time I restart running containers using Docker compose with `sawtooth-default.yaml`, sawtooth-shell and sawtooth-validator containers try to write new pub and priv keys using sawtooth keygen in entrypount. So it throws an exception and prompts to run it with --force flag. So I did it to fix the issue temporarily, however, it should not throw an exception out of the program scope or example entrypoint should handle this situation properly, since overwriting pub and private key every time container restarted is not a good thing. 2. I am trying to play with xo game, however it calls rest-api (which is located in separate container) using localhost:8008 which is inaccessible from shell container. I assume that such behaviour specified in core sawtooth, so I would rather adopt docker in `sawtooth-default.yaml` then change core sawtooth handler. Please help :)

bogomazov (Fri, 02 Feb 2018 09:09:24 GMT):
Hey guys, I am having two issues: 1. Every time I restart running containers using Docker compose with `sawtooth-default.yaml`, sawtooth-shell and sawtooth-validator containers try to write new pub and priv keys using sawtooth keygen in entrypount. So it throws an exception and prompts to run it with --force flag. So I did it to fix the issue temporarily, however, it should not throw an exception out of the program scope or example entrypoint should handle this situation properly, since overwriting pub and private key every time container is restarted - not a good thing. 2. I am trying to play with xo game, however it calls rest-api (which is located in separate container) using localhost:8008 which is inaccessible from the shell container. I assume that logic is specified in core sawtooth, so I would rather adopt docker settings in `sawtooth-default.yaml` then change core sawtooth handler. Please help :)

bogomazov (Fri, 02 Feb 2018 09:09:24 GMT):
Hey guys, I am having two issues: 1. Every time I restart running containers using Docker compose with `sawtooth-default.yaml`, sawtooth-shell and sawtooth-validator containers try to write new pub and priv keys using sawtooth keygen in entrypount. So it throws an exception and prompts to run it with --force flag. So I did it to fix the issue temporarily, however, it should not throw an exception out of the program scope or example entrypoint should handle this situation properly, since overwriting pub and private key every time container is restarted - not a good thing. 2. I am trying to play with xo game, however it calls rest-api (which is located in separate container) using 127.0.0.1:8008 which is inaccessible from the shell container. I assume that logic is specified in core sawtooth, so I would rather adopt docker settings in `sawtooth-default.yaml` then change core sawtooth handler. Please help :)

ForwardMomentum (Fri, 02 Feb 2018 09:45:56 GMT):
Has joined the channel.

ForwardMomentum (Fri, 02 Feb 2018 10:12:23 GMT):
Hi, @bogomazov, mb it will be useful for you - about 2: I tried to use --url to set validator api address (like ```xo create game --username jack --url localhost:222```) then xo script started requesting for specified address

ForwardMomentum (Fri, 02 Feb 2018 10:12:23 GMT):
Hi, @bogomazov, mb it will be useful for you - about 2: I tried to use --url to set validator api address like ```xo create game --username jack --url localhost:222``` then xo script started requesting for specified address, in your docker-compose case it can be like 'rest-api:8008') but I don't know how much this way is correct, maybe it should be configured from compose file

tristanperalta (Fri, 02 Feb 2018 10:38:13 GMT):
is it possible that we list all previous transactions for a particular account?

bogomazov (Fri, 02 Feb 2018 12:36:38 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=vtFCACkCG26dxcLNC) @ForwardMomentum the url is set in regards to the validator's url as far as I am concerned, however, rest-api is different container, thanks though

ZeeshanAnis (Fri, 02 Feb 2018 12:41:42 GMT):
@gaurang Got it. Thanks for the answer

ZeeshanAnis (Fri, 02 Feb 2018 12:41:42 GMT):
@gaurang Thanks for the answer

ZeeshanAnis (Fri, 02 Feb 2018 12:42:09 GMT):
@agunde Thanks for the reply

ZeeshanAnis (Fri, 02 Feb 2018 12:42:09 GMT):
@agunde Got it. Thanks for the reply

RadW2020 (Fri, 02 Feb 2018 12:52:08 GMT):
Has joined the channel.

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change and when this batch will be added to the batch list http://x.x.x.x:8080/batches

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change and when this batch will be added to the batch list http://x.x.x.x:8080/batches

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change and when this batch will be added to the batch list http://x.x.x.x:8080/batches

ZeeshanAnis (Fri, 02 Feb 2018 12:58:24 GMT):
I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change and when this batch will be added to the batch list http://x.x.x.x:8080/batches

ZeeshanAnis (Fri, 02 Feb 2018 13:09:44 GMT):
One more question after connecting two machines on network.I got peers added message but with below message: Number of peers (1) below minimum peer threshold (3). Doing topology search. Is this OK or should i need minimum 3 peers on network to move forward

denofernandes (Fri, 02 Feb 2018 13:36:11 GMT):
Has joined the channel.

Dan (Fri, 02 Feb 2018 13:44:44 GMT):
@ZeeshanAnis if you only have a couple nodes then its better to do static peering. Check out https://sawtooth.hyperledger.org/docs/core/releases/latest/sysadmin_guide/configuring_sawtooth/validator_configuration_file.html

Dan (Fri, 02 Feb 2018 13:45:21 GMT):
you can also set the peering mode using command line options when starting sawtooth. The config file is probably better though.

Dan (Fri, 02 Feb 2018 13:47:42 GMT):
so that's `peering = "static"` and `peers = ["tcp://127.0.0.1:8801"]` where you use the IP address of the other node. If you have 3 nodes, then you add a comma and list another URL within the []s.

Dan (Fri, 02 Feb 2018 13:47:42 GMT):
so that's `peering = "static"` and `peers = ["tcp://127.0.0.1:8801"]` where you use the IP address and port of the other node. If you have 3 nodes, then you add a comma and list another quoted URL within the []s.

Dan (Fri, 02 Feb 2018 13:47:42 GMT):
so that's `peering = "static"` and `peers = ["tcp://127.0.0.1:8801"]` where you use the IP address of the other node. If you have 3 nodes, then you add a comma and list another quoted URL within the []s.

ForwardMomentum (Fri, 02 Feb 2018 13:56:15 GMT):
Guys, I've made some questions in post on stackoverflow - please check out - https://stackoverflow.com/questions/48584181/transaction-processor-gossip-in-hyperledger-sawtooth-distibuted-mode

ForwardMomentum (Fri, 02 Feb 2018 13:57:05 GMT):
It's about manipulatoins with transaction processors on working network

RishiKr (Fri, 02 Feb 2018 14:06:41 GMT):
Has joined the channel.

benoit.razet (Fri, 02 Feb 2018 14:13:26 GMT):
I see a typo in the doc about the `block_info` transaction family: https://sawtooth.hyperledger.org/docs/core/releases/latest/transaction_family_specifications/blockinfo_transaction_family.html

benoit.razet (Fri, 02 Feb 2018 14:13:51 GMT):
`'00b10c01' + hex(block_num)[2:].zfill(62))`

benoit.razet (Fri, 02 Feb 2018 14:13:57 GMT):
should be

benoit.razet (Fri, 02 Feb 2018 14:14:10 GMT):
`'00b10c00' + hex(block_num)[2:].zfill(62))`

benoit.razet (Fri, 02 Feb 2018 14:14:41 GMT):
If I did not misread the code of the `block_info`

Dan (Fri, 02 Feb 2018 14:31:33 GMT):
I think you are right

Dan (Fri, 02 Feb 2018 14:31:33 GMT):
I think that's ok. `00` == `metadata namespace` and `01` == `block info namespace` However I was just speaking with someone yesterday about the overall readability. I think the language above that refers to a modular operation which isn't then reflected in the example.

ZeeshanAnis (Fri, 02 Feb 2018 15:37:21 GMT):
Thanks @Dan . One more thing need to ask I am following below url: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html#creating-a-private-key-and-signer And after Submitting Batches to the Validator when i click the link to check batch_statuses like below http://x.x.x.x:8080/batch_statuses?id=b3ab76462.... it shows me data with pending status status "PENDING" how its status will change and when this batch will be added to the batch list http://x.x.x.x:8080/batches

pschwarz (Fri, 02 Feb 2018 15:40:56 GMT):
The status will show as COMMITTED

zac (Fri, 02 Feb 2018 15:48:28 GMT):
@bogomazov Our Docker approach continues to evolve. Checkout what Boyd implemented for Sawtooth Marketplace: https://github.com/hyperledger/sawtooth-marketplace/blob/master/docker-compose.yaml#L160

zac (Fri, 02 Feb 2018 15:49:08 GMT):
Basically he just added an `if` so we can `up` after a container already exists without `--force`.

ZeeshanAnis (Fri, 02 Feb 2018 16:06:35 GMT):
@pschwarz Sorry could not get your answer

ZeeshanAnis (Fri, 02 Feb 2018 16:06:35 GMT):
@pschwarz Sorry could not get your answer Can you explain a little?

pschwarz (Fri, 02 Feb 2018 16:07:46 GMT):
Once a batch has a status of COMMITTED, it has been included in a block, and therefore will show up in the list of batches returned by that endpoint.

pschwarz (Fri, 02 Feb 2018 16:10:31 GMT):
`/batches` only returns the batches that have been committed in the chain. `/batch_statuses` deals with batches that have been submitted, are pending, committed or rejected (the last state is only valid until the rejected batch falls out of a timed bucket of rejected batches - once that happens, the batch will be considered unknown).

pschwarz (Fri, 02 Feb 2018 16:12:13 GMT):
You can add the parameter `wait=` to `/batch_statuses` and it will not return a result until the batch has been committed, rejected, or the wait times out, whichever is first.

pschwarz (Fri, 02 Feb 2018 16:12:55 GMT):
More information on the REST API can be found here: https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/rest_api/endpoint_specs.html

pschwarz (Fri, 02 Feb 2018 16:12:55 GMT):
More information on the REST API can be found here: https://sawtooth.hyperledger.org/docs/core/releases/latest/rest_api/endpoint_specs.html

ZeeshanAnis (Fri, 02 Feb 2018 16:27:10 GMT):
@pschwarz Thanks

qqdd (Fri, 02 Feb 2018 17:15:33 GMT):
Has joined the channel.

qqdd (Fri, 02 Feb 2018 17:17:15 GMT):
Hello, I have a question about the RESTful API. Is it extendable? Can i define my own routes?

jsmitchell (Fri, 02 Feb 2018 17:28:45 GMT):
@qqdd yes. in fact, a great pattern is to build a set of application specific endpoints which talk to the zmq interface directly

jsmitchell (Fri, 02 Feb 2018 17:28:52 GMT):
here is an example from sawtooth marketplace: https://github.com/hyperledger/sawtooth-marketplace/tree/master/rest_api/api

qqdd (Fri, 02 Feb 2018 17:33:24 GMT):
thus effectively I can extend the yaml file accordingly to the OpenAPI standard. How do I let Sawtooth know which yaml file to parse?

jsmitchell (Fri, 02 Feb 2018 17:34:13 GMT):
@zac ^

zac (Fri, 02 Feb 2018 17:40:40 GMT):
@qqdd To be clear, you can build your _own_ REST API

zac (Fri, 02 Feb 2018 17:40:59 GMT):
You could also get into the Python code and modify it of course

qqdd (Fri, 02 Feb 2018 17:41:11 GMT):
Yes, that's cool I realized that by looking at the example! it's great.

zac (Fri, 02 Feb 2018 17:41:16 GMT):
There is no mechanism to turn the YAML spec into routes automatically though

zac (Fri, 02 Feb 2018 17:41:23 GMT):
(though it does get turned into docs)

zac (Fri, 02 Feb 2018 17:41:45 GMT):
Awesome! Glad you like it.

zac (Fri, 02 Feb 2018 17:43:11 GMT):
If you want some examples of more specific REST APIs, you can checkout some of our example projects: Marketplace (Python Sanic): https://github.com/hyperledger/sawtooth-marketplace Supply Chain(JavaScript Node.js): https://github.com/hyperledger/sawtooth-supply-chain

qqdd (Fri, 02 Feb 2018 17:46:15 GMT):
thanks, I am going to have a closer look

zac (Fri, 02 Feb 2018 17:51:38 GMT):
If you look at the docker compose files, you'll notice those projects "extend" the default REST API, by just running it in a Docker container

zac (Fri, 02 Feb 2018 17:52:10 GMT):
So it runs as is, and there is a separate API with its own routes

zac (Fri, 02 Feb 2018 17:53:21 GMT):
Of course, in this case the default REST API is only there for debugging purposes. The apps don't use it. But in theory you could hook it up with some proxying and make it look like a single API.

qqdd (Fri, 02 Feb 2018 18:02:20 GMT):
All right, my goal is to get some custom routes for starters. Another thing: with the subscription model, is there any way to enforce authz? say I do not want to allow subscribe anyone on changes in some part of the state tree.

zac (Fri, 02 Feb 2018 18:05:51 GMT):
Not that I know of

zac (Fri, 02 Feb 2018 18:06:05 GMT):
But I am not generally familiar with the way on-chain permissioning works

zac (Fri, 02 Feb 2018 18:06:19 GMT):
it's possible that would apply to event subscriptions as well

zac (Fri, 02 Feb 2018 18:07:53 GMT):
Generally info on the blockchain is publicly available

zac (Fri, 02 Feb 2018 18:08:01 GMT):
At least to anyone in possession of the blockchain

zac (Fri, 02 Feb 2018 18:08:26 GMT):
A lot of these are going to be deployed in permissioned networks, so only certain parties will have access

qqdd (Fri, 02 Feb 2018 18:08:43 GMT):
Yes that's true, but say in case of a consortium blockchain such a use-case is quite likely

zac (Fri, 02 Feb 2018 18:08:44 GMT):
But _all_ of those certain parties will have access to _everything_ on-hcian

qqdd (Fri, 02 Feb 2018 18:08:57 GMT):
true

zac (Fri, 02 Feb 2018 18:09:24 GMT):
You can limit who submits new transactions with some of Sawtooth's on-chain permissioning

zac (Fri, 02 Feb 2018 18:09:45 GMT):
But I don't think you'll be able who gets to read data, whether from subscriptions or otherwise

zac (Fri, 02 Feb 2018 18:09:45 GMT):
But I don't think you'll be able to limit who gets to read data, whether from subscriptions or otherwise

qqdd (Fri, 02 Feb 2018 18:10:38 GMT):
for example, i got two parties maintaining a common blockchain. I do not want clients of the first party to be real-time aware how the txs of the clients of the 2nd party are doing.

zac (Fri, 02 Feb 2018 18:12:29 GMT):
Other people should chime in if I am saying dumb things, but I don't think that would be possible. Both parties have access to the blockchain, and can do whatever they like with that data. This is kind of fundamental to how a blockchain works. You can't validate each other's data without having access to it.

zac (Fri, 02 Feb 2018 18:13:04 GMT):
And if the other party has access, you can't stop them from publishing it to their clients however they like.

zac (Fri, 02 Feb 2018 18:13:28 GMT):
At least not with any mechanism on the blockchain. You could probably sign a legal contract or something.

qqdd (Fri, 02 Feb 2018 18:13:42 GMT):
OK, i get the message and it makes sense.

qqdd (Fri, 02 Feb 2018 18:14:05 GMT):
thanks

tkuhrt (Fri, 02 Feb 2018 19:00:56 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=WLFFexFLmgPRvaNcG) Sorry...just seeing this message after my travels. Yes, this is based on 0.8. We could add something to the README and add link to the 0.8 documentation.

tkuhrt (Fri, 02 Feb 2018 19:03:27 GMT):
Recently, someone reached out about the following link: https://sawtooth.hyperledger.org/docs/core/releases/latest/solidity_developers_guide/seth_rpc.html, which they found on the Internet somewhere. Obviously, this is from when the SETH work was still part of Sawtooth Core repo. I was asked if there was anyway we could redirect this page to the new documentation that exists under the sawtooth-seth repo. Would the Sawtooth community object to a PR for creating a document in the sawtooth-core repo that points to the new documentation?

amundson (Fri, 02 Feb 2018 19:11:10 GMT):
@tkuhrt the intent is to do it with apache redirects and we haven't established the pattern for that quite yet. this can be our example URL though to figure it out.

tkuhrt (Fri, 02 Feb 2018 19:12:03 GMT):
okay...anything that I can do to help, @amundson ?

amundson (Fri, 02 Feb 2018 19:13:24 GMT):
probably not on that specifically, but we have also had folks from the class using a stale docker-compose file that uses :latest tags instead of :0.8 and I'm wondering if the current class includes that stale file

tkuhrt (Fri, 02 Feb 2018 19:22:30 GMT):
I did update that recently.

amundson (Fri, 02 Feb 2018 19:22:46 GMT):
oh, cooll

tkuhrt (Fri, 02 Feb 2018 19:22:53 GMT):
Zac called it out earlier this week after 1.0 went out

tkuhrt (Fri, 02 Feb 2018 19:23:13 GMT):
So hopefully that will help. Also going to update the README that is part of the class to be very specific that they are using 0.8

amundson (Fri, 02 Feb 2018 19:31:17 GMT):
that's a good idea

zac (Fri, 02 Feb 2018 19:35:54 GMT):
Yeah, the docker-file fix went out the day 1.0 dropped

KevinI (Fri, 02 Feb 2018 21:12:00 GMT):
Has joined the channel.

vijayin26 (Fri, 02 Feb 2018 22:42:05 GMT):
Has joined the channel.

vijayin26 (Fri, 02 Feb 2018 22:44:05 GMT):
In Sawtooth 1.0 it mentioned Sawtooth also uniquely offers “global state agreement,” an assurance that each node has cryptographically identical copies of the blockchain database. Could someone explain how it works?

kakuzu (Fri, 02 Feb 2018 23:16:37 GMT):
Has joined the channel.

mihaipruna (Sat, 03 Feb 2018 00:56:06 GMT):
I cannot get it to play tic tac toe: xo init usage: xo [-h] [-v] [-V] {create,list,show,take,delete} ... xo: error: argument command: invalid choice: 'init' (choose from 'create', 'list', 'show', 'take', 'delete')

mogamboizer (Sat, 03 Feb 2018 01:28:50 GMT):
Has joined the channel.

pandasa (Sat, 03 Feb 2018 03:53:55 GMT):
Has joined the channel.

pandasa (Sat, 03 Feb 2018 03:54:16 GMT):
Hey guys, quick question: mktplace.sawtooth.me isn't letting me demo the marketplace

vs0901 (Sat, 03 Feb 2018 07:37:58 GMT):
Has joined the channel.

aleksfarrier (Sat, 03 Feb 2018 10:14:22 GMT):
Has joined the channel.

aleksfarrier (Sat, 03 Feb 2018 10:19:24 GMT):
Hi guys. Please explain the simple question. I've installed Sawtooth to computer N 1. And I've run validator, transaction proccessors, REST API. I can make request like curl http://localhost:8080/blocks. Now I want create copy of this blockchain on computer N 2. What way they it should be replicated? What protocol is used - REST or something else? I cannot find clear explanation of this. Help please.

atonit (Sat, 03 Feb 2018 12:25:38 GMT):
Has joined the channel.

ualtinay (Sat, 03 Feb 2018 14:58:26 GMT):
Has joined the channel.

kakuzu (Sat, 03 Feb 2018 15:31:08 GMT):
hi

aleksfarrier (Sat, 03 Feb 2018 15:35:58 GMT):
Saw the documentation about blockchain product - https://sawtooth.hyperledger.org/docs/core/releases/latest/contents.html There's nothing about replication of ledger between peer nodes and clones blockchain between participants of network. This is very weird. How could that be?

pierfrancopasero (Sat, 03 Feb 2018 15:44:13 GMT):
Has joined the channel.

grkvlt (Sat, 03 Feb 2018 16:08:18 GMT):
@aleksfarrier they use the ZeroMQ (or 0MQ) messaging/gossip protocol to communicate on port 4004 between nodes, this lets the validators process transaction batches and achieve consensus

grkvlt (Sat, 03 Feb 2018 16:09:55 GMT):
so, start another validator and configure it to use the first one as a peer in the list of seeds - i think there are examples of this in the Docker Compose YAML files for the tests

mihaipruna (Sat, 03 Feb 2018 21:48:26 GMT):
how do I install xo-tp-javascript transaction processor?

mihaipruna (Sat, 03 Feb 2018 21:48:32 GMT):
Ubuntu 16.04

joshuaherman (Sat, 03 Feb 2018 23:06:20 GMT):
Has joined the channel.

joshuaherman (Sat, 03 Feb 2018 23:06:22 GMT):
hi

joshuaherman (Sat, 03 Feb 2018 23:06:32 GMT):
i am trying out the demo on safari and i have an error

joshuaherman (Sat, 03 Feb 2018 23:08:19 GMT):
https://pastebin.com/raw/i5tcMkSE

joshuaherman (Sat, 03 Feb 2018 23:09:11 GMT):
I get the error unable to submit a transaction

joshuaherman (Sat, 03 Feb 2018 23:09:21 GMT):
https://mktplace.sawtooth.me/#/intro

joshuaherman (Sat, 03 Feb 2018 23:10:41 GMT):
@pandasa i noticed that too

SamuelDare (Sun, 04 Feb 2018 12:15:01 GMT):
Has joined the channel.

SamuelDare (Sun, 04 Feb 2018 12:26:26 GMT):
Hi

SamuelDare (Sun, 04 Feb 2018 12:26:46 GMT):
Having a look around and wanted to try the demos

SamuelDare (Sun, 04 Feb 2018 12:26:56 GMT):
are websites down?

SamuelDare (Sun, 04 Feb 2018 12:27:09 GMT):
`bond` trading does not allow me to select a firm

SamuelDare (Sun, 04 Feb 2018 12:28:05 GMT):
and `digital marketplace` says the server is down when I try to register a participant

SamuelDare (Sun, 04 Feb 2018 12:28:43 GMT):

Screen Shot 2018-02-04 at 12.28.26.png

SamuelDare (Sun, 04 Feb 2018 12:33:15 GMT):
Following the tutorial here:

SamuelDare (Sun, 04 Feb 2018 12:33:22 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/0.7/tutorial.html

SamuelDare (Sun, 04 Feb 2018 12:33:33 GMT):
% cd $HOME % mkdir project % cd project % git clone https://github.com/IntelLedger/sawtooth-core.git

SamuelDare (Sun, 04 Feb 2018 12:33:33 GMT):
``` % cd $HOME % mkdir project % cd project % git clone https://github.com/IntelLedger/sawtooth-core.git ```

SamuelDare (Sun, 04 Feb 2018 12:33:42 GMT):
has sawtooth core moved?

ipolizos (Sun, 04 Feb 2018 12:46:20 GMT):
Has joined the channel.

LukasFischer (Sun, 04 Feb 2018 17:44:18 GMT):
Has joined the channel.

LukasFischer (Sun, 04 Feb 2018 17:46:46 GMT):
Hi, I am trying to run the xo demo.I get the following error: Pulling xo-tp-go (sawtooth-xo-tp-go:latest)... ERROR: pull access denied for sawtooth-xo-tp-go, repository does not exist or may require 'docker login'

jlazyj (Sun, 04 Feb 2018 18:13:16 GMT):
Once a blockchain application is started, can it be modified? For example, if your using it to track chain of ownership, can a data field be added after it's up and running?

ajithjosek (Sun, 04 Feb 2018 20:18:59 GMT):
Has joined the channel.

markus24de (Sun, 04 Feb 2018 21:59:48 GMT):
Has joined the channel.

markus24de (Sun, 04 Feb 2018 22:04:19 GMT):
Hello! Who can help me in search for information about Requirements masternodes to sawtooth hyprledger

amundson (Sun, 04 Feb 2018 23:48:52 GMT):
@SamuelDare yeah, sawtooth-core repo is now under hyperledger. also, 0.7 is very old.

amundson (Sun, 04 Feb 2018 23:57:04 GMT):
@jlazyj yes. from a transaction processor perspective, you can do rolling upgrades across the network. the only constraint is that you need to be able to execute historical transactions in addition to newer transactions. transaction families are versioned for this reason (family_name, family_version). if using smart contracts deployed to the network (such as the case when using Seth w/EVM), the pattern is determined by the smart contract implementation (such as Seth).

amundson (Sun, 04 Feb 2018 23:58:26 GMT):
@markus24de can you elaborate on your question a bit?

colltrix (Mon, 05 Feb 2018 03:45:34 GMT):
Has joined the channel.

bogomazov (Mon, 05 Feb 2018 07:14:14 GMT):
has anyone successfully run sawtooth-seth?

ForwardMomentum (Mon, 05 Feb 2018 10:06:40 GMT):
Guys, from https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/app_developers_guide/testing.html article I know how to write and where to found tests (e g for XO) but can not run them successfully. I trying to run ```nosetests .py``` but process stucks without any log (with -v flag too), did I missed something?

ForwardMomentum (Mon, 05 Feb 2018 10:06:40 GMT):
Guys, from https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/app_developers_guide/testing.html article I know how to write and where to found tests (e g for XO) but can not run them successfully. I trying to run ```nosetests .py``` but process stucks without any log (with -v flag too), did I missed something? Update: under debug I see that process waiting for some message via zmq (probably I should launch tests in other way)

ForwardMomentum (Mon, 05 Feb 2018 10:06:40 GMT):
Guys, from https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/app_developers_guide/testing.html article I know how to write and where to found tests (e g for XO) but can not run them successfully. I trying to run ```nosetests .py``` but process stucks without any log (with -v flag too), did I missed something? Update: under debug I see that process waiting for some message via zmq (probably I should launch tests in other way) Update 2: I took a look in core project tests and launched main.py of processor and test separately, everything is perfect :)

adewinne (Mon, 05 Feb 2018 11:10:34 GMT):
Has joined the channel.

shicholas (Mon, 05 Feb 2018 14:06:07 GMT):
Has joined the channel.

Dan (Mon, 05 Feb 2018 15:45:18 GMT):
@achenette another instance of FAQ: how do I run a second node. https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-February/000172.html

Dan (Mon, 05 Feb 2018 15:46:15 GMT):
for @aleksfarrier 's question above ^

Dan (Mon, 05 Feb 2018 15:49:32 GMT):
@pandasa Sorry, I think we need to update those links. There's a newer market place here: https://github.com/hyperledger/sawtooth-marketplace You can actually run it locally if you have docker installed.

aleksfarrier (Mon, 05 Feb 2018 16:57:22 GMT):
thanks)

mahoney1 (Mon, 05 Feb 2018 18:43:49 GMT):
Has joined the channel.

pschwarz (Mon, 05 Feb 2018 21:20:15 GMT):
@jaredcorduan @bill.cawthra Pushed a PR to address the block info issue that you've been seeing: https://github.com/hyperledger/sawtooth-core/pull/1416

pschwarz (Mon, 05 Feb 2018 21:21:13 GMT):
It may also correct the issue discussed in STL-1034

sakiman12 (Tue, 06 Feb 2018 03:52:48 GMT):
Has joined the channel.

sakiman12 (Tue, 06 Feb 2018 03:54:58 GMT):
Hello - new here. Has anyone used Sawtooth to launch their own crypto currency? Trying to understand if this is a realistic solution or if we should deploy on a public BlockChain solution, like Ethereum. It seems Sawtooth meets the requirements, but I can’t seem to find a direct use case in my internet search (most applications seem to be focused on enterprise and general assets which I understand is the core value prop of Hyperledger). I’d really like to be able to point to something or justify my logic to my business leaders before I jump with both feet in). Thanks!!!!

YukiTruckServices (Tue, 06 Feb 2018 04:34:08 GMT):
Has joined the channel.

askmish (Tue, 06 Feb 2018 05:28:33 GMT):
@sakiman12 What kind of cryptocurrency - public or private?

sakiman12 (Tue, 06 Feb 2018 06:52:41 GMT):
@askmish great question. Without getting into the details of the business, the thinking is we’re going to be building a utility token on a private BlockChain that would be used to release coins on a public BlockChain. So, I guess the answer to your question is both. I believe Sawtooth would be fine for the private solution, just not sure about the public. What are your opinions on a crypto on either a private or public, regardless of our specific application?

AshwinKumar844129 (Tue, 06 Feb 2018 09:31:14 GMT):
Has joined the channel.

AshwinKumar844129 (Tue, 06 Feb 2018 09:33:05 GMT):
when i test runs following command "xo create game --username jack" nothing happens, says bad command ??

AshwinKumar844129 (Tue, 06 Feb 2018 09:39:17 GMT):

Clipboard - February 6, 2018 3:09 PM

tholder (Tue, 06 Feb 2018 09:52:35 GMT):
Has joined the channel.

tholder (Tue, 06 Feb 2018 09:53:10 GMT):
hey all, I've only just found out about Sawtooth. Can anyone explain or point me to a good article on the differences between sawtooth and fabric?

MaritereNieto (Tue, 06 Feb 2018 09:53:28 GMT):
Hi everyoine, why has the sawtooth-seth docker-compose file been removed from 1.0 version in the repository https://github.com/hyperledger/sawtooth-core ?

askmish (Tue, 06 Feb 2018 10:08:33 GMT):
@AshwinKumar844129 You should be running that command from either sawtooth default shell docker: docker exec -it sawtooth-shell-default bash or directly from host system

askmish (Tue, 06 Feb 2018 10:10:23 GMT):
@tholder Just googling the same would yield you a bunch of good articles

askmish (Tue, 06 Feb 2018 10:11:59 GMT):
:)

askmish (Tue, 06 Feb 2018 10:14:41 GMT):
@MaritereNieto sawtooth-seth is now here https://github.com/hyperledger/sawtooth-seth

askmish (Tue, 06 Feb 2018 10:18:45 GMT):
@sakiman12 You're probably looking for: https://github.com/hyperledger/sawtooth-seth

AshwinKumar844129 (Tue, 06 Feb 2018 10:23:17 GMT):
Thanks for reply but getting this error now root@ebe055698393:/# xo create game --username jack Error: Failed to connect to http://127.0.0.1:8008/batches: HTTPConnectionPool(host='127.0.0.1', port=8008): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',)) root@ebe055698393:/#

askmish (Tue, 06 Feb 2018 10:40:11 GMT):
@AshwinKumar844129 You need to specify the url of the rest-api: xo create game --username jack --url http://rest-api:8008

askmish (Tue, 06 Feb 2018 10:43:13 GMT):
For dockers

AshwinKumar844129 (Tue, 06 Feb 2018 10:48:50 GMT):
@askmish Thanks

MaritereNieto (Tue, 06 Feb 2018 10:51:52 GMT):
thanks for answering @askmish , I'm trying to build the source but it fails with the command apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8AA7AF1F1091A5FD

MaritereNieto (Tue, 06 Feb 2018 10:51:52 GMT):
thanks for answering @askmish

AshwinKumar844129 (Tue, 06 Feb 2018 11:55:42 GMT):
XO game is running successfully, will you please guide to input to the XO game from other PC from same network ?

AshwinKumar844129 (Tue, 06 Feb 2018 11:56:31 GMT):

Clipboard - February 6, 2018 5:26 PM

askmish (Tue, 06 Feb 2018 12:14:04 GMT):
@AshwinKumar844129 For that you'll have to configure rest-api to listen on your ip address using --bind Refer: https://sawtooth.hyperledger.org/docs/core/releases/latest/cli/rest_api.html#sawtooth-rest-api

bogomazov (Tue, 06 Feb 2018 12:14:43 GMT):
sawtooth-seth fails to run. I am using Dockerfile from https://github.com/hyperledger/sawtooth-seth and running `docker-compose build` which has finished successfully, but `docker run sawtooth-seth` errors with `/bin/sh: 1: build_seth: not found`

bogomazov (Tue, 06 Feb 2018 12:16:15 GMT):
(repo was cloned as well)

jon_s (Tue, 06 Feb 2018 16:45:21 GMT):
Has joined the channel.

nutthasakrotchirat (Tue, 06 Feb 2018 19:04:11 GMT):
Has joined the channel.

bill.cawthra (Tue, 06 Feb 2018 21:05:05 GMT):
anyone have any advice on running opentsdb with the sawtooth validators? i'm seeing a lot of: ``` validator_1 | [2018-02-06 21:05:03.857 WARNING influx] Cannot write to opentsdb: Not Found ```

bill.cawthra (Tue, 06 Feb 2018 21:05:35 GMT):
it appears to attempt to write to opentsdb: ``` opentsdb_1 | 2018-02-06 21:05:43,944 WARN HttpQuery: [id: 0x5a873da9, /192.168.0.2:35160 => /192.168.0.4:4242] Not Found: /write?db=hbase&precision=s ```

Dan (Tue, 06 Feb 2018 21:17:03 GMT):
@bogomazov are you using the seth PR branch you commented in or master? If master isn't happy then please try that PR branch. If that PR branch is also broken, please double check the path in the compose file.

jsmitchell (Tue, 06 Feb 2018 22:54:23 GMT):
@bill.cawthra that should only be happening if you are specifying those opentsdb arguments on the command line or in the conf file to enable metrics

jsmitchell (Tue, 06 Feb 2018 22:54:50 GMT):
if you have not supplied those arguments, then that could be a bug

jsmitchell (Tue, 06 Feb 2018 22:55:06 GMT):
@pschwarz @adamludvik ^

rkrish82 (Wed, 07 Feb 2018 04:42:18 GMT):
Has joined the channel.

keyur (Wed, 07 Feb 2018 05:39:51 GMT):
Has joined the channel.

bogomazov (Wed, 07 Feb 2018 08:30:25 GMT):
@Dan So I had to add `COPY . /project/sawtooth-seth` to Dockerfile

bogomazov (Wed, 07 Feb 2018 08:30:25 GMT):
@Dan Soi I had to add `COPY . /project/sawtooth-seth` to Dockerfile

yllan (Wed, 07 Feb 2018 09:16:19 GMT):
Has joined the channel.

bogomazov (Wed, 07 Feb 2018 10:18:48 GMT):
It is my issue I thought I ran /bin/build_all locally

bogomazov (Wed, 07 Feb 2018 10:22:56 GMT):
I thought it is only needed within the container, but volumes in docker-compose replaced it with my local one

bogomazov (Wed, 07 Feb 2018 10:22:56 GMT):
I assumed it is only needed within the container, but volumes in docker-compose replaced it with my local one

bogomazov (Wed, 07 Feb 2018 10:22:56 GMT):
I assumed it is only needed within the container, but volumes in docker-compose replaced it with the local one

bogomazov (Wed, 07 Feb 2018 10:29:52 GMT):

Screen Shot 2018-02-07 at 12.28.36 PM.png

bogomazov (Wed, 07 Feb 2018 10:35:32 GMT):
password is correct*

bogomazov (Wed, 07 Feb 2018 10:35:32 GMT):
password is correct* Also, `hyperledger/sawtooth-block-info-tp` is unavailable

bogomazov (Wed, 07 Feb 2018 10:35:32 GMT):
password is correct* Also, `hyperledger/sawtooth-block-info-tp` is unavailable Will appreciate any help

bogomazov (Wed, 07 Feb 2018 10:46:30 GMT):
`sawtooth-block-info-tp` is unavailable

bogomazov (Wed, 07 Feb 2018 10:46:30 GMT):
`hyperledger/sawtooth-block-info-tp` is unavailable

OSubachev (Wed, 07 Feb 2018 13:31:38 GMT):
How to configure Sawtooth REST API to accept not local requests ? I've successfully launched Sawtooth on Ubuntu 16.04 according to: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html#using-sawtooth-on-ubuntu-16-04 I use Ubuntu virtual machine under Azure. When I run locally: curl http://127.0.0.1:8008/blocks or curl http://localhost:8008/blocks all is OK, I get JSON with blocks. But when I run locally: curl http://40.68.248.133:8008/blocks or curl http://posolubuntuhlsawtooth.westeurope.cloudapp.azure.com:8008/blocks where 40.68.248.133 and posolubuntuhlsawtooth.westeurope.cloudapp.azure.com are addresses of my Ubuntu virtual machine under Azure, I get: curl: (7) Failed to connect to 40.68.248.133 port 8008: Connection refused or curl: (7) Failed to connect to posolubuntuhlsawtooth.westeurope.cloudapp.azure.com port 8008: Connection refused All ports are opened. Ping to both addresses works OK. What's wrong ? How to configure Sawtooth REST API to accept not local requests ?

MaritereNieto (Wed, 07 Feb 2018 14:12:59 GMT):
I have tried to learn about the sawtooth-seth, I have download it from https://github.com/hyperledger/sawtooth-seth . After I have execute de build command (./bin/build_all). Then, when i'm going to execute a docker-compose up, the image hyperledger/sawtooth-block-info-tp is not found. I have fixed replacing it with scotcoin/sawtooth-block-info-tp . Where is the official image? I had another issue, when i am going to create an account (following these steps : https://sawtooth.hyperledger.org/docs/seth/nightly/master/seth_developers_guide/getting_started.html#creating-an-account ) I have the following error: ``` root@5acc5a3b1031:/project/sawtooth-seth# seth account create myalias --wait Enter Password to unlock myalias: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x0 pc=0x4aa8cd] goroutine 1 [running]: panic(0x83ed00, 0xc820010090) /usr/lib/go-1.6/src/runtime/panic.go:481 +0x3e6 sawtooth_seth/client.(*Client).LookupAccountNonce(0xc8203dfb10, 0xc8200cdcc0, 0x20, 0x20, 0x20, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/client/client.go:121 +0x35d main.(*AccountCreate).Run(0xc82000a690, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account_create.go:82 +0x369 main.(*Account).Run(0xc8200cd420, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account.go:60 +0x14e main.main() /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/main.go:102 +0xaa2 ``` What is going wrong? Thanks!! :)

MaritereNieto (Wed, 07 Feb 2018 14:12:59 GMT):
I have tried to do a poc about the sawtooth-seth, I have download it from https://github.com/hyperledger/sawtooth-seth . After I have execute de build command (./bin/build_all). Then, when i'm going to execute a docker-compose up, the image hyperledger/sawtooth-block-info-tp is not found. I have fixed replacing it with scotcoin/sawtooth-block-info-tp . Where is the official image? I had another issue, when i am going to create an account (following these steps : https://sawtooth.hyperledger.org/docs/seth/nightly/master/seth_developers_guide/getting_started.html#creating-an-account ) I have the following error: ``` root@5acc5a3b1031:/project/sawtooth-seth# seth account create myalias --wait Enter Password to unlock myalias: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x0 pc=0x4aa8cd] goroutine 1 [running]: panic(0x83ed00, 0xc820010090) /usr/lib/go-1.6/src/runtime/panic.go:481 +0x3e6 sawtooth_seth/client.(*Client).LookupAccountNonce(0xc8203dfb10, 0xc8200cdcc0, 0x20, 0x20, 0x20, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/client/client.go:121 +0x35d main.(*AccountCreate).Run(0xc82000a690, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account_create.go:82 +0x369 main.(*Account).Run(0xc8200cd420, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account.go:60 +0x14e main.main() /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/main.go:102 +0xaa2 ``` What is going wrong? Thanks!! :)

MaritereNieto (Wed, 07 Feb 2018 14:12:59 GMT):
I have tried to do a poc about the sawtooth-seth, I have download it from https://github.com/hyperledger/sawtooth-seth . After I have execute de build command (./bin/build_all). Then, when i'm going to execute a docker-compose up, the image hyperledger/sawtooth-block-info-tp is not found. I have fixed it replacing with scotcoin/sawtooth-block-info-tp . Where is the official image? I had another issue, when i am going to create an account (following these steps : https://sawtooth.hyperledger.org/docs/seth/nightly/master/seth_developers_guide/getting_started.html#creating-an-account ) I have the following error: ``` root@5acc5a3b1031:/project/sawtooth-seth# seth account create myalias --wait Enter Password to unlock myalias: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x0 pc=0x4aa8cd] goroutine 1 [running]: panic(0x83ed00, 0xc820010090) /usr/lib/go-1.6/src/runtime/panic.go:481 +0x3e6 sawtooth_seth/client.(*Client).LookupAccountNonce(0xc8203dfb10, 0xc8200cdcc0, 0x20, 0x20, 0x20, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/client/client.go:121 +0x35d main.(*AccountCreate).Run(0xc82000a690, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account_create.go:82 +0x369 main.(*Account).Run(0xc8200cd420, 0xc8203ea6b0, 0x0, 0x0) /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/account.go:60 +0x14e main.main() /project/sawtooth-seth/families/seth/src/sawtooth_seth/cli/main.go:102 +0xaa2 ``` What is going wrong? Thanks!! :)

markus24de (Wed, 07 Feb 2018 14:39:01 GMT):
Hello all! Who can tell me system requirements for validation node (cpu memory system os)

askmish (Wed, 07 Feb 2018 14:58:07 GMT):
@OSubachev You'll need to tell rest-api to bind to your machine's IP, where its running using the --bind option: https://sawtooth.hyperledger.org/docs/core/releases/latest/cli/rest_api.html#sawtooth-rest-api

askmish (Wed, 07 Feb 2018 14:58:51 GMT):
By default, rest-api will bind to localhost only.

askmish (Wed, 07 Feb 2018 15:01:38 GMT):
@markus24de The system requirements usually depend on the usecase and nature of deployment.

jaredcorduan (Wed, 07 Feb 2018 15:05:01 GMT):
@pschwarz your recent merge to master looks great, thank you!

jsmitchell (Wed, 07 Feb 2018 15:08:30 GMT):
:clap_tone1:

pschwarz (Wed, 07 Feb 2018 15:11:29 GMT):
@jaredcorduan Hopefully, you can test against master. It might be a week or so before we can get it merged back into the 1-0 branch for a 1.0.x release

jaredcorduan (Wed, 07 Feb 2018 15:12:18 GMT):
yea, np, I'll :hammer: on master some today.

jaredcorduan (Wed, 07 Feb 2018 15:13:53 GMT):
We've been doing lots of experiments on `1.0.1` yesterday and today. a transaction that only appends data to a single merkle address seems very stable at 1k txns a second.

jaredcorduan (Wed, 07 Feb 2018 15:14:47 GMT):
a transaction that only reads block info and logs (no write to any merkle address) I can get to start missing block info at 20 txns per second.

jaredcorduan (Wed, 07 Feb 2018 15:15:01 GMT):
this is devmode, one validator

jaredcorduan (Wed, 07 Feb 2018 15:15:30 GMT):
and every so often, I get the validators to lock, but it's pretty rare.

jaredcorduan (Wed, 07 Feb 2018 15:15:43 GMT):
erm, validator :)

jaredcorduan (Wed, 07 Feb 2018 15:16:06 GMT):
when I get the lock, it's with high throughput, like 1k a sec

eccheung4 (Wed, 07 Feb 2018 15:26:17 GMT):
Has joined the channel.

adamludvik (Wed, 07 Feb 2018 15:34:44 GMT):
@grkvlt can you provide any assistance to @bogomazov or @MaritereNieto with respect to getting seth up and running? I think you probably have the most up-to-date knowledge at this point.

grkvlt (Wed, 07 Feb 2018 16:19:08 GMT):
@bogomazov @MaritereNieto when creating an account using Seth, I used the following commands, where `seth-tp` is the name of the container runnin g the Seth transaction processor: ```$ docker exec -ti seth-tp bash # seth init http://rest-api:8080 # ALIAS=myaccount # openssl ecparam -genkey -name secp256k1 | openssl ec -out ${ALIAS}.pem # seth account import ${ALIAS}.pem ${ALIAS} > /dev/null # seth account create --nonce=0 --wait ${ALIAS} ``` Can you give that a try and let me know how you get on? Also, make sure you run `seth-rpc` with `--unlock ${ALIAS}` as part of the arguments, and also copy the `${ALIAS}.pem` file created on the transaction processor to the `~/.sawtooth/` directory on the RPC container.

Dan (Wed, 07 Feb 2018 17:30:25 GMT):
Can someone answer this post? https://lists.hyperledger.org/pipermail/hyperledger-stl/2018-February/000173.html

grkvlt (Wed, 07 Feb 2018 17:33:49 GMT):
@Dan interestingly, I've been using https://brooklyn.apache.org/ to put together a blueprint which deploys a multi-node Sawtooth/Seth cluster, and I am going through the required process at my company to make it open source, but unfortunately I can't release it yet ;(

Dan (Wed, 07 Feb 2018 17:38:34 GMT):
Oh that will be awesome!

grkvlt (Wed, 07 Feb 2018 19:08:38 GMT):
BTW @bogomazov to run the `build_seth` command from Docker, via the `sawtooth-dev-seth` image, use these commands: ``` $ docker build . -t sawtooth-dev-seth $ docker run -v $(pwd):/project/sawtooth-seth sawtooth-dev-seth ``` The instructions in the Dockerfile are wrong, but I will change them for the future.

grkvlt (Wed, 07 Feb 2018 19:08:38 GMT):
BTW @bogomazov to run the `build_seth` command from Docker, via the `sawtooth-dev-seth` image, use these commands: ```$ docker build . -t sawtooth-dev-seth $ docker run -v $(pwd):/project/sawtooth-seth sawtooth-dev-seth ``` The instructions in the Dockerfile are wrong, but I will change them for the future.

CocoLife (Wed, 07 Feb 2018 19:53:23 GMT):
Has joined the channel.

CocoLife (Wed, 07 Feb 2018 19:53:29 GMT):
Hello there, I was launching a traceability project, I was looking for the technical architecture of the Hyperledger Sawtooth Can anyone direct me to the page. Thanks

kelly_ (Wed, 07 Feb 2018 20:08:15 GMT):
@CocoLife https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/

Dan (Wed, 07 Feb 2018 20:11:59 GMT):
@CocoLife see also supply chain / traceability example https://github.com/hyperledger/sawtooth-supply-chain

CocoLife (Wed, 07 Feb 2018 20:16:03 GMT):
Wonderful

CocoLife (Wed, 07 Feb 2018 20:16:05 GMT):
Thanks

candidosg (Wed, 07 Feb 2018 20:16:14 GMT):
Guys, what's the difference between Blocks and Batches?

zac (Wed, 07 Feb 2018 20:21:45 GMT):
Transactions -> Batches -> Blocks

zac (Wed, 07 Feb 2018 20:22:10 GMT):
Transactions contain a custom payload, which defines some sort of logic, like a change in state.

zac (Wed, 07 Feb 2018 20:23:19 GMT):
Batches are collections of Transactions that are sent together to the validator. They are evaluated together and in order. If one of them fails, the others will be thrown out as well. This is the atomic unit of change in Sawtooth. Either the whole Batch goes through, or none of the Batch goes through.

zac (Wed, 07 Feb 2018 20:25:29 GMT):
Blocks are collections of Batches which are grouped together and become a (semi-)permanent part of the blockchain. They are equivalent to blocks in other blockchains. You group together some data, include a link to the previous block of data, and then write it to the chain. The next block will include a link to the current one, and so forth.

zac (Wed, 07 Feb 2018 20:26:31 GMT):
In Bitcoin, Transactions are always transfers of bitcoin from one address to another. There are no Batches. Those Transactions are gathered and grouped into blocks every ten minutes or so, and then added to the chain.

zac (Wed, 07 Feb 2018 20:26:31 GMT):
In Bitcoin, Transactions are always transfers of bitcoin from one address to another. There are no Batches. Those Transactions are gathered and grouped directly into Blocks every ten minutes or so, and then added to the chain.

candidosg (Wed, 07 Feb 2018 20:31:15 GMT):
Thanks :D

CocoLife (Wed, 07 Feb 2018 21:17:48 GMT):
I have a questions, Can Hyperledger Sawtooth be integrated with ETH. Like a Dual Platform ?

kelly_ (Wed, 07 Feb 2018 21:24:01 GMT):
@CocoLife you can run ethereum smart contracts on sawtooth, through the 'seth' project

kelly_ (Wed, 07 Feb 2018 21:24:09 GMT):
but it will not connect to public ethereum

CocoLife (Wed, 07 Feb 2018 21:24:29 GMT):
can you give me an example how that works ?

alberto_souza (Wed, 07 Feb 2018 21:33:05 GMT):
I am trying to configure sawtooth following steps from the docs => https://sawtooth.hyperledger.org/docs/core/releases/1.0.1/app_developers_guide/ubuntu.html. Everything went fine, but the rest api is not responding for requests from the outside world .. I configured a droplet at digitalocean ... If you access => http://188.166.124.156:8080/blocks, you will wait for ever Any ideas?

alberto_souza (Wed, 07 Feb 2018 21:33:56 GMT):
I had to use the bind and connect parameter to specify the IP of the machine... I already can register processors, but the rest api...

alberto_souza (Wed, 07 Feb 2018 21:35:30 GMT):
the rest-api is not able to connect to the validators => { "error": { "code": 17, "message": "The request timed out while waiting for a response from the validator. Your request may or may not have been processed.", "title": "Validator Timed Out" } }

alberto_souza (Wed, 07 Feb 2018 21:38:21 GMT):
solved, thanks :). we have to pass the connect parameter to rest-api

alberto_souza (Wed, 07 Feb 2018 22:37:20 GMT):
For some reason, when I tried to register my processor in the remote sawtooth instance I got the message: Registration of [onlinevoting 0.0.1 application/json] failed ... Any ideas? The server's console shows that the processor was registered, but when I try to process a transaction the status is always pending...

zac (Wed, 07 Feb 2018 23:04:17 GMT):
@alberto_souza The logging might be a little deceptive there

zac (Wed, 07 Feb 2018 23:05:15 GMT):
If your TP indeed failed to register, then that is how the validator would behave on submitting transactions for that TP

zac (Wed, 07 Feb 2018 23:05:36 GMT):
They would just stay in the pending queue until the TP registered properly

zac (Wed, 07 Feb 2018 23:05:36 GMT):
@CocoLife The Seth transaction processor can execute a subset of EVM commands. So you can submit Ethereum smart contracts to it, and that will result in state changes analogous to what you would see if you submitted the same smart contract to the Ethereum network.

craik.zhang (Thu, 08 Feb 2018 00:46:24 GMT):
Has joined the channel.

supersergiy (Thu, 08 Feb 2018 00:49:14 GMT):
Has joined the channel.

supersergiy (Thu, 08 Feb 2018 00:51:52 GMT):
hey guys, do I understand correctly that each validator in the network needs to run its own TP, and in order to reach consensus all TP's have to produce identical state changes for each block?

gaurang (Thu, 08 Feb 2018 06:56:03 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Lc3zn5fza7h2Qdujj) @supersergiy Yes I am too surprised.

gaurang (Thu, 08 Feb 2018 06:56:56 GMT):
If I don't attach the TP Family to peer validator, it's not accepting the tx block.

gaurang (Thu, 08 Feb 2018 06:58:08 GMT):
What will happen in case multiple validator running different version of TP s/w. It seems like TP is not part of common network.

Johnjam (Thu, 08 Feb 2018 08:00:44 GMT):
Hi everyone ! I struggle to understand the real meaning of "local mean" in sawtooth validator code and PoET consensus code. The documentation describe it a little bit in the PoET specifications 1.0 (https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html?highlight=local%20mean) but if someone have an article or some explanations, it would be helpful !

askmish (Thu, 08 Feb 2018 08:29:29 GMT):
@supersergiy @gaurang Yes, each validator has to have the exact same version of TP with it, running on the same network. At a higher level, Transaction processors are based on Transaction families(TF) and if you're sending batches to validator related to a particular TF, those are processed by TPs ultimately and stored.

callmeashok (Thu, 08 Feb 2018 09:01:28 GMT):
Has joined the channel.

bogomazov (Thu, 08 Feb 2018 09:46:39 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rMAKu3ihu7ZxeKn7N) @grkvlt thank you, it worked precisely! However, my final step is to use Truffle to deploy contracts. I specified `3030` port in `truffle.js` config file, and while calling `truffle migrate` it gets stuck and logs are shown from `seth-rpc` neither `seth-tp`

bogomazov (Thu, 08 Feb 2018 09:46:39 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rMAKu3ihu7ZxeKn7N) @grkvlt thank you, it worked precisely! However, my final step is to use Truffle to deploy contracts. I specified `3030` port in `truffle.js` config file, and while calling `truffle migrate` it gets stuck and no logs are shown from `seth-rpc` neither `seth-tp`

bogomazov (Thu, 08 Feb 2018 09:47:00 GMT):

Screen Shot 2018-02-08 at 11.45.57 AM.png

bogomazov (Thu, 08 Feb 2018 10:11:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rMAKu3ihu7ZxeKn7N) @grkvlt Thank you for your response, it worked precisely! I am currenlty facing `seth-rpc` issue when I call `truffle migrate` (in truffle config I specified `$ALIAS`'s addres to send transactions from)

bogomazov (Thu, 08 Feb 2018 10:11:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rMAKu3ihu7ZxeKn7N) @grkvlt Thank you for your response, it worked precisely! My last step is to use Truffle to deploy and interact with contracts. But I am facing `seth-rpc` issue when I call `truffle migrate` (in truffle config I specified `$ALIAS`'s addres to send transactions from, as well as the right port to connect to seth-rpc). Hope you had success with using Truffle

bogomazov (Thu, 08 Feb 2018 10:11:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=rMAKu3ihu7ZxeKn7N) @grkvlt Thank you for your response, it worked precisely! My last step is to use Truffle to deploy and interact with contracts. But I am facing `seth-rpc` issue when I call `truffle migrate` (in truffle config I specified `$ALIAS`'s addres to send transactions from, as well as the right port to connect to seth-rpc). Hope you had success with using Truffle and may know what could be the issue

bogomazov (Thu, 08 Feb 2018 10:11:40 GMT):

Screen Shot 2018-02-08 at 12.09.32 PM.png

bogomazov (Thu, 08 Feb 2018 10:22:48 GMT):
I defined RUST_BACKTRACE env variable with no difference in output

YukiTruckServices (Thu, 08 Feb 2018 11:18:48 GMT):
.

YukiTruckServices (Thu, 08 Feb 2018 11:19:51 GMT):
US.101 As a noobie developer, I want to customize the sawtooth supply chain source example files, So that I have a web service that is similar in use case but different products and actors A/C: http://localhost:8021 points to custom website Scenario 1 Given a noob that has installed the sawtooth supply chain including dependencies on the Google cloud engine, When I customize to customize the fish net or asset net website's [records, create record, record types, create record types, agents, create agents, proposals, properties, ] source files, Then http://localhost:8021 will use my customized sawtooth supply chain files. Please somebody point me in the right direction. I don't know what files to edit. Thanks

grkvlt (Thu, 08 Feb 2018 12:52:25 GMT):
@bogomazov I've seen that before, and I thought I had fixed it - i'll take a look and get back to you

gaurang (Thu, 08 Feb 2018 15:19:17 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=hxHDLt2bHhSza2JA9) @askmish So, in distributed n/w one has to ensure each TP running the same version!!!

mkvaghani (Thu, 08 Feb 2018 15:39:19 GMT):
Has joined the channel.

mkvaghani (Thu, 08 Feb 2018 15:39:21 GMT):
guys I am totally new to hyperledger, how it is different from ethereum ? How to what, what is hyperlrdger actually ???

alberto_souza (Thu, 08 Feb 2018 15:41:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=QWE8n36ZLSFwFvPEM) @zac do you any ideas about the reason of failure? When I run the validator in the same ip of processor, everything works fine.

RTLagot (Thu, 08 Feb 2018 16:52:03 GMT):
@Johnjam I asked myself exactly the same question, it would be good to know yes !

bogomazov (Thu, 08 Feb 2018 16:55:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jh27N52w6SzcorwJH) @mkvaghani ethereum is a public blockchain that has its own limitations in terms of scalability and economics, hyperledger is here to be a God of your own blockchain, but they are currently working with consensus that suits enterprise and may sound a bit controversial to the idea of public blockchains

bogomazov (Thu, 08 Feb 2018 16:55:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jh27N52w6SzcorwJH) @mkvaghani ethereum is a public blockchain that has its own limitations in terms of scalability and economics, hyperledger is here to be a God of your own blockchain, but they are currently working with consensus that suits enterprise and may sound a bit controversial to the idea of public blockchains. How I personally understand it, correct me if I am wrong.

bogomazov (Thu, 08 Feb 2018 16:55:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jh27N52w6SzcorwJH) @mkvaghani ethereum is a public blockchain that has its own limitations in terms of scalability and economics, hyperledger is here to be a God of your own blockchain, but they are currently working with consensus that suits enterprise (due to permisioning and faster speed given trusted nodes) and may sound a bit controversial to the idea of public blockchains. How I personally understand it, correct me if I am wrong.

bogomazov (Thu, 08 Feb 2018 16:55:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jh27N52w6SzcorwJH) @mkvaghani ethereum is a public blockchain that has its own limitations in terms of scalability and economics, hyperledger is here for you to be a God of your own blockchain, but they are currently working with consensus that suits enterprise (due to permisioning and faster speed given trusted nodes) and may sound a bit controversial to the idea of public blockchains. How I personally understand it, correct me if I am wrong.

alberto_souza (Thu, 08 Feb 2018 17:19:57 GMT):
(https://chat.hyperledger.org/channel/sawtooth?msg=jh27N52w6SzcorwJH) @mkvaghani I think bogozamov sumarized very well :). Hyperlegder is more suited for corporative business :). [ ]

MohammadObaid (Thu, 08 Feb 2018 17:42:59 GMT):
Does sawtooth mainly used for iot + blockchain ?

MohammadObaid (Thu, 08 Feb 2018 17:57:19 GMT):
Does anyone uses sawtooth of aws marketplace ?

YukiTruckServices (Thu, 08 Feb 2018 17:58:33 GMT):
@MohammadObaid I haven't used AWS but I have used google compute engine. Its a relatively straightforward setup

bogomazov (Thu, 08 Feb 2018 18:31:00 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=eLt2r2jvs59eDTjEb) @grkvlt Please, let me know :slight_smile:

zac (Thu, 08 Feb 2018 19:50:31 GMT):
@alberto_souza I can't really say without knowing more about how you're deploying everything. If it's a problem only when they aren't on the same network, are you sure the various network setup steps are correct? For example, most (all?) of the example TPs take a `-C` flag which let's you specify the URL of the validator (defaults to `tcp://localhost:4004`).

zac (Thu, 08 Feb 2018 19:51:09 GMT):
You can see this in use in the default docker-compose file in core: https://github.com/hyperledger/sawtooth-core/blob/master/docker/compose/sawtooth-default.yaml#L25

zac (Thu, 08 Feb 2018 19:51:58 GMT):
You'll notice it specifies `-C tcp://validator:4004`, because that is the URL where docker-compose will make the validator container available

zac (Thu, 08 Feb 2018 19:55:35 GMT):
@YukiTruckServices You will probably to do more than just customize those JSON files to do your own version of a supply chain app. Changing those files will produce different sorts of assets on the blockchain, but the web apps are hard-coded for the sort of asset in those files, so you'll see bugs.

zac (Thu, 08 Feb 2018 19:56:31 GMT):
For example, the fish_client expects a RecordType called `"fish"`, and will only display Records that match that type.

zac (Thu, 08 Feb 2018 19:57:13 GMT):
https://github.com/hyperledger/sawtooth-supply-chain/blob/master/fish_client/src/views/list_fish.js#L36

zac (Thu, 08 Feb 2018 19:58:09 GMT):
That's one line of code that would have to change, but there would be more

zac (Thu, 08 Feb 2018 19:59:47 GMT):
What is it you want to do exactly? Maybe I can point you towards a good approach.

zac (Thu, 08 Feb 2018 20:04:13 GMT):
@mkvaghani @bogomazov Yeah, that's a pretty good explanation. There are a lot of technical differences if you want to get into the weeds, but on a broad level: Ethereum is one big public network that is already deployed out there. Hyperledger Sawtooth can be deployed in anyway you like. You could in theory build a big public network with it, but in all likelihood you are going to deploy a "permissioned blockchain". Meaning, you and some friends who you don't quite trust will all be running nodes, and Sawtooth will keep you all honest.

zac (Thu, 08 Feb 2018 20:06:18 GMT):
@MohammadObaid There has been some IoT stuff, but Sawtooth is general purpose and not focused on IoT. There is definitely some AWS usage. I'm not one of the people who have done it though.

Dan (Thu, 08 Feb 2018 21:29:44 GMT):
FYI Sawtooth 1.0 Webinar next week: https://www.hyperledger.org/resources/webinars I will answer every question you've ever had about sawtooth unless I don't. :D

rjones (Thu, 08 Feb 2018 21:33:50 GMT):
will you code and promote my totally-not-a-scam ICO for sawtooth? I'll call it "sawbucks" and give you like... 2 of them. thanks.

Dan (Thu, 08 Feb 2018 21:35:15 GMT):
You are too late Ry: https://demo.bitwise.io/sawbucks/#!/

rjones (Thu, 08 Feb 2018 21:35:33 GMT):
dangit

vjindk (Thu, 08 Feb 2018 23:25:46 GMT):
Has joined the channel.

YukiTruckServices (Thu, 08 Feb 2018 23:36:10 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=p7Lsa9iwSpyirDrPX) Thanks for your reply Alberto. I am creating a trucking routing platform using Hyperledger sawtooth. The actors are shippers, drivers, etc. The asset is goods. I prefer to update the assets over time instead of all up front. This means that the addition / subtraction of assets have to be repeatable and systematic on developer side.

YukiTruckServices (Thu, 08 Feb 2018 23:47:50 GMT):
So far, from what I can tell it appears that the relevant files to manipulate are inside sawtooth-supply-chain/protos/[agent.proto, payload.proto, property.proto, etc] then rebuild. Of course I realize that I have to capture the customized data that are reflected. However, my only focus right now is the functional aspect of it. Assuming that the general architecture of the supply chain is the same, is my only concern to customize simply updating the protos files?

FrankCastellucci (Fri, 09 Feb 2018 00:09:00 GMT):
More questions from the green: If I want my TP to support proposals and voting do I need to register an `address` with the setting component?

zac (Fri, 09 Feb 2018 00:25:15 GMT):
@YukiTruckServices Sounds like a cool project. I think using Supply Chain will probably be a pretty good fit. You'll want to familiarize yourself with Sawtooth and the Supply Chain transaction family to start with. Sawtooth has a pretty good application developers guide: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

zac (Fri, 09 Feb 2018 00:26:51 GMT):
Unfortunately the Supply Chain documentation is a little more sparse. You can skim the specifications for the transaction family, though to be honest it is more technical than you really need to understand for your purposes: https://sawtooth.hyperledger.org/docs/supply-chain/nightly/master/family_specification.html

zac (Fri, 09 Feb 2018 00:28:17 GMT):
The Readme also talks a little about the components involved, but it doesn't really talk much about how to develop new applications on top of it.

zac (Fri, 09 Feb 2018 00:30:20 GMT):
So let me try to give you a quick knowledge dump, so you have a general idea of what your approach might be, and what the pieces involved are.

YukiTruckServices (Fri, 09 Feb 2018 00:30:47 GMT):
@zac Awesome, I was just typing a reply

zac (Fri, 09 Feb 2018 00:31:02 GMT):
I'm going to type something up

zac (Fri, 09 Feb 2018 00:31:08 GMT):
might take me a bit . . .

YukiTruckServices (Fri, 09 Feb 2018 00:31:42 GMT):
If you can type, I can stay still

zac (Fri, 09 Feb 2018 01:24:34 GMT):
@YukiTruckServices:

zac (Fri, 09 Feb 2018 01:24:36 GMT):
The Supply Chain transaction family is designed to track the provenance of assets. This information is stored in a _Record_, and includes both ownership and custodianship, as well as any number of configurable _Properties_, like temperature, or location. You control what properties are allowed by setting up _RecordTypes_. You can have as many of these types as you need (both of the example clients use just one). When you create Records, or update their Properties, the transaction processor will check that it is valid based on the type you designate. In addition to all that, there are Agents, which is really just a name associated with a public key. You can add these objects to the blockchain state just like you would in any Sawtooth application: by submitting transactions. The valid payloads are all described in the `protos/payload.proto` file, and you can also get an idea for the structure of the the data objects I described by looking at the other `.proto` files in that directory. However, I probably wouldn't modify these files, at least to start. They are part of the core functionality and the family is highly customizable without modifying any of the core functionality. ------ A running Supply Chain application has a number of components. The docker compose files in the repo handle downloading/building these components for you. They are: - *Validator:* does the technical work of building and validating the blockchain - *Settings TP:* used by the validator to manage on-chain settings - *Supply Chain TP:* validates your transaction payloads, the source code is in `processor/` - *RethinkDB:* - used to store a local copy of blockchain state - *LedgerSync:* - gets state changes from the validator and sends them to the db, source in `ledger_sync/` - *Server:* - provides a REST API for clients to query state and submit transactions through, source in `server/` There are also a couple of components that will help with development, but you wouldn't deploy as a part of the app: - *Shell:* a complete dev environment with all dependencies installed - *Sawtooth REST API:* this lets you send HTTP requests to get information about blocks, transactions, or raw state data You can probably build at least a proof-of-concept version of your app without modifying any of the above components. They are designed to be general purpose. It's possible some of the details of your application aren't properly covered by the existing design, but I wouldn't _start_ with that level of customization. You can track completely unique assets with very specific associated data, without cracking open anything above. ------ So, where you _do_ want to start then, is to write your own client. This would be some sort of UI (could be a web app, could be a CLI, or something else). It would allow users to manage their User/Agent, and build and sign transactions specific to your needs. It would submit these transactions to the Server, and display blockchain state data it fetches from the Server in some useful way. Some capabilities you're going to want to build out: _Creating one or more RecordTypes:_ The two example clients both use a single RecordType, which is submitted during initialization. This RecordType is outlined in a custom JSON file in `/sample_data/core_types.json`. That JSON file is fed into a script: `server/scripts/seed_core_types.js`. Your client could take advantage of this system if it makes sense, or it could be an actual part of the interface, allowing users to create new RecordTypes on the fly. _Create Records:_ You need to create one or more types first, but once those exists you'll want to allow your users to create Records for individual assets they are tracking. _Create and authorize Users/Agents:_ You probably don't want to stray to far from the example clients here. The process goes like this: - User enters info - Private/Public keys are generated - Password is used to encrypt private key - Encrypted private key is sent to server with other user info - The server will hold on to the encrypted private key, which the client will be able to decrypt in order to sign transactions _Update Records:_ Records can change which Agent is their owner or their custodian. Agents can also be authorized as "reporters", which means they can submit updates to Properties associated with a Record (like temperature or location). You'll want to allow users to submit these updates. ------ Good luck! Feel free to ask questions. I would probably rely heavily on the existing example clients as a guide for how to do things like create and sign transactions.

zac (Fri, 09 Feb 2018 01:27:59 GMT):
^ slap dash version of a Supply Chain app developer's guide

YukiTruckServices (Fri, 09 Feb 2018 01:40:56 GMT):
@zac Solid! Three days of digging around condensed into two pages. The digging around was part of the necessary tuition to understand the Sawtooth sawchain. However, your guide has filled in several gaps for me. For example: I didn't realize how the example supply chain network fit in with the underlying sawtooth platform. Thanks for this wonderful guide

zac (Fri, 09 Feb 2018 01:43:34 GMT):
no problem, sorry there isn't something more official out there

zac (Fri, 09 Feb 2018 01:43:49 GMT):
have fun digging around

YukiTruckServices (Fri, 09 Feb 2018 01:44:42 GMT):
As a follow up question, if the RecordType are to core_types.json, then the transactionFamily are to x files?

zac (Fri, 09 Feb 2018 01:45:26 GMT):
transaction family is a broad concept

zac (Fri, 09 Feb 2018 01:45:43 GMT):
it refers to all of the application specific logic

zac (Fri, 09 Feb 2018 01:45:59 GMT):
(application in this case referring to Supply Chain braodly)

zac (Fri, 09 Feb 2018 01:45:59 GMT):
(application in this case referring to Supply Chain broadly)

zac (Fri, 09 Feb 2018 01:46:24 GMT):
So the whole repo are the x files.

YukiTruckServices (Fri, 09 Feb 2018 01:48:34 GMT):
I see. As you suggested, I will start with the template.

YukiTruckServices (Fri, 09 Feb 2018 01:48:45 GMT):
Thanks

CocoLife (Fri, 09 Feb 2018 03:38:38 GMT):
What does SDK mean :-)

zac (Fri, 09 Feb 2018 03:48:48 GMT):
Software Development Kit

CocoLife (Fri, 09 Feb 2018 03:49:04 GMT):
Thank you

zac (Fri, 09 Feb 2018 03:49:08 GMT):
It's code to make it easier to interface with Sawtooth components

zac (Fri, 09 Feb 2018 03:49:18 GMT):
Functions and utilities and the like

CocoLife (Fri, 09 Feb 2018 03:49:41 GMT):
hmm..

CocoLife (Fri, 09 Feb 2018 03:49:55 GMT):
Thanks , I will ask more questions here as I learn more

callmeashok (Fri, 09 Feb 2018 05:34:32 GMT):
I'm having some trouble running sawtooth lake project from https://sawtooth.hyperledger.org/docs/core/releases/0.7/tutorial.html#

callmeashok (Fri, 09 Feb 2018 05:36:35 GMT):

Pictures12.jpg

callmeashok (Fri, 09 Feb 2018 05:37:13 GMT):
can anyone please help me to resolve this issue??

prem-baranwal (Fri, 09 Feb 2018 06:29:57 GMT):
Has joined the channel.

askmish (Fri, 09 Feb 2018 06:33:15 GMT):
@callmeashok 0.7 is pretty old version of sawtooth. Do you want to use that for some reason?

askmish (Fri, 09 Feb 2018 06:34:24 GMT):
@gaurang If you don't have right TPs, your transactions won't be processed.

prem-baranwal (Fri, 09 Feb 2018 06:37:11 GMT):
I wanted to know how do we register a custom transaction family that i have created. I found something in docs version 0.7 (releases/0.7/tutorial.html) where it uses a txnvalidator.js to specify TransactionFamilities setting. But i can not locate the same in latest installed version or the repo.

prem-baranwal (Fri, 09 Feb 2018 06:38:59 GMT):
is it the validator.toml file in /etc/sawtooth directory where we need to provide this setting?

callmeashok (Fri, 09 Feb 2018 06:51:09 GMT):
@askmish yeah I know its an older version. I was following through the tutorial step by step. I also tried to download the latest sawtooth lake 1.1.1 . but i couldn't find some respective folders to execute it.

Koptop (Fri, 09 Feb 2018 07:18:57 GMT):
Has joined the channel.

gaurang (Fri, 09 Feb 2018 07:43:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=J2CyAZGuCmSshjKNG) @askmish Also I noted, when ever I deploy newer version of my TP (however in developer mode I don't increment family version #). I need to restart my restapi and validator.

gaurang (Fri, 09 Feb 2018 07:43:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=J2CyAZGuCmSshjKNG) @askmish Also I noted, when ever I deploy newer version of my TP (however in developer mode I don't increment family version # ). I need to restart my restapi and validator.

askmish (Fri, 09 Feb 2018 10:11:50 GMT):
@callmeashok There's a lot of difference between 1.0.1 and 0.7

askmish (Fri, 09 Feb 2018 10:12:41 GMT):
"i couldn't find some respective folders to execute it" - what directories were you looking for?

askmish (Fri, 09 Feb 2018 10:14:28 GMT):
@gaurang How are you deploying the TPs?

askmish (Fri, 09 Feb 2018 10:14:45 GMT):
dockers or services?

askmish (Fri, 09 Feb 2018 10:14:56 GMT):
or something else

askmish (Fri, 09 Feb 2018 10:16:12 GMT):
@prem-baranwal Transaction family must be registered with a TP to validator

gaurang (Fri, 09 Feb 2018 10:16:35 GMT):
Dockers with mounted volumes, So I can restart them without worrying about data loss.

askmish (Fri, 09 Feb 2018 10:16:38 GMT):
There's a lot of difference between 0.7 and 1.0 architecture and

gaurang (Fri, 09 Feb 2018 10:16:55 GMT):
TP also in docker

askmish (Fri, 09 Feb 2018 10:19:13 GMT):
@gaurang Well, you shouldn't need to restart validator/rest-api, if you're properly unregistering the old TP and then re-registering the new TP.

gaurang (Fri, 09 Feb 2018 10:20:04 GMT):
When I kill the docker, I hope my old TP is unregistered. As it's all about stopping the process.

gaurang (Fri, 09 Feb 2018 10:20:51 GMT):
and as soon as I spin up docker TP with new code, it shows me registered on my validator logs.

askmish (Fri, 09 Feb 2018 10:21:12 GMT):
what issues do you see

gaurang (Fri, 09 Feb 2018 10:22:01 GMT):
When I try to commit new batch, it times out.

gaurang (Fri, 09 Feb 2018 10:22:14 GMT):
Waiting for about 3 to 4 minutes, but not working.

gaurang (Fri, 09 Feb 2018 10:22:30 GMT):
as soon as I restart the Validator and Rest, it works like charm.

askmish (Fri, 09 Feb 2018 10:23:54 GMT):
Probably your existing TP isn't un-registered properly. You should see a log saying your TP has unregistered in validator logs.

gaurang (Fri, 09 Feb 2018 10:24:31 GMT):
Okay, will check in log.

askmish (Fri, 09 Feb 2018 10:25:06 GMT):
When you're registering the new TP, you'll also see register attempt in bot validator and TP logs

gaurang (Fri, 09 Feb 2018 10:25:13 GMT):
So, how to make sure the TP is unregistered peacefully?

askmish (Fri, 09 Feb 2018 10:27:25 GMT):
which language you have the TP written in

dharuq (Fri, 09 Feb 2018 10:31:48 GMT):
Has left the channel.

gaurang (Fri, 09 Feb 2018 10:35:10 GMT):
Javascript

gaurang (Fri, 09 Feb 2018 10:35:10 GMT):
Sorry for late reply, We coded it in Javascript

geraldoyudo (Fri, 09 Feb 2018 11:05:42 GMT):
Has joined the channel.

geraldoyudo (Fri, 09 Feb 2018 11:09:46 GMT):
Hello all, I'm trying to build the docker images in sawtooth-core but I'm having issues. Is there a guide to building the images on windows 10?

AshwinKumar844129 (Fri, 09 Feb 2018 13:28:09 GMT):
I have ubuntu 17.10 when I run "sudo apt-get install -y sawtooth" nothing installed ,

AshwinKumar844129 (Fri, 09 Feb 2018 13:30:40 GMT):

Screenshot from 2018-02-09 18-57-54.png

grkvlt (Fri, 09 Feb 2018 13:35:10 GMT):
It looks like the `sawtooth-block-info-tp` image is not being pushed to the Docker Hub https://hub.docker.com/r/hyperledger/sawtooth-block-info-tp/ but I don't see where in the Jenkinsfile or elsewhere this is supposed to happen?

akuma921 (Fri, 09 Feb 2018 14:00:14 GMT):
Has left the channel.

cmoro-gondor (Fri, 09 Feb 2018 14:19:05 GMT):
Has joined the channel.

Dan (Fri, 09 Feb 2018 14:46:07 GMT):
@rberg2 ^

rberg2 (Fri, 09 Feb 2018 15:24:29 GMT):
@AshwinKumar844129 it appears there are unresolvable dependencies on 17.10. we currently publish builds for Ubuntu 16.04 LTS and plan to support 18.04 LTS additionally. Docker may be a good solution there.

rberg2 (Fri, 09 Feb 2018 15:26:39 GMT):
_looks into the sawtooth-block-info-tp docker image_

bcdotworld (Fri, 09 Feb 2018 15:33:11 GMT):
Has joined the channel.

bcdotworld (Fri, 09 Feb 2018 15:39:12 GMT):
hello guys, so, I have a problem setting up the chain, I actually have a Sawtooth Supply Chain on AWS with inbound tcp ports 4004 and 8008 open, then I set the tcp://public_ip:4004 as a peer for the sawtooth-core docker compose and I start up the validator, but it returns "Endpoint has not completed authorization in xx seconds". any ideas?

MohammadObaid (Fri, 09 Feb 2018 17:31:01 GMT):
Can anyone refer me to a good tutorial which explains high-level workflow of sawtooth. I got this from official https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture.html but it is hard to understand

muzakphile (Fri, 09 Feb 2018 18:56:13 GMT):
Has joined the channel.

alberto_souza (Fri, 09 Feb 2018 19:19:01 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=7gHFJ2FFwoAymQRBF) @zac the sawtooth components are correctly bound :). I passed the -C flag for all... The problem is in the javascript sdk client.. I pass the remote tcp address as argument and I got the error message.

jagsidhu (Fri, 09 Feb 2018 19:19:11 GMT):
Has joined the channel.

jagsidhu (Fri, 09 Feb 2018 19:19:29 GMT):
hello i have questions about using SGX for proof of computing host configuration

jagsidhu (Fri, 09 Feb 2018 19:19:37 GMT):
in a distributed application

zac (Fri, 09 Feb 2018 19:24:08 GMT):
I thought you said TP failed to register, and transactions were permanently pending. What makes you think it's the JS SDK in your client?

alberto_souza (Fri, 09 Feb 2018 19:26:50 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=YJvGNeReboTsMNcX4) @zac because the log message is in my client, just a guess and the log message from the validator instance is ok. Apparently the TP was registered, at least the log message shows that => registered transaction processor: connection_id=7de85679ecce37454e957e21153791e56c7ee01b759a662622ce661433ca0698e27763c1b5f9ab2071360627d121709672e6c3f1c00e751695e06fa5abe0726f, family=onlinevoting, version=0.0.1, namespaces=['e659db']

alberto_souza (Fri, 09 Feb 2018 19:27:31 GMT):
I can query the blockchain through the rest-api as well.

alberto_souza (Fri, 09 Feb 2018 19:28:03 GMT):
But, of course, maybe is a network configuration with my instance in digitalocean...

zac (Fri, 09 Feb 2018 19:29:04 GMT):
when you say "pending" do you mean that you queried that batch status and the validator said it was pending?

zac (Fri, 09 Feb 2018 19:29:20 GMT):
or did you mean it more generally?

alberto_souza (Fri, 09 Feb 2018 19:30:55 GMT):
Yes, even with the log showing that my tp was not registered, I tried to send a transaction. I noticed that specific transaction is always in the pending status.

zac (Fri, 09 Feb 2018 19:32:02 GMT):
Well if you send a request to `/batch_statuses`, and it tells you that the transaction is Pending, that means the validator got it

zac (Fri, 09 Feb 2018 19:32:02 GMT):
Well if you send a request to `/batch_statuses`, and it tells you that the batch is Pending, that means the validator got it

zac (Fri, 09 Feb 2018 19:32:22 GMT):
So I don't think it's a networking issue

zac (Fri, 09 Feb 2018 19:32:53 GMT):
it made it to the validator, but the validator isn't processing it for some reason

zac (Fri, 09 Feb 2018 19:33:18 GMT):
the most common cause I've seen for this is when the validator doesn't have the TP it needs

zac (Fri, 09 Feb 2018 19:33:42 GMT):
are you sure the family name and family version in the transaction header match the TP?

zac (Fri, 09 Feb 2018 19:33:50 GMT):
a typo there would cause that

alberto_souza (Fri, 09 Feb 2018 19:35:55 GMT):
I think it is correct because when I run both client and server in the same network, everything goes fine.

alberto_souza (Fri, 09 Feb 2018 19:41:44 GMT):
another important information... When I run the client from the same network, but in the Digital ocean environment, the client says that registration failed as well... thinking about that, it is a server configuration problem, but I still don't know the cause :(

boydjohnson (Fri, 09 Feb 2018 20:38:45 GMT):
@bcdotworld The 8008 port is usually the REST Api, tcp 8800 is the validator peer port, tcp 4004 is the validator component port (transaction processors, rest apis, ect).

alberto_souza (Fri, 09 Feb 2018 21:08:30 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=js6C9uWy4RzPXhDWi) @zac I started the server using the docker-compose file available in the documentation and the error remains... I will dig a little bit more..

ChrisZhang (Fri, 09 Feb 2018 23:42:07 GMT):
Has joined the channel.

jagsidhu (Sat, 10 Feb 2018 01:32:40 GMT):
is there a way to grab a host's computer configuration ie: number of cores, ram, io and sign it with a key such that the host cannot lie about that configuration through SGX? Assume that the key is distributed through DPKI and there is consensus on that key that means every knows that key belongs to that host ip address.

jagsidhu (Sat, 10 Feb 2018 01:32:52 GMT):
basically a proof-of-computing-power

mdoan (Sat, 10 Feb 2018 01:43:34 GMT):
Has joined the channel.

AshwinKumar844129 (Sat, 10 Feb 2018 10:17:41 GMT):
Is there any guide to run SEAFOOD SUPPLY CHAIN sample without DOCKER on ubuntu 16.04, if not, will you please brief here ?

bcdotworld (Sat, 10 Feb 2018 10:26:46 GMT):
Thank you! I did open the port 8800 on the ec2 machine and set it as peer in the docker validator, but still no luck[ ](https://chat.hyperledger.org/channel/sawtooth?msg=64BG2T5aNJosXhGAH) @boydjohnson

alberto_souza (Sat, 10 Feb 2018 15:00:39 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=ABPRGZkfum362ufdP) @jagsidhu if you follow the instructions provided by the documentation you will be able to run the example.

bogomazov (Sat, 10 Feb 2018 15:36:13 GMT):
How do I generate genesis BatchList with initial values for some keys with protos data structure

bogomazov (Sat, 10 Feb 2018 15:36:13 GMT):
How do I generate genesis BatchList with initial values for some keys with protos data structure?

prem-baranwal (Sat, 10 Feb 2018 15:41:59 GMT):
@askmish thanks for your reply. Could you point me to an example of how to register a new (custom) transaction family with the validator?its not clear in the latest git repo.

arthurgreef (Sat, 10 Feb 2018 17:57:38 GMT):
I do not supposed anyone has figured out how to get 'pip install secp256k1' to work on Windows? I tried all kinds of mingw and cgywin options but still could not get the c library to build. Thanks.

RiceNPea (Sat, 10 Feb 2018 23:27:57 GMT):
Has joined the channel.

CocoLife (Sat, 10 Feb 2018 23:29:35 GMT):
Is anyone able to direct me to a sample model on Github for a traceability sawtooth project :-)

CocoLife (Sat, 10 Feb 2018 23:29:36 GMT):
Tanks

pravindia (Sun, 11 Feb 2018 04:46:01 GMT):
Has joined the channel.

NicolasNLT (Sun, 11 Feb 2018 15:51:56 GMT):
Has joined the channel.

Dan (Sun, 11 Feb 2018 17:29:52 GMT):
https://github.com/hyperledger/sawtooth-supply-chain

Dan (Sun, 11 Feb 2018 17:32:04 GMT):
@MohammadObaid you might get a better workflow understanding from the App Developers Guide https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html I'll also be explaining the overall concepts in the Sawtooth 1.0 webinar this Thursday: https://www.hyperledger.org/resources/webinars

amundson (Sun, 11 Feb 2018 18:07:28 GMT):
the supply chain txn spec is also at https://sawtooth.hyperledger.org/docs/supply-chain/nightly/master/family_specification.html

dave (Sun, 11 Feb 2018 19:51:36 GMT):
Has joined the channel.

dave (Sun, 11 Feb 2018 19:56:55 GMT):
Hi, I need same help to setup sawtooth on docker (vbox on win) and Java SDK. When i try to run IntegerKey test, i see on the validator "registered transaction processor: .... family=intkey ..." but the event TP_PROCESS_REQUEST from the validtor is not sent. Can anyone give a little help? :)

amundson (Sun, 11 Feb 2018 19:57:44 GMT):
have you submitted an intkey transaction?

dave (Sun, 11 Feb 2018 19:58:26 GMT):
yes, the family name is intkey

dave (Sun, 11 Feb 2018 19:59:12 GMT):
and i have already setup the setting using sawset proposal create (the command on the doc)

amundson (Sun, 11 Feb 2018 20:00:02 GMT):
TP_PROCESS_REQUEST is sent when a transaction is being processed (sent from the validator to the transaction processor). you would need to generate an intkey transaction and submit it (for example, via the 'intkey' CLI command).

NileshS (Mon, 12 Feb 2018 03:58:58 GMT):
Has joined the channel.

NileshS (Mon, 12 Feb 2018 03:59:37 GMT):
Hello, I am looking for example on creating and deploying smart contract on to Hyperledger Sawtooth

sudomark (Mon, 12 Feb 2018 07:05:15 GMT):
Has joined the channel.

blockchainblore (Mon, 12 Feb 2018 07:41:06 GMT):
Has joined the channel.

blockchainblore (Mon, 12 Feb 2018 07:41:29 GMT):
hi - trying to follow the guide to check out seth (https://sawtooth.hyperledger.org/docs/seth/nightly/master/seth_developers_guide/getting_started.html) - the docker image present in the documentation - sawtooth-seth.yaml does not seem to be available..any idea from which location I can download it ??

NileshS (Mon, 12 Feb 2018 08:32:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=YmkM7673gP4wqcZ4j) @blockchainblore the correct Compose file is `docker-compose.yaml` in the root of the Seth project.

NileshS (Mon, 12 Feb 2018 08:33:22 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=fGJQARSugb59nQ9K4) from sawtooth-seth

NileshS (Mon, 12 Feb 2018 08:34:04 GMT):
Thanks to @grkvlt who helped me to find this file

NileshS (Mon, 12 Feb 2018 09:19:40 GMT):
Hello team where to find image

NileshS (Mon, 12 Feb 2018 09:19:41 GMT):
Pulling block-info-tp (hyperledger/sawtooth-block-info-tp:latest)... ERROR: manifest for hyperledger/sawtooth-block-info-tp:latest not found

NileshS (Mon, 12 Feb 2018 09:19:47 GMT):
?

NileshS (Mon, 12 Feb 2018 09:32:09 GMT):
Hello, any tutorial on deployng chaincode on to sawtooth ?

jceb (Mon, 12 Feb 2018 09:53:51 GMT):
Has joined the channel.

mraikwar (Mon, 12 Feb 2018 10:38:24 GMT):
Has joined the channel.

devTran (Mon, 12 Feb 2018 10:53:20 GMT):
Has joined the channel.

mclk (Mon, 12 Feb 2018 12:21:23 GMT):
Has joined the channel.

mclk (Mon, 12 Feb 2018 12:21:29 GMT):
hi ... i m looking for an image for docker of Sawtooth Supply Chain ... thank for your answer ??

grkvlt (Mon, 12 Feb 2018 13:07:33 GMT):
@NileshS 1 you'll need to build the `sawtooth-core` Docker images yourself to get `sawtooth-block-info-tp` and then change the `docker-compose.yaml` file to just refer to `sawtooth-block-info-tp:latest` without `hyperledger` currently, as this image has not been pushed to Docker Hub yet...

grkvlt (Mon, 12 Feb 2018 13:09:48 GMT):
also, chaincode is a Fabric specific thing, you can deploy Solidity smart contracts with the `seth-tp` transaction processor, or add your own transaction processor for custom blockchain business logic...

grkvlt (Mon, 12 Feb 2018 13:11:01 GMT):
The Seth documentation is at https://sawtooth.hyperledger.org/docs/seth/nightly/master/seth_developers_guide/getting_started.html

grkvlt (Mon, 12 Feb 2018 13:11:37 GMT):
@'NileshS 1'

NileshS (Mon, 12 Feb 2018 13:11:43 GMT):
Thanks @grkvlt for help..so quick question how do we deploy smart contracts on to sawtooth other than solidity?

grkvlt (Mon, 12 Feb 2018 13:13:14 GMT):
no, only Solidity is available with Seth. for Sawtooth you can design a transaction processor to handle your specific transaction family if you want to build a different solution

NileshS (Mon, 12 Feb 2018 13:14:10 GMT):
oh ok..any detail documentation I can refer?

NileshS (Mon, 12 Feb 2018 13:14:24 GMT):
I have been refering https://github.com/delventhalz/transfer-chain-js/tree/master but unable to make the setup work

NileshS (Mon, 12 Feb 2018 13:23:14 GMT):
Thanks again @grkvlt

grkvlt (Mon, 12 Feb 2018 13:26:48 GMT):
Yeah, `transfer-chain` is a transaction processor for Sawtooth, you would install it on the validator nodes in the Sawtooth network

NileshS (Mon, 12 Feb 2018 13:27:35 GMT):
I tried but its not working while creating asset

NileshS (Mon, 12 Feb 2018 13:27:57 GMT):
made some changes to yaml and make it work...but create asset not working (giving 405)

grkvlt (Mon, 12 Feb 2018 13:28:28 GMT):
however it's ~6 months old, so will be using an old version of the Sawtooth APIs (i.e. not 1.0 compatible) so you cannot use it in its current state. Suggest you contact the author to find out if they are working on an update?

NileshS (Mon, 12 Feb 2018 13:29:26 GMT):
oh ok..let me see..Thanks

grkvlt (Mon, 12 Feb 2018 13:31:53 GMT):
@zac ^^

zac (Mon, 12 Feb 2018 13:35:20 GMT):
Did not expect, that thing to take on such a life after the presentation I wrote it for

zac (Mon, 12 Feb 2018 13:35:35 GMT):
Did not expect that thing to take on such a life after the presentation I wrote it for

zac (Mon, 12 Feb 2018 13:36:00 GMT):
It is probably broken as written, and needs to be pegged to `0.8`

marek5050 (Mon, 12 Feb 2018 13:42:01 GMT):
Has joined the channel.

zac (Mon, 12 Feb 2018 13:58:09 GMT):
Okay, updated the docker-compose file:

zac (Mon, 12 Feb 2018 13:58:09 GMT):
https://github.com/delventhalz/transfer-chain-js

zac (Mon, 12 Feb 2018 14:07:43 GMT):
@NileshS 1 ^^

zac (Mon, 12 Feb 2018 14:08:26 GMT):
Also, Rocket Chat lets you include spaces in your username, but if you do, it is impossible to ping you as near as I can tell

zac (Mon, 12 Feb 2018 14:08:33 GMT):
So probably best not to

grkvlt (Mon, 12 Feb 2018 15:49:12 GMT):
+1 rocket chat can be a wee bit ... idiosyncratic at times

Dan (Mon, 12 Feb 2018 15:52:52 GMT):
It's "special"

amundson (Mon, 12 Feb 2018 15:53:04 GMT):
quite special

amundson (Mon, 12 Feb 2018 15:53:59 GMT):
when we used to use IRC, I remember having a hundred bad clients to choose from instead of one

Dan (Mon, 12 Feb 2018 16:06:08 GMT):
lol

thegreatsunra (Mon, 12 Feb 2018 17:01:27 GMT):
We're running a Sawtooth validator and a Node-based transaction processor, and have an issue where the validator often reports `Block publishing is suspended until new chain head arrives.` after handling only a few transactions. We've managed to reproduce the message using the intkey transaction processor. When we run `intkey create_batch` and then `intkey load`, intkey creates and submits two batches to the validator. 50% of the time it successfully processes each batch and adds two blocks to the chain. However, 50% of the time it only processes one of the two batches, adds a single block, and throws the `Block publishing is suspended until new chain head arrives.` message. What's going on here? If this is expected behavior, what is the proper way to recover from it?

Dan (Mon, 12 Feb 2018 18:37:53 GMT):
Hi the `suspended` message should just be an `INFO` level message. It's expected and it's just indicating that the chain head is going to be updated with a new block. The validator doesn't want to build a new block because it knows it's in the process of updating the chain. I think you should one of those for every block. The issue with your second batch is not clear. Do you get an error that the transaction failed? Or is it possibly getting committed and the `suspended` message was just throwing you off?

postables (Mon, 12 Feb 2018 18:57:01 GMT):
Has joined the channel.

postables (Mon, 12 Feb 2018 19:09:19 GMT):
what would be the different use cases in which sawtooth would be a better choice over fabric and vice-versa?

amundson (Mon, 12 Feb 2018 19:23:59 GMT):
fabric has better support for bluemix

amundson (Mon, 12 Feb 2018 19:24:44 GMT):
seriously though, there is probably not an easy objective answer. they have very different architectures.

amundson (Mon, 12 Feb 2018 19:28:40 GMT):
(sorry if I offended anyone working on getting Sawtooth working on bluemix)

kakuzu (Mon, 12 Feb 2018 19:29:55 GMT):
yeah in terms of support and how tech will grow depends on support. I have to tendermint channel , burrow no one bothers to answer and git install instructions doesn't work.

foleymic (Mon, 12 Feb 2018 19:37:13 GMT):
Has joined the channel.

benoit.razet (Mon, 12 Feb 2018 20:11:51 GMT):
Hi, I am hitting the following validator error while running the parallel scheduler:

benoit.razet (Mon, 12 Feb 2018 20:11:51 GMT):
Hi, I am hitting the following validator error when using the parallel scheduler:

benoit.razet (Mon, 12 Feb 2018 20:12:01 GMT):
``` validator_1 | [2018-02-12 19:00:03.056 ERROR future] An unhandled error occurred while running future callback validator_1 | Traceback (most recent call last): validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/networking/future.py", line 79, in run_callback validator_1 | self._callback_func(self._request, self._result) validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/execution/executor.py", line 152, in _future_done_callback validator_1 | error_data=response.extended_data) validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/execution/scheduler_parallel.py", line 655, in set_transaction_execution_result validator_1 | txn_signature) validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/execution/scheduler_parallel.py", line 580, in _remove_subsequent_result_because_of_batch_failure validator_1 | if self._is_txn_to_replay(txn_id, poss_successor, seen): validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/execution/scheduler_parallel.py", line 559, in _is_txn_to_replay validator_1 | possible_successor) validator_1 | File "/usr/local/lib/python3.6/dist-packages/sawtooth_validator-1.0.1.dev1-py3.6.egg/sawtooth_validator/execution/scheduler_parallel.py", line 540, in _is_in_same_batch validator_1 | self._batches_by_txn_id[txn_id_2] validator_1 | KeyError: 'f5ee76346bf223c8f31869f9f904b5423c1e3ac547f49eeda6cb5b5b18189dc902cb5712559c8c3ea230adecaffd76f3a15c6ba75138387812c4b680384490a1' ```

benoit.razet (Mon, 12 Feb 2018 20:12:59 GMT):
Has anyone run into something similar?

thegreatsunra (Mon, 12 Feb 2018 20:21:28 GMT):
@Dan Thanks for the clarity. In attempting to eliminate variables within our server environment, I'm currently testing the behavior of intkey within the provided Sawtooth Docker images. It appears that `intkey load` always sends two batches, and while _most_ of the time those batches are processed as two unique blocks each with one batch, _occasionally_ they get processed as a _single_ block containing _two_ batches. So, it seems `intkey load` is indeed working as expected. I need to do more snooping inside our custom transaction processor to get to the bottom of what's happening in there.

blockchainblore (Tue, 13 Feb 2018 05:33:22 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=NjsxAqAh2nJ23o2cT) @NileshS 1 @NileshS 1 I did the following steps - 1. git clone https://github.com/hyperledger/sawtooth-seth.git and then tried to run the docker image using the following command - $ docker-compose -f docker-compose.yaml` up...and I get the following error - "repository does not exist"

NileshS (Tue, 13 Feb 2018 05:49:46 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=7LgFDfvLqAizkoLLG) @zac Any plans to update https://github.com/delventhalz/transfer-chain-js (which can run with latest version of Sawtooth)?

NileshS (Tue, 13 Feb 2018 05:51:55 GMT):
as currently, create asset and transfer asset does not work

NileshS (Tue, 13 Feb 2018 05:53:23 GMT):
I made changes to yaml as per new version but unable to make this two api work so thought to check

NileshS (Tue, 13 Feb 2018 05:53:32 GMT):
Appreciate help :)

NileshS (Tue, 13 Feb 2018 05:54:32 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=WvbTFjxhWGK8PLnYP) @blockchainblore Please refer previous comment from @grkvlt ...Thanks

WhiskyLin (Tue, 13 Feb 2018 06:08:25 GMT):
Has joined the channel.

rajivgandhi2010 (Tue, 13 Feb 2018 06:15:49 GMT):
Has left the channel.

devTran (Tue, 13 Feb 2018 07:32:05 GMT):
hi, anyone help me how to deploy nodes connect together into a supply chain network, includes: permission, transfer data, ... ? I readed the lastest sawtooth document which also contains the basic infos above .But it's great if anyone give me a instruction link with step by step :)

zac (Tue, 13 Feb 2018 08:41:55 GMT):
@NileshS You may have to remove your existing docker containers/images or something. I ran `transfer-chain-js` with the new `docker-compose.yam`, with hyperledger components pegged to `:0.8` instead of `:latest`. It worked fine for me. Make sure you have the newest `master`: https://github.com/delventhalz/transfer-chain-js

zac (Tue, 13 Feb 2018 08:41:55 GMT):
@NileshS You may have to remove your existing docker containers/images or something. I ran TransferChain with the new `docker-compose.yaml`, with hyperledger components pegged to `:0.8` instead of `:latest`. It worked fine for me. Make sure you have the newest `master`: https://github.com/delventhalz/transfer-chain-js

zac (Tue, 13 Feb 2018 08:43:58 GMT):
If you are still having trouble, maybe you could post your logs?

zac (Tue, 13 Feb 2018 08:45:51 GMT):
No plans to update it to to 1.0. I wrote it as an illustration for a talk about the JS Client SDK, which has been completely removed from 1.0.

zac (Tue, 13 Feb 2018 08:47:17 GMT):
Perhaps I could do a separate branch or something, if people just want a simple JS 1.0 example.

zac (Tue, 13 Feb 2018 08:50:11 GMT):
Probably worth checking out the 1.0 docs first though: https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_js.html

callmeashok (Tue, 13 Feb 2018 08:51:54 GMT):
can anyone tell me how to config a validator Rest-api and what it validates in sawtooth-tuna?

NileshS (Tue, 13 Feb 2018 08:51:56 GMT):
Thanks @zac ...will try sdk_sbmit_tutorial

prem-baranwal (Tue, 13 Feb 2018 13:20:23 GMT):
@zac @askmish and others, Can someone explain how a transaction is distributed to the Transaction Processors? I figured out that a TransactionProcessor is associated with a Transaction Family during startup (corresponding handler is registered with TP). But still i can not figure out how a transaction is distributed among TPs so that it reaches atleast one correct Transaction handler.

prem-baranwal (Tue, 13 Feb 2018 13:25:58 GMT):
if a validator validates the transaction, how does he know about a particular transaction family?

askmish (Tue, 13 Feb 2018 14:02:17 GMT):
@prem-baranwal So, here's what happens... The validator has no idea where to send your transaction to, unless you specify that in your client transaction.

askmish (Tue, 13 Feb 2018 14:04:16 GMT):
A TP registers with a validator saying "I'm here and can work with "

askmish (Tue, 13 Feb 2018 14:05:53 GMT):
Your client when creating a transaction adds the TF in the Transaction header, before adding it to a bigger batch.

askmish (Tue, 13 Feb 2018 14:07:19 GMT):
When it reaches the validator, the Transactions are processed and based on the TF in the Transaction header, it forwards to any handler that has registered for it

askmish (Tue, 13 Feb 2018 14:07:49 GMT):
If the validator couldn't find it, it usually drops the transaction.

prem-baranwal (Tue, 13 Feb 2018 14:10:26 GMT):
"....TP registers with a validator saying "I'm here and can work with ....". Can you provide an example/link please? I guess this happens when TP is started.

askmish (Tue, 13 Feb 2018 14:11:14 GMT):
yes

askmish (Tue, 13 Feb 2018 14:12:00 GMT):
when a TP starts the first thing(not literally though) it does is attempt to register with a validator

askmish (Tue, 13 Feb 2018 14:13:15 GMT):
After a TP is registered all your TF-specific transactions originating from client, will begin processing at the same TP.

prem-baranwal (Tue, 13 Feb 2018 14:15:19 GMT):
i could find that code now.

prem-baranwal (Tue, 13 Feb 2018 14:16:17 GMT):
@askmish thanks for your explanation. :v:

akula (Tue, 13 Feb 2018 15:47:30 GMT):
Has joined the channel.

jagsidhu (Tue, 13 Feb 2018 16:41:20 GMT):
can we use EVM inside of sgx? will it fit?

thegreatsunra (Tue, 13 Feb 2018 16:43:51 GMT):
Reviewing the logs from our sawtooth validator, we often see the following error when submitting a new batch to our transaction processor (hashes truncated for legibility): ``` Block 4dfd... ( block_num:11, state:aca2..., previous_block_id:2c1f... ) failed validation: Block ( 4dfd... ( block_num:11, state:aca2..., previous_block_id:2c1f... ) ) rejected due to state root hash mismatch: aca2... != 16ac... ``` This appears to jam up the validator, and it won't even acknowledge subsequent batches (even from intkey) unless we stop and restart the sawtooth-validator process. Any insight into what's going on here, and how we can prevent it?

pschwarz (Tue, 13 Feb 2018 16:53:35 GMT):
@thegreatsunra Are you use parallel scheduler?

thegreatsunra (Tue, 13 Feb 2018 16:59:18 GMT):
@pschwarz Taking a look now. Do you recommend parallel or serial?

thegreatsunra (Tue, 13 Feb 2018 17:05:50 GMT):
@pschwarz Running the validator with the `--scheduler parallel` option now, and it appears to be a lot more stable. Thank you!

amundson (Tue, 13 Feb 2018 17:38:12 GMT):
technically, they should give the same results

Dan (Tue, 13 Feb 2018 17:39:35 GMT):
There's a recent bug identified in the parallel scheduler. It won't present all the time. If you hadn't specified the scheduler before, it would have defaulted to parallel and you would have been exposed to the bug. If you specify serial it should not come up. (fyi, bug is resolved in master but not yet backported to 1.0.x)

Dan (Tue, 13 Feb 2018 17:40:25 GMT):
`Shameless advertising:` ```Sawtooth 1.0 Webinar. This Thursday 10am pacific``` https://www.hyperledger.org/resources/webinars You may now return to your regularly scheduled :rocket: chatting.

pschwarz (Tue, 13 Feb 2018 17:57:49 GMT):
The reason I asked about the scheduler is that there was an issue just fixed in master (should be in the latest nightly): https://github.com/hyperledger/sawtooth-core/pull/1434

pschwarz (Tue, 13 Feb 2018 17:58:53 GMT):
The fact that it works, though, I'd suggest making sure that your state encodings are deterministic. What sort of encoding scheme are you using?

Aleshia (Tue, 13 Feb 2018 19:42:26 GMT):
For someone with both experience in Java and Pyhton, is there a more beneficial language to develop an app in, or is it just personal preference?

boydjohnson (Tue, 13 Feb 2018 19:44:31 GMT):
Hi Aleshia, I think it is mainly personal preference. I have done more work with the python sdk. I did make a Java workload library for running workloads against sawtooth: https://github.com/boydjohnson/sawtooth-workload.

zac (Tue, 13 Feb 2018 19:57:45 GMT):
@Aleshia The Python SDK is better supported, and is what the majority of the code is written in

zac (Tue, 13 Feb 2018 19:57:45 GMT):
@Aleshia The Python SDK is better supported, and is what the majority of the core code is written in

zac (Tue, 13 Feb 2018 19:58:26 GMT):
I would use Python if it's not a big difference to you in terms of personal preference.

Aleshia (Tue, 13 Feb 2018 20:00:41 GMT):
@boydjohnson Thank you, I'll check out your github in a bit! @zac That's what I figured from the table, thanks for confirming!

amundson (Tue, 13 Feb 2018 20:10:43 GMT):
@Aleshia if you are up for a new language, many of us are using Rust now and like it a lot. otherwise, Python is a good choice.

horvatic (Tue, 13 Feb 2018 20:10:47 GMT):
Has joined the channel.

kakuzu (Tue, 13 Feb 2018 20:17:13 GMT):
transaction are wrapped in a batch so do we have a specific number of transactions in a single batch.

boydjohnson (Tue, 13 Feb 2018 20:21:32 GMT):
There aren't a specified number of txns that a batch must have. Considerations are that batches are atomic and also there is a higher txn throughput with (up to a point) more txns per batch. It is up to the transaction family designer to determine an appropriate number of txns per batch.

kakuzu (Tue, 13 Feb 2018 20:22:49 GMT):
so these are batches are same as blocks in ethereum

boydjohnson (Tue, 13 Feb 2018 20:23:25 GMT):
No, blocks contain a number of batches.

boydjohnson (Tue, 13 Feb 2018 20:23:47 GMT):
The difference is the extra layer of atomicity of batches.

kakuzu (Tue, 13 Feb 2018 20:24:10 GMT):
so i do the transaction is put in batch and to block and then validator mine it , here they validate it

boydjohnson (Tue, 13 Feb 2018 20:24:29 GMT):
I think that is correct.

horvatic (Tue, 13 Feb 2018 20:24:32 GMT):

Java TicTacToe Example Error.png

kakuzu (Tue, 13 Feb 2018 20:25:24 GMT):
batch->block->validate.

boydjohnson (Tue, 13 Feb 2018 20:26:38 GMT):
@horvatic The java transaction processor should be on tcp port 4004.

horvatic (Tue, 13 Feb 2018 20:29:51 GMT):
@boydjohnson nice. Must have missed it in the doc, thanks!

zac (Tue, 13 Feb 2018 20:39:20 GMT):
@kakuzu Transactions in other blockchains (including Ethereum), are sort of a combination of batches and transactions in Sawtooth. Like in Ethereum, transactions are discrete bits of logic, but by combining them in batches you ensure either _every_ transaction is added to the chain, or _none_ of the transactions are added to the chain. This sort of atomicity on the transaction-level in Ethereum. So batches don't really have an exact analogue.

zac (Tue, 13 Feb 2018 20:39:20 GMT):
@kakuzu Transactions in other blockchains (including Ethereum), are sort of a combination of batches and transactions in Sawtooth. Like in Ethereum, transactions are discrete bits of logic, but by combining them in batches you ensure either _every_ transaction is added to the chain, or _none_ of the transactions are added to the chain. This sort of atomicity is only on the transaction-level in Ethereum. So batches don't really have an exact analogue.

zac (Tue, 13 Feb 2018 20:39:29 GMT):
Blocks are the exact same idea though.

zac (Tue, 13 Feb 2018 20:39:29 GMT):
Blocks are the same idea though.

zac (Tue, 13 Feb 2018 20:40:13 GMT):
transaction(s) -> batch(es) -> block

kakuzu (Tue, 13 Feb 2018 20:48:15 GMT):
yeah i got confused while reading. in ethereum it straightforward i do the transaction it get in block mined and committed.

kakuzu (Tue, 13 Feb 2018 20:50:56 GMT):
@zac but in sawtooth what is saw till now transaction are included in batched and send for the validator. Just wording is different , thanks for replying.

zac (Tue, 13 Feb 2018 20:51:37 GMT):
no problem

kakuzu (Tue, 13 Feb 2018 20:52:23 GMT):
do we have specific size for batch

kakuzu (Tue, 13 Feb 2018 21:05:13 GMT):
Transaction header is signed by the signer’s private key (not sent with the transaction) and the resulting signature is stored in header_signature. this is fine if i do transaction i sign it . The batcher_public_key field must match the public key used to sign the batch in which this transaction is contained. who will sign it. Does it mean single transaction in a batch

boydjohnson (Tue, 13 Feb 2018 21:10:53 GMT):
No it just means that the transaction signer must know about the batch signer. It makes it so that you can't add someone else's transaction to your batch, which could be used for nefarious purposes.

kakuzu (Tue, 13 Feb 2018 21:11:13 GMT):
who is making the batch

kakuzu (Tue, 13 Feb 2018 21:11:33 GMT):
confused sorry

boydjohnson (Tue, 13 Feb 2018 21:12:26 GMT):
It could be the same signer as the transaction or different. Most often it is going to be the same, but you could imagine a browser client signing transactions and then a rest client batching them and sending them to the validator.

kakuzu (Tue, 13 Feb 2018 21:14:44 GMT):
ok. what if i set value to n=5 in some smart contract so i have single transaction and it put it in a batch and send. my batch will have single transaction.

boydjohnson (Tue, 13 Feb 2018 21:15:20 GMT):
It is fine to have a single transaction in a batch.

Tellus (Wed, 14 Feb 2018 00:55:05 GMT):
Has joined the channel.

zac (Wed, 14 Feb 2018 02:07:11 GMT):
In [Sawtooth Supply Chain](https://github.com/hyperledger/sawtooth-supply-chain) there are browser clients which build and sign their own transactions with the user's private key. Then the transaction is sent to the Node.js server which will wrap the transaction in a batch, signed with the server's private key, and send it on to the validator

zac (Wed, 14 Feb 2018 02:07:11 GMT):
In [Sawtooth Supply Chain](https://github.com/hyperledger/sawtooth-supply-chain) there are browser clients which build and sign their own transactions with the user's private key. Then the transaction is sent to the Node.js server which will wrap the transaction in a batch, signed with the server's private key, and then send it on to the validator

zac (Wed, 14 Feb 2018 02:09:44 GMT):
The server makes its public key available via an HTTP endpoint (`/info`), so the browser clients can set up their transaction headers properly

zac (Wed, 14 Feb 2018 02:11:04 GMT):
The clients sometimes sends multiple related transactions together to the server, and those will be wrapped in a single batch

zac (Wed, 14 Feb 2018 02:11:27 GMT):
But if the client sends one transaction at a time, then it will be one transaction per batch

zac (Wed, 14 Feb 2018 02:12:00 GMT):
However, you can imagine a scenario where the server acts as some sort of load balancer, batching together transactions from multiple users to speed up processing

blockchainblore (Wed, 14 Feb 2018 08:46:25 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=NWmDJ7Xtc2mqrEdrf) @NileshS I didn't completely understand the reply. Could you please let me know which comment from @grkvit I need to refer to?

shalinigpt (Wed, 14 Feb 2018 09:08:43 GMT):
Has joined the channel.

sibil (Wed, 14 Feb 2018 10:16:05 GMT):
How do I register/add a new Transaction Family?

sibil (Wed, 14 Feb 2018 10:16:05 GMT):
How do I register/add a new Transaction Processor?

sibil (Wed, 14 Feb 2018 10:16:58 GMT):
Say I have written a new Transaction Family using the Python SDK

sibil (Wed, 14 Feb 2018 10:16:58 GMT):
Say I have written a new TP using the Python SDK

sibil (Wed, 14 Feb 2018 10:17:04 GMT):
How do I add this to sawtooth?

sibil (Wed, 14 Feb 2018 10:17:04 GMT):
How do I tell Validator about my new transaction family? How is the registration procedure? Couldn't find anything in 1.0 documentation.

sibil (Wed, 14 Feb 2018 10:17:04 GMT):
How do I tell Validator about my new TP? How is the registration procedure? Couldn't find anything in 1.0 documentation.

sibil (Wed, 14 Feb 2018 10:17:19 GMT):
I have a AWS sawtooth instance ready.

bcdotworld (Wed, 14 Feb 2018 11:52:23 GMT):
so, if I want te expose my blockchain outside the local network, I'll have to replace every bind and endpoint to the machine IP address?

bcdotworld (Wed, 14 Feb 2018 11:52:23 GMT):
so, if I want to expose my blockchain outside the local network, I'll have to replace every bind and endpoint to the machine IP address?

leonardo.angelini (Wed, 14 Feb 2018 12:03:56 GMT):
Has joined the channel.

sibil (Wed, 14 Feb 2018 13:02:37 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=dMb3sSocuG8imbG2Q) @bcdotworld I think only the validator & the rest API endpoints would need outside visibility.

bcdotworld (Wed, 14 Feb 2018 13:03:36 GMT):
@sibil thank you! I'll try it out!

bcdotworld (Wed, 14 Feb 2018 13:14:47 GMT):
@sibil what about the network keys? should I set it manually or generate them in some way?

bcdotworld (Wed, 14 Feb 2018 13:14:47 GMT):
@sibil what about the network keys? should I set them manually or generate them in some way?

bravobardo (Wed, 14 Feb 2018 14:16:12 GMT):
Has joined the channel.

bravobardo (Wed, 14 Feb 2018 14:17:05 GMT):
Hello. Have you faced the error "Version in "./sawtooth-default.yaml" is unsupported." during docker-composer installation?

Dan (Wed, 14 Feb 2018 14:45:06 GMT):
can someone verify the example validator.toml file loads correctly? I'm away from my linux machine today and there's a question on the mail list.

horvatic (Wed, 14 Feb 2018 14:56:07 GMT):
Can someone point me to the endpoints doc's for the Java SDK example

benoit.razet (Wed, 14 Feb 2018 15:34:32 GMT):
I created a JIRA ticket for a bug we encounter when transaction families requiring block_info data (like the timestamp of the current block) can't get the data.

benoit.razet (Wed, 14 Feb 2018 15:34:35 GMT):
https://jira.hyperledger.org/browse/STL-1063

benoit.razet (Wed, 14 Feb 2018 16:03:19 GMT):
I hope this will help track down the issue. The ticket describes how to reproduce the issue by modifying slightly intkey to get the timestamp from the block_info. In our system we also encounter the problem with sawtooth settings (instead of block_info)

LuisMarado (Wed, 14 Feb 2018 18:01:40 GMT):
Has joined the channel.

Dan (Wed, 14 Feb 2018 19:08:27 GMT):
thanks! having a detailed bug like that with a full reproducer is one of the best things we can get.

kakuzu (Wed, 14 Feb 2018 19:45:21 GMT):
ubuntu@ip-172-30-0-105:~$ sudo xo create game --username jack Error: Failed to connect to http://127.0.0.1:8008/batches: HTTPConnectionPool(host='127.0.0.1', port=8008): Max retries exceeded with url: /batches (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))

kakuzu (Wed, 14 Feb 2018 19:45:49 GMT):
unable to make new game

rberg2 (Wed, 14 Feb 2018 19:59:46 GMT):
@kakuzu Is the rest-api running and accessible over 127.0.0.1? you may need to specify a --url for xo to connect to the rest api if its not bound to 127.0.0.1:8008

kakuzu (Wed, 14 Feb 2018 20:06:19 GMT):
ok thanks

CocoLife (Wed, 14 Feb 2018 20:12:33 GMT):
Hello everyone, I have a question regarding the sawtooth lake seafood project, I see that IoT device will be attached to the seafood to measure the temperature during the transit. what happens when the seafood passes through a zone where there is no access to internet. how would the IoT sensor feed to the blockchain the data ?

kakuzu (Wed, 14 Feb 2018 20:15:30 GMT):
not an expert but depends upon iot device if it can keep data cached. in some IOT devices, they keep reading to themself until we called. some nfc enabled device do that

CocoLife (Wed, 14 Feb 2018 20:17:42 GMT):
okay, I would like to hear more thoughts on that area :-)

CocoLife (Wed, 14 Feb 2018 20:17:49 GMT):
Thanks Kakuzu :-)

kakuzu (Wed, 14 Feb 2018 20:35:05 GMT):

Clipboard - February 14, 2018 3:34 PM

mfford (Wed, 14 Feb 2018 21:28:02 GMT):
The Hyperledger Sawtooth Team will be hosting a Technical Forum on Thursday, Feb 15th from 10-11am CDT. The technical forums feature presentations and discussions for the Hyperledger Sawtooth platform. We invite Hyperledger community members interested in Hyperledger Sawtooth to join our forum! Here are the details: Title: Hyperledger Sawtooth Technical Forum Day: Thursday, Feb 15th Time: 10-11am CDT Agenda: 1. Introductions-Mark Ford 2. Rust SDK & Sawtooth-Peter Schwarz 3. Open Forum We are using the HL Zoom account for these calls: Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/186952297 Or iPhone one-tap : US: +16699006833,,186952297## or +16465588656,,186952297## Or Telephone: Dial(for higher quality, dial a number based on your current location): US: +1 669 900 6833 or +1 646 558 8656 or +1 877 369 0926 (Toll Free) or +1 855 880 1246 (Toll Free) Meeting ID: 186 952 297 International numbers available: https://zoom.us/zoomconference?m=sQMXAYDPFm9MsBtks9qhHbn04r0jrDVv

Dan (Wed, 14 Feb 2018 21:28:49 GMT):
@dhuseby rust item might be of interest to you ^

sibil (Thu, 15 Feb 2018 06:10:45 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=xHXjJJYEvdz8ymTcf)

sibil (Thu, 15 Feb 2018 06:10:51 GMT):
Please help.

AdamParker (Thu, 15 Feb 2018 06:15:57 GMT):
A TP registers itself with the Validator. It is automatically utilized for entries with it's family/version. There are tutorials on writing a transaction processor but I personally found the most usefulness reverse engineering the intkey example.

HargobindGupta (Thu, 15 Feb 2018 07:20:24 GMT):
Has joined the channel.

sibil (Thu, 15 Feb 2018 08:03:38 GMT):
@AdamParker - Thanks. After the registration the TP logic is stored within the validator? Or Will the validator contact TP for each request?

gaurang (Thu, 15 Feb 2018 10:01:45 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=HfNkXCSkpuGkxFEJK) @sibil Our Exp. says if you terminate the TP processor, it will not validate any more tx. It will validate the data only when you switch on the TP again.

sibil (Thu, 15 Feb 2018 10:03:04 GMT):
Thanks @gaurang

sibil (Thu, 15 Feb 2018 10:04:15 GMT):
How do I run a Python TP? Say I have renamed the intKey example python TP.

sibil (Thu, 15 Feb 2018 10:05:18 GMT):
And how the Validator knows about the TP path/port? I couldn't find this in the documentation.

askmish (Thu, 15 Feb 2018 12:19:42 GMT):
@sibil The TP tells it to validator, when calling "processor.add_handler(handler)" i.e. when registering itself

askmish (Thu, 15 Feb 2018 12:19:42 GMT):
did you try: https://github.com/hyperledger/sawtooth-marketplace

sibil (Thu, 15 Feb 2018 12:23:50 GMT):
I see

sibil (Thu, 15 Feb 2018 12:24:09 GMT):
Thanks @askmish

sibil (Thu, 15 Feb 2018 12:24:52 GMT):
When a request arrive through the REST API, it is forwarded to the Validator.

sibil (Thu, 15 Feb 2018 12:25:13 GMT):
The Validator communicates over ZMQ to the TP?

askmish (Thu, 15 Feb 2018 15:00:52 GMT):
@sibil yep it does

ScanTrust (Thu, 15 Feb 2018 15:21:50 GMT):
Has joined the channel.

cmoro-deusto (Thu, 15 Feb 2018 17:30:17 GMT):
Has joined the channel.

cmoro-deusto (Thu, 15 Feb 2018 17:39:24 GMT):
hi all! Looking forward for the "Hyperledger Sawtooth v1.0: Market Significance and Technical Overview" webcast!

cmoro-deusto (Thu, 15 Feb 2018 17:40:05 GMT):
@mfford i'm afraid i've missed the "Hyperledger Sawtooth Technical Forum", is it available somewhere?

mfford (Thu, 15 Feb 2018 18:48:41 GMT):
@cmoro-deusto it is available here: https://drive.google.com/drive/folders/0B_NJV6eJXAA1VnFUakRzaG1raXc

cmoro-deusto (Thu, 15 Feb 2018 19:01:55 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=E7jratzwKYvwCTvfH) @mfford Thanks very much!

candidosg (Thu, 15 Feb 2018 20:12:36 GMT):
Where can I find the correct documentation for the demo of the marketplace?

kikko7 (Thu, 15 Feb 2018 21:19:56 GMT):
Has joined the channel.

TsuiSauChi (Thu, 15 Feb 2018 21:46:45 GMT):
Has joined the channel.

ArturoSerrano (Fri, 16 Feb 2018 08:22:04 GMT):
Has joined the channel.

yarasan (Fri, 16 Feb 2018 09:16:33 GMT):
Has joined the channel.

askmish (Fri, 16 Feb 2018 10:12:03 GMT):
did you look at: https://github.com/hyperledger/sawtooth-marketplace

candidosg (Fri, 16 Feb 2018 11:44:08 GMT):
@askmish thanks

horvatic (Fri, 16 Feb 2018 14:30:06 GMT):

python error.PNG

askmish (Fri, 16 Feb 2018 15:02:20 GMT):
well get_version is not a win32 application. :) This is a windows thing. An easy fix is to add 'python3' to arg list ['python3', '../../../bin/get_version']

askmish (Fri, 16 Feb 2018 15:03:58 GMT):
@horvatic

askmish (Fri, 16 Feb 2018 15:15:35 GMT):
oh and you have to specify an argument

horvatic (Fri, 16 Feb 2018 15:16:20 GMT):
tcp://localhost:4004?

horvatic (Fri, 16 Feb 2018 15:17:40 GMT):
@askmish Getting this error now `FileNotFoundError: [WinError 2] The system cannot find the file specified` most likey has to do with the missing argument you are speaking of

askmish (Fri, 16 Feb 2018 15:24:19 GMT):
no a target for setup tools like build, install, etc.

horvatic (Fri, 16 Feb 2018 15:27:00 GMT):
Yeah I've been targeting install. Running this python setup.py install

horvatic (Fri, 16 Feb 2018 15:27:00 GMT):
Yeah I've been targeting install. `Running this python setup.py install`

askmish (Fri, 16 Feb 2018 15:28:32 GMT):
could you paste the full log

horvatic (Fri, 16 Feb 2018 15:29:33 GMT):
log from `C:\\Program Files (x86)\\Intel\\sawtooth\\logs` or error output of console?

askmish (Fri, 16 Feb 2018 15:30:34 GMT):
error output of console where you see filenotfound

horvatic (Fri, 16 Feb 2018 15:31:37 GMT):

python error.PNG

horvatic (Fri, 16 Feb 2018 15:32:12 GMT):
Note I have Python3, and Python 2.7 install on my machine, but Python3 on first in my Path's

horvatic (Fri, 16 Feb 2018 15:33:15 GMT):
I am also running this Script in a GIT Bash session, which hasn't cause any error's as of yet

askmish (Fri, 16 Feb 2018 15:33:24 GMT):
oh perhaps you need just python instead of python3

horvatic (Fri, 16 Feb 2018 15:33:43 GMT):
Ill try it

askmish (Fri, 16 Feb 2018 15:34:24 GMT):
It usually depends on your python setup

horvatic (Fri, 16 Feb 2018 15:35:16 GMT):
Got it working! I did get an access denied for a log file, but meh should cause any issues

horvatic (Fri, 16 Feb 2018 15:35:32 GMT):

python error.PNG

askmish (Fri, 16 Feb 2018 15:43:19 GMT):
perhaps you'll need to install it as a --user

horvatic (Fri, 16 Feb 2018 15:59:16 GMT):
Getting `SandboxViolation: mkdir('C:\\Program Files (x86)\\Intel\\sawtooth` I feel we should be making log error in a local folder, not in `C:\\Program Files (x86)\\Intel\\sawtooth` Maybe `/log/sawtooth`

horvatic (Fri, 16 Feb 2018 15:59:16 GMT):
Getting `SandboxViolation: mkdir('C:\\Program Files (x86)\\Intel\\sawtooth` I feel we should log error in a local relative folder, not in `C:\\Program Files (x86)\\Intel\\sawtooth` Maybe `/log/sawtooth`

horvatic (Fri, 16 Feb 2018 15:59:16 GMT):
Getting `SandboxViolation: mkdir('C:\\Program Files (x86)\\Intel\\sawtooth` I feel we should log error in a local relative folder, not in `C:\\Program Files (x86)\\Intel\\sawtooth` Maybe `./log/sawtooth`

askmish (Fri, 16 Feb 2018 16:13:59 GMT):
well linux would be an ideal platform for sawtooth

askmish (Fri, 16 Feb 2018 16:14:08 GMT):
.. :)

Dan (Fri, 16 Feb 2018 16:15:49 GMT):
@rberg2 I'm seeing some of these on jenkins: ```[jenkins-Sawtooth-Hyperledger-sawtooth-core-PR-1444-1] Running shell script + docker build . -f ci/sawtooth-build-docs -t sawtooth-build-docs:dc1a1fe839e44feb559a11337cd6fdbedcb491a2dbe5393011f4d2c7b2e1bc26 error checking context: 'no permission to read from '/data/jenkins/workspace/jenkins-Sawtooth-Hyperledger-sawtooth-core-PR-1444-1/adm/target/debug/incremental/build_script_build-23azbfwwcf0pb/s-eyd8z8gqkd-1y9t422.lock''.```

horvatic (Fri, 16 Feb 2018 16:18:01 GMT):
@askmish haha agreed! But where the fun in solving the cross platform issues!

horvatic (Fri, 16 Feb 2018 16:26:18 GMT):

python error.PNG

vikas.singh (Fri, 16 Feb 2018 17:03:23 GMT):
how can we run the "bond family" use case ?

vikas.singh (Fri, 16 Feb 2018 17:03:50 GMT):
I got someone interested in the "bond family" use case and now I see that it's removed from the 0.8 onwards

vikas.singh (Fri, 16 Feb 2018 17:03:57 GMT):
what can I do to run it ?

ColinAlstad (Fri, 16 Feb 2018 17:10:57 GMT):
Has joined the channel.

Dan (Fri, 16 Feb 2018 17:48:24 GMT):
Yeah, unfortunately no one had time to update that example for sawtooth 1.0. If you are really cool you could try updating it. Otherwise there's two things you can do (you'll still be cool, but in a different way) ... 1) checkout v0.7. It lacks a lot of the architecture we introduced in v0.8 but you will still be able to run it. 2) use the logic as an example Depending on the motivation for looking at sawtooth our more recent examples could be more interesting. Take a look at https://github.com/hyperledger/sawtooth-supply-chain and https://github.com/hyperledger/sawtooth-marketplace and possibly https://github.com/hyperledger/sawtooth-hyper-directory

rberg2 (Fri, 16 Feb 2018 18:35:37 GMT):
@Dan That appears to be related to changes in the rust compiler, we are working on that now.

ChrisLawsonAU (Fri, 16 Feb 2018 20:39:29 GMT):
Has joined the channel.

alberto_souza (Fri, 16 Feb 2018 21:01:33 GMT):
Hi! I don't know if it is a normal behaviour, but when I send a transaction, my processor is called twice, always... The basic error would be me sending the transaction twice, but I am pretty sure that I am not making this mistake.

agunde (Fri, 16 Feb 2018 21:03:59 GMT):
@alberto_souza That is correct behavior. The transaction is processed once during block publishing and then again during block validation.

jaredcorduan (Fri, 16 Feb 2018 21:18:32 GMT):
@pschwarz Thank you for all the help this week! STL-1063.fix_internal_error_unscheduled and STL-1064.validator_freeze are a huge help to us! with those two changes combined we were not able to reproduce any of our issues.

jaredcorduan (Fri, 16 Feb 2018 21:18:32 GMT):
@pschwarz Thank you for all the help this week! `STL-1063.fix_internal_error_unscheduled` and `STL-1064.validator_freeze` are a huge help to us! with those two changes combined we were not able to reproduce any of our issues.

alberto_souza (Fri, 16 Feb 2018 21:25:23 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=yZTx7dKHgqXZnAGCp) @agunde thank you! It makes sense!

benoit.razet (Fri, 16 Feb 2018 22:04:49 GMT):
Thank you very much @pschwarz for tracking down those issues and been super fast at providing PRs fixing them. I've learnt a bunch too in this process. :clap: :clap: :clap:

jingman (Fri, 16 Feb 2018 22:05:09 GMT):
@agunde Ha, I just got here to ask the exact same question as @alberto_souza! Is there any way for the handler to tell which context (publishing vs validation) it's is running in?

jingman (Fri, 16 Feb 2018 22:05:09 GMT):
@agunde Ha, I just got here to ask the exact same question as @alberto_souza! Is there any way for the handler to tell which context (publishing vs validation) it's running in?

agunde (Fri, 16 Feb 2018 22:09:03 GMT):
The transaction processor doesn't know the difference between publishing and validation.

jingman (Fri, 16 Feb 2018 22:09:39 GMT):
Thanks!

kakuzu (Fri, 16 Feb 2018 22:09:58 GMT):
@agunde are seth docker images up

Dan (Fri, 16 Feb 2018 22:12:07 GMT):
might be a good question for #sawtooth-seth I don't think @agunde is working on that

kakuzu (Fri, 16 Feb 2018 22:16:25 GMT):
ok

kakuzu (Fri, 16 Feb 2018 22:16:53 GMT):
she did ask someone to help me .

PonmudiK (Sat, 17 Feb 2018 04:26:40 GMT):
Has joined the channel.

sibil (Sat, 17 Feb 2018 07:11:34 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=S5PJM8Q3qEctTLpr2) @askmish Thanks!

sibil (Sat, 17 Feb 2018 07:13:09 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=2SCZNPYGcyTkjjGvE) @askmish not yet. will do.

ibartley (Sat, 17 Feb 2018 08:37:31 GMT):
Has joined the channel.

FabienF (Sat, 17 Feb 2018 10:10:05 GMT):
Has joined the channel.

formax (Sat, 17 Feb 2018 10:12:41 GMT):
Hey guys, I already found a similar question by @davod in January, but I didn't find any answer, so I repost the question: Is there any way to compress the `BlockStore` or at least reduce the initial download time? I mean something like the _warp sync_ in Ethereum.

formax (Sat, 17 Feb 2018 10:12:41 GMT):
Hey guys, I already found a similar question by @davod in January, but I didn't find any answer, so I repost the question: Is there any way to compress the `BlockStore` or at least reduce the initial download time required? I mean something like the _warp sync_ in Ethereum.

akeelnazir (Sat, 17 Feb 2018 13:05:47 GMT):
Has joined the channel.

Dan (Sat, 17 Feb 2018 19:55:45 GMT):
not yet or at least not that I'm aware of

formax (Sat, 17 Feb 2018 20:47:24 GMT):
Hi @Dan thanks for the answer. So when the doc says: ```The BlockStore provides an atomic method for updating the current head of the chain. In order for the BlockStore to switch forks, it is provided with a list of blocks in the new chain to commit, and a list of blocks in the old chain to decommit. These lists are the blocks in each fork back to the common root.``` here --> https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/journal.html#the-blockstore this is not a way to shorten the time required to retrieve the entire BlockStore.

valentin.ceaprazaru (Sat, 17 Feb 2018 20:57:36 GMT):
Has joined the channel.

formax (Sat, 17 Feb 2018 23:26:23 GMT):
Thanks @Dan

TarunMahawar (Sun, 18 Feb 2018 14:30:42 GMT):
Has joined the channel.

TarunMahawar (Sun, 18 Feb 2018 14:31:24 GMT):
Hey guys,

TarunMahawar (Sun, 18 Feb 2018 14:32:55 GMT):
I have been through the whole documentation and there is nothing written about how to build a network or connect different nodes together. Can anyone help me with that please??

sibil (Sun, 18 Feb 2018 18:20:22 GMT):
@TarunMahawar - AFAIK you need a Validator network

sibil (Sun, 18 Feb 2018 18:22:14 GMT):
Please see https://sawtooth.hyperledger.org/docs/core/releases/latest/sysadmin_guide/configuring_sawtooth/validator_configuration_file.html

sibil (Sun, 18 Feb 2018 18:23:24 GMT):
I agree with you that the documentation needs improvement.

Dan (Sun, 18 Feb 2018 20:15:28 GMT):
Maybe that's something that can be worked on at this LA hackFest this week.

wininani (Mon, 19 Feb 2018 05:42:27 GMT):
Has joined the channel.

HargobindGupta (Mon, 19 Feb 2018 08:50:20 GMT):
The Track and Trade (T&T) transaction family and Marketplace are the same right?

gaurang (Mon, 19 Feb 2018 12:00:18 GMT):
Finally today able to fix the issue with docker "Unregistering transaction processor"

gaurang (Mon, 19 Feb 2018 12:01:02 GMT):
In docker if we call the TP via shell script it's not able to get SIGTERM/SIGINT.

gaurang (Mon, 19 Feb 2018 12:01:24 GMT):
Now I can see another issue... I have attached 4 TP to my single validator

gaurang (Mon, 19 Feb 2018 12:01:56 GMT):
When ever I commit any tx it gives me three message on my log " Attempting to apply txn"

gaurang (Mon, 19 Feb 2018 12:02:36 GMT):
I was thinking if I have multiple TP attached they will be called in round robin fashion.

gaurang (Mon, 19 Feb 2018 12:02:57 GMT):
Now here it's called three at a time.

kalpuraman (Mon, 19 Feb 2018 14:04:49 GMT):
Has joined the channel.

kalpuraman (Mon, 19 Feb 2018 14:05:32 GMT):
Hi all, can we create private channel in sawtooth?

askmish (Mon, 19 Feb 2018 14:54:37 GMT):
@kalpuraman no, we don't have channels in sawtooth.

askmish (Mon, 19 Feb 2018 14:55:29 GMT):
@gaurang code from 1.0 or master?

askmish (Mon, 19 Feb 2018 14:56:52 GMT):
@HargobindGupta They are related. Marketplace is more updated.

Gabisan (Mon, 19 Feb 2018 15:03:01 GMT):
Has joined the channel.

Dan (Mon, 19 Feb 2018 17:08:29 GMT):
@kalpuraman you can essentially do the same thing as channels in other architectures.. it just means you restrict access to the network. to get two different networks to talk you need to solve the same problems that are being researched for other platforms.

ranjithkumarmv (Mon, 19 Feb 2018 17:55:00 GMT):
Has joined the channel.

b39647 (Mon, 19 Feb 2018 20:09:53 GMT):
Has joined the channel.

SeanHunt (Mon, 19 Feb 2018 21:18:29 GMT):
Has joined the channel.

mohdhafeezaj (Mon, 19 Feb 2018 21:59:27 GMT):
Has joined the channel.

dave (Mon, 19 Feb 2018 22:04:56 GMT):
Hi guys, I'm working with dropbox toolbox on win, I try to config the SAWTOOTH_HOME in an shared directory from validator container to host machine. Logs and keys are ok, but the merkle.lmbd is locked. So i receive "lmdb.InvalidParameterError: /mnt/sawtooth/data/merkle-00.lmdb: Invalid argument" because the file name is merkle-00.lmdb-lock. There are some workaround for that?

aczire (Mon, 19 Feb 2018 23:26:02 GMT):
Has joined the channel.

aczire (Mon, 19 Feb 2018 23:29:23 GMT):
Hi Guys, new to sawtooth, trying to get the supply-chain use case up and running, how do i see the fishnet example, I can see only a blank page when connected to localhost:8022

aczire (Mon, 19 Feb 2018 23:35:06 GMT):
how can i see the dashboard, list-fish etc?

PrabhatSutar (Tue, 20 Feb 2018 05:11:30 GMT):
Has joined the channel.

callmeashok (Tue, 20 Feb 2018 05:38:42 GMT):
@Dan what are other architectures you are referring to, If i want to create private channels to talk and solve problems discretely??

IndrajitSinhRayjada (Tue, 20 Feb 2018 06:21:57 GMT):
Has joined the channel.

callmeashok (Tue, 20 Feb 2018 06:26:56 GMT):
can we create private network to communicate with a peer in distributed network of sawtooth??

ranjithkumarmv (Tue, 20 Feb 2018 08:00:02 GMT):
I am new to sawtooth, trying to create a marketpalce using this codebase(https://github.com/hyperledger/sawtooth-marketplace) . i cannot find the documentation to create users or assests

ranjithkumarmv (Tue, 20 Feb 2018 08:00:02 GMT):
I am new to sawtooth, trying to create a marketpalce using this codebase(https://github.com/hyperledger/sawtooth-marketplace) . i cannot find the documentation to create users or assests via api and how to access Marketplace Navigator

ranjithkumarmv (Tue, 20 Feb 2018 08:00:02 GMT):
I am new to sawtooth, trying to create a marketpalce using this codebase(https://github.com/hyperledger/sawtooth-marketplace) . i cannot find the documentation to create users or assests via REST Api, and how to access Marketplace Navigator

maxmijn (Tue, 20 Feb 2018 08:50:33 GMT):
Has joined the channel.

ranjithkumarmv (Tue, 20 Feb 2018 10:26:47 GMT):
How to access marketplace navigator

me234 (Tue, 20 Feb 2018 10:58:56 GMT):
Has joined the channel.

Akshatha (Tue, 20 Feb 2018 12:17:35 GMT):
Has joined the channel.

callmeashok (Tue, 20 Feb 2018 12:49:52 GMT):
when does a validator fails in sawtooth??

bogomazov (Tue, 20 Feb 2018 13:00:01 GMT):
Hey guys, quick question, can two transaction families interact with each other/get and update each other's state in the context during processing of Transaction?

bogomazov (Tue, 20 Feb 2018 13:00:01 GMT):
Hey guys, quick question, can two transaction families interact with each other/get and update each other's state in the context during processing of Transaction coming from one family?

TheOnlyJoey (Tue, 20 Feb 2018 14:12:18 GMT):
Has joined the channel.

TheOnlyJoey (Tue, 20 Feb 2018 14:12:27 GMT):
Good day, it seems that I can't find documentation regarding using different consensus on the sawtooth docker, any tips on how to do this? seems to only do dev consensus

tomislav (Tue, 20 Feb 2018 15:41:37 GMT):
Has joined the channel.

benoit.razet (Tue, 20 Feb 2018 16:00:39 GMT):
@bogomazov I have already done something like you describe but only with *get* operations, not *set*. I would assume *set* would work too. But since the inputs and outputs are declared in the transaction, I would assume they would create dependencies that would make the parallel scheduler not parallelize transactions that write at the same address.

jsmitchell (Tue, 20 Feb 2018 16:20:54 GMT):
correct, they would just be executed serially

jsmitchell (Tue, 20 Feb 2018 16:21:10 GMT):
(but still could be included in the same block)

jsmitchell (Tue, 20 Feb 2018 16:35:56 GMT):
@TheOnlyJoey if you take a look at https://github.com/hyperledger/sawtooth-core/blob/master/integration/sawtooth_integration/docker/test_poet_liveness.yaml you can see an example of the sawset and poet cli commands being used to set the sawtooth.consensus.algorithm to poet and establish other required settings. These are built into the genesis block, but can also be set on the fly while the system is running.

jsmitchell (Tue, 20 Feb 2018 16:36:19 GMT):
these are on chain settings

jsmitchell (Tue, 20 Feb 2018 16:37:17 GMT):
look at the 'validator-0' block in the yaml file

Dan (Tue, 20 Feb 2018 17:00:35 GMT):
What is Anne's handle? This is another good faq item.

achenette (Tue, 20 Feb 2018 17:28:03 GMT):
I'm @achenette. And I've noted this item.

achenette (Tue, 20 Feb 2018 17:28:12 GMT):
Thanks!

ParitoshPandey (Tue, 20 Feb 2018 17:41:37 GMT):
Has joined the channel.

ParitoshPandey (Tue, 20 Feb 2018 17:47:32 GMT):
hi , We tried to run the 0.7 version of sawtooth lake. We are interested in running the bond family UI. We got the UI RUNNING but not able to load bond data by running bin/load_bond_data. It says ''no response from server".

ParitoshPandey (Tue, 20 Feb 2018 17:48:27 GMT):

Screenshot (33).png

ParitoshPandey (Tue, 20 Feb 2018 17:50:07 GMT):

Screenshot (35).png

ParitoshPandey (Tue, 20 Feb 2018 17:51:43 GMT):
Also there were errors while running ledger_sync. We couldn't run syncledger there followin is th screenshot of the log file

ParitoshPandey (Tue, 20 Feb 2018 17:52:30 GMT):

Screenshot (32).png

ParitoshPandey (Tue, 20 Feb 2018 17:53:20 GMT):
Any comments on the above would be really helpful

demianlicht (Tue, 20 Feb 2018 18:04:22 GMT):
Has joined the channel.

boydjohnson (Tue, 20 Feb 2018 18:09:38 GMT):
Hi @ParitoshPandey Is the `validator` from the `bin` directory running anywhere?

ParitoshPandey (Tue, 20 Feb 2018 18:10:08 GMT):
yes

ParitoshPandey (Tue, 20 Feb 2018 18:10:27 GMT):
sawtooth-validator service is up

ParitoshPandey (Tue, 20 Feb 2018 18:11:21 GMT):

Screenshot (38).png

boydjohnson (Tue, 20 Feb 2018 18:12:02 GMT):
what does `bin/btp init` give you?

ParitoshPandey (Tue, 20 Feb 2018 18:14:24 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/0.7/bond_family_guide/users_guide/cli.html

ParitoshPandey (Tue, 20 Feb 2018 18:15:02 GMT):
I suppose it is for initiating something (bond, i guess)

boydjohnson (Tue, 20 Feb 2018 18:18:36 GMT):
Yeah, it sets up the url to hit the validator rest api on and it is what is being called by the load script. What host and port is the sawtooth-validator on?

ParitoshPandey (Tue, 20 Feb 2018 18:25:57 GMT):
sorry for late replies. everything on same host validator port:8800

boydjohnson (Tue, 20 Feb 2018 18:27:02 GMT):
when you run `bin/btp init` what is the output?

benoit.razet (Tue, 20 Feb 2018 18:34:09 GMT):
we are experiencing some difference in behavior of the rest-api depending 1) we use the build process of sawtooth or 2) our own build of the rest-api image

ParitoshPandey (Tue, 20 Feb 2018 18:34:14 GMT):

Screenshot (39).png

benoit.razet (Tue, 20 Feb 2018 18:35:11 GMT):
has anyone any opinion about the following process for building the sawtooth-rest-api image: 1) git checkout the right branch of sawtooth, 2) build an image copying the sawtooth-core files and `python3 setup.py install` in the right directory (e.g. sawtooth-core/rest_api if it's for building the rest-api)

ParitoshPandey (Tue, 20 Feb 2018 18:36:21 GMT):
@boydjohnson i posted btp init screenshot

boydjohnson (Tue, 20 Feb 2018 18:36:25 GMT):
Hm, @ParitoshPandey I am unsure. I have to sign off for the moment. Someone else may have thoughts

ParitoshPandey (Tue, 20 Feb 2018 18:36:38 GMT):
ok Thanks

benoit.razet (Tue, 20 Feb 2018 18:36:55 GMT):
our rest-api seems to be hanging under heavy load of batch sending. In contrast, with sawtooth build of the rest-api, everything is fine.

benoit.razet (Tue, 20 Feb 2018 18:37:34 GMT):
another moving part is that we are using a ubuntu 17-10 image instead of ubuntu:xenial

jsmitchell (Tue, 20 Feb 2018 18:59:20 GMT):
@benoit.razet does the sawtooth rest-api work fine on 17.10?

benoit.razet (Tue, 20 Feb 2018 19:03:46 GMT):
it is surprisingly working okay. As I said, under heavy load of batch sent, the rest-api is freezing, which we don't observe with the the sawtooth build. Do you have any idea whether the async code be affected by the change from python3.5 (xenial) to python 3.6 (ubuntu 17:10)?

benoit.razet (Tue, 20 Feb 2018 19:05:52 GMT):
I'm doing some more testing to try to figure this out but I'm curious to know if you run into these pbs

jsmitchell (Tue, 20 Feb 2018 19:07:48 GMT):
It doesn't sound familiar. We haven't been doing testing under 3.6 or non 16.04 libs yet though.

jsmitchell (Tue, 20 Feb 2018 19:08:04 GMT):
@adamludvik @pschwarz ^

pschwarz (Tue, 20 Feb 2018 19:30:03 GMT):
@benoit.razet It depends on what version of pyzmq is being installed. With the xenial/python3.5, pyzmq v15.x (I don't know the exact one) is installed. Do you know which one is being installed in ubuntu 17.10?

jingman (Tue, 20 Feb 2018 19:30:11 GMT):
I have kindof a patterns/practices question: If I process a transaction that doesn't manipulate state in any way, how do I just kinda "ignore" that transaction so it doesn't get added to the chain. Should I just invalidate it? It's basically a no-op, so I just want it to go away.

pschwarz (Tue, 20 Feb 2018 19:31:19 GMT):
And by "depends:, I mean my answer about whether or not we can isolate the problem

TreyZhong (Tue, 20 Feb 2018 19:34:48 GMT):
Has joined the channel.

ColinAlstad (Tue, 20 Feb 2018 19:35:49 GMT):
Has left the channel.

ColinAlstad (Tue, 20 Feb 2018 19:36:06 GMT):
Has joined the channel.

benoit.razet (Tue, 20 Feb 2018 19:36:56 GMT):
`pyzmq==17.0.0`

benoit.razet (Tue, 20 Feb 2018 19:40:37 GMT):
I think the simplest solution to move forward would be to downgrade our build from 17.10 to xenial.

aczire (Tue, 20 Feb 2018 20:07:58 GMT):
Hello Guys, how do I deploy the fishnet or asset management sample to use IBM cloud?

jaredcorduan (Tue, 20 Feb 2018 20:27:00 GMT):
is there a way to use the build scripts inside the sawtooth-core repo to build a docker image with the basic sawtooth sdk python libraries installed? I can build the images myself, but it would be nice to use something more official that we don't have to maintain. When I run `./bin/build_all -l python installed` I see a couple images that are close. For instance, `sawtooth-xo-tp-python` has everything that I need except for the protobuf libraries needed for executing the `sawtooth-settings` and `sawtooth-block-info` transactions. (I realize those are not in sawtooth-core, but they are something that I'd imagine a lot of folks installing the sdk would want, since those txn families are pretty fundamental to the system.)

rbailey (Tue, 20 Feb 2018 20:28:03 GMT):
Has joined the channel.

jstark (Tue, 20 Feb 2018 20:49:43 GMT):
Has joined the channel.

jstark (Tue, 20 Feb 2018 20:50:35 GMT):
in the supply chain example it seems as if some of the rest api endpoints that are described in the documentation are not implemented. Were they at one point and then removed?

jsmitchell (Tue, 20 Feb 2018 20:51:58 GMT):
@jingman you can raise InvalidTransaction

kakuzu (Tue, 20 Feb 2018 20:52:43 GMT):
yes lots of updates have been done, I tried Seth its whole module is not there dev asked me wait till the time they upload new images on docker.

jsmitchell (Tue, 20 Feb 2018 20:53:16 GMT):
@zac @rbuysse ^^

jstark (Tue, 20 Feb 2018 21:03:03 GMT):
In the sawtooth supply chain example it says that updates to properties and owner/custodian can be done through an API. Can you point me to an example of that being done? Ive looked into the src and the only api that allows a POST is the transaction one.

rbuysse (Tue, 20 Feb 2018 21:15:57 GMT):
@jaredcorduan this image might be what you want: https://hub.docker.com/r/hyperledger/sawtooth-shell/

jaredcorduan (Tue, 20 Feb 2018 21:17:08 GMT):
thanks @rbuysse! is it possible to build that ourselves with the build scripts in the main repo?

rbuysse (Tue, 20 Feb 2018 21:17:31 GMT):
not with the build scripts per se, but the Dockerfile is in the repo.

jaredcorduan (Tue, 20 Feb 2018 21:17:32 GMT):
it's nice to be able to build from master when Peter adds fixes

jaredcorduan (Tue, 20 Feb 2018 21:17:42 GMT):
ah, ok, great, thanks!

rbuysse (Tue, 20 Feb 2018 21:17:51 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/ci/sawtooth-shell

jaredcorduan (Tue, 20 Feb 2018 21:18:45 GMT):
it looks like it doesn't have block info

jaredcorduan (Tue, 20 Feb 2018 21:19:06 GMT):
but I'll add that and have everything I need, thanks!

zac (Tue, 20 Feb 2018 21:20:25 GMT):
@jstark There is a "Sawtooth REST API" with routes like `GET /batches`, it has no direct relationship with the Supply Chain Server/REST API

zac (Tue, 20 Feb 2018 21:20:54 GMT):
Other than that they fulfill similar roles (providing communication to the validator over HTTP/JSON

zac (Tue, 20 Feb 2018 21:21:39 GMT):
The Sawtooth REST API is pulled from Docker Hub and is run with `docker-compose up` for debug purposes

zac (Tue, 20 Feb 2018 21:22:30 GMT):
However, none of the clients use the Sawtooth REST API, they talk to the server which is what you find in the `server/` directory

zac (Tue, 20 Feb 2018 21:23:54 GMT):
You are correct that the only POST route for the Supply Chain Server (other than authentication) is `/transactions`

zac (Tue, 20 Feb 2018 21:24:55 GMT):
This is because posting anything to the blockchain requires signing a transaction, but the server (intentionally), does not know users' signing keys, and so cannot sign transactions for them.

zac (Tue, 20 Feb 2018 21:25:39 GMT):
Instead the browser clients create and sign the transaction, and then send it to that route

jstark (Tue, 20 Feb 2018 21:27:30 GMT):
@zac Is there some documentation that describes how to build the transaction in order to post it?

jstark (Tue, 20 Feb 2018 21:28:14 GMT):
Is this where I should be looking? https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_python.html

kakuzu (Tue, 20 Feb 2018 21:28:58 GMT):
yes.

zac (Tue, 20 Feb 2018 21:29:42 GMT):
If you are using Python, yes

jaredcorduan (Tue, 20 Feb 2018 21:29:42 GMT):
@rbuysse actually that's not exactly what I'm looking for, I guess that Dockerfile grabs the latest `1.0` packages and installs those. I'd love a way to build images from master. should I build the images myself for now if I need master?

zac (Tue, 20 Feb 2018 21:29:56 GMT):
That gets you one half of the picture

jstark (Tue, 20 Feb 2018 21:30:00 GMT):
I was hoping to be able to do something quick and dirty with postman just to try it out but it looks like Ill have to do some coding to make it work

zac (Tue, 20 Feb 2018 21:30:34 GMT):
You also need to build the Payload, which there isn't really a tutorial for

zac (Tue, 20 Feb 2018 21:31:04 GMT):
Short answer is you encode one of these: https://github.com/hyperledger/sawtooth-supply-chain/blob/master/protos/payload.proto

zac (Tue, 20 Feb 2018 21:31:31 GMT):
Yeah, Postman is not great for this

zac (Tue, 20 Feb 2018 21:32:35 GMT):
Anything that modifies the blockchain needs a cryptographic signature. If you want a traditional set og HTTP/JSON POST endpoints, then you need to have the server generate that signature for you

zac (Tue, 20 Feb 2018 21:32:46 GMT):
WHich means you trust the server with your signing key

rbuysse (Tue, 20 Feb 2018 21:33:02 GMT):
@jaredcorduan oh oops. Yeah, it sounds like we don't really have what you're looking for right now.

zac (Tue, 20 Feb 2018 21:33:03 GMT):
I am not a big fan of this approach, but Sawtooth Marketplace uses it

zac (Tue, 20 Feb 2018 21:33:43 GMT):
https://github.com/hyperledger/sawtooth-marketplace

zac (Tue, 20 Feb 2018 21:34:04 GMT):
That app you could use Postman for POST routes

jaredcorduan (Tue, 20 Feb 2018 21:34:29 GMT):
ah, ok, thanks @rbuysse for letting me know

jstark (Tue, 20 Feb 2018 21:35:02 GMT):
i think ill just steal code out of the sample update js file to add some rest api endpoints to do what i want to do.

jsmitchell (Tue, 20 Feb 2018 21:35:21 GMT):
there was some docker image that worked with mounted sawtooth-core, right @rbuysse

jsmitchell (Tue, 20 Feb 2018 21:35:34 GMT):
probably not suitable for deployment

jaredcorduan (Tue, 20 Feb 2018 21:36:26 GMT):
yea, not looking to volume mount if possible

zac (Tue, 20 Feb 2018 21:38:37 GMT):
Yes, that is probably a reasonable approach

zac (Tue, 20 Feb 2018 21:38:42 GMT):
What are you trying to test out?

jstark (Tue, 20 Feb 2018 21:40:44 GMT):
i want to be able to transfer custodianship and ownership and update properties via api so I can move things around a supply chain using IOT devices for a POC

jsmitchell (Tue, 20 Feb 2018 22:28:45 GMT):
@benoit.razet re: pyzmq 17 https://github.com/zeromq/pyzmq/issues/1137

jsmitchell (Tue, 20 Feb 2018 22:29:18 GMT):
we are explicitly instantiating ZMQEventLoop

benoit.razet (Tue, 20 Feb 2018 22:29:38 GMT):
oh wao! good catch!

jsmitchell (Tue, 20 Feb 2018 22:30:16 GMT):
pyzmq 17 represents some pretty significant changes

jsmitchell (Tue, 20 Feb 2018 22:30:45 GMT):
we are keen to adopt it for perf reasons, but we're going to have to handle that transition with care

jsmitchell (Tue, 20 Feb 2018 22:30:48 GMT):
e.g. https://github.com/zeromq/pyzmq/issues/1065

jsmitchell (Tue, 20 Feb 2018 22:31:15 GMT):
that (closed) issue relates to hangs I was seeing testing the beta of 17

zac (Tue, 20 Feb 2018 22:36:35 GMT):
@jstark Depending on the IoT device, they may be able to sign their own transactions with their own private keys. This might be interesting from an audibility standpoint. If you want to centralize IoT transactions though, long-term you'll probably want to write your own server which can manage IoT private keys

benoit.razet (Tue, 20 Feb 2018 22:38:26 GMT):
thanks for the links @jsmitchell

jsmitchell (Tue, 20 Feb 2018 22:41:44 GMT):
@jstark you should definitely do private keys and transaction signing from the devices, because that is cool

jstark (Tue, 20 Feb 2018 22:43:01 GMT):
@zac @jsmitchell Yeah i will have to do the private key thing but for a POC im gonna run without

ParitoshPandey (Wed, 21 Feb 2018 03:26:49 GMT):
@pschwarz could you please help us on the issues with 0.7 version

mc (Wed, 21 Feb 2018 03:27:26 GMT):
Has joined the channel.

mc (Wed, 21 Feb 2018 03:27:29 GMT):
Hi all

mc (Wed, 21 Feb 2018 03:27:30 GMT):
I'm running into an issue running the sawtooth-supply-chain example in Docker for Windows 10. I get the error, "/usr/bin/env: 'node\r': No such file or directory"

mc (Wed, 21 Feb 2018 03:27:45 GMT):
Any idea how I can fix it?

pankajgoyal (Wed, 21 Feb 2018 04:19:43 GMT):
Has joined the channel.

gaurang (Wed, 21 Feb 2018 05:15:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=GLyD2Jw4DspQ4fXfy) @askmish using version # 1.0.1 from docker hub

sbh (Wed, 21 Feb 2018 08:27:10 GMT):
Has joined the channel.

rameesypv (Wed, 21 Feb 2018 09:25:23 GMT):
Has joined the channel.

rameesypv (Wed, 21 Feb 2018 09:26:49 GMT):
@mc I was running into the same issue "error, "/usr/bin/env: 'node\r': No such file or directory". Could anyone please advice?

sibil (Wed, 21 Feb 2018 10:54:55 GMT):
Python newbie question - How do I run the intkey_python client_cli ? I know how to run the intkey command.

TBruer (Wed, 21 Feb 2018 11:14:12 GMT):
Has joined the channel.

sibil (Wed, 21 Feb 2018 12:05:45 GMT):
sawtooth-core/sdk/examples/intkey_python/sawtooth_intkey/client_cli$ python3 >>> import intkey_cli >>> intkey_cli.main("intkey_cli", ["list"]) uDArAH: 93867 This is working from python3 console. Running from commandline is not working.

zac (Wed, 21 Feb 2018 13:32:21 GMT):
`$ ./bin/intkey list`

zac (Wed, 21 Feb 2018 13:32:21 GMT):
``` $ ./bin/intkey list ```

zac (Wed, 21 Feb 2018 13:32:55 GMT):
It's a Command Line Interface, not for importing into your python code

zac (Wed, 21 Feb 2018 13:34:00 GMT):
(though I you could import it if you really wanted to, assuming you added it to your `PYTHONPATH`)

sibil (Wed, 21 Feb 2018 14:04:14 GMT):
Thanks @zac - How do I create an executable(./bin/intkey) from this python code(client_cli)?

zac (Wed, 21 Feb 2018 14:23:57 GMT):
Well the main thing is you have to make it executable: ``` $ chmod u+x ```

zac (Wed, 21 Feb 2018 14:26:29 GMT):
And add `#! /usr/bin/env python3` to the first line, so bash know what to run it with

zac (Wed, 21 Feb 2018 14:27:15 GMT):
Beyond that, it could be any python script, but we usually have it set up our `PYTHONPATH`, and then run `main` from whichever module we're executing

zac (Wed, 21 Feb 2018 14:27:24 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/bin/intkey

sibil (Wed, 21 Feb 2018 14:32:38 GMT):
@zac - Thanks!

ranjithkumarmv (Wed, 21 Feb 2018 14:33:41 GMT):
Has left the channel.

mc (Wed, 21 Feb 2018 15:15:03 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oBg3CPDNqo27CQETp) @rameesypv No response and I have no idea what is going on

mc (Wed, 21 Feb 2018 15:15:03 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oBg3CPDNqo27CQETp) @rameesypv No response and I have no idea what is going

mc (Wed, 21 Feb 2018 15:15:03 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oBg3CPDNqo27CQETp) @rameesypv No response and I have no idea what is goingnon

gaurang (Wed, 21 Feb 2018 15:45:40 GMT):
Anyone using ECIES encryption for payload?

gaurang (Wed, 21 Feb 2018 15:45:40 GMT):
Hay anyone using ECIES encryption for payload?

paddolker (Wed, 21 Feb 2018 16:25:17 GMT):
Has joined the channel.

paddolker (Wed, 21 Feb 2018 16:26:58 GMT):
We are stuck with a 0.7 implementation to show case sawtooth lake bond market to a customer

paddolker (Wed, 21 Feb 2018 16:27:08 GMT):
the validator is running fine

paddolker (Wed, 21 Feb 2018 16:27:12 GMT):
the UI is up

paddolker (Wed, 21 Feb 2018 16:28:07 GMT):
we are stuck with SyncLedger and also when we tried to load load by using btp load .yaml file, it always gives an error " waiting for transaction to commit" (not found:404)

paddolker (Wed, 21 Feb 2018 16:28:24 GMT):
any thoughts how to fix this? It has already given 3 sleepless nights so far !!!

jsmitchell (Wed, 21 Feb 2018 16:35:09 GMT):
@paddolker the bond demo and 0.7 are quite old. Sawtooth has been completely re-written starting with 0.8.

jsmitchell (Wed, 21 Feb 2018 16:35:34 GMT):
I wouldn't recommend starting with 0.7 for any purpose

paddolker (Wed, 21 Feb 2018 16:37:54 GMT):
Agreed. Our client wants to have a look at the bond market demo and hence this effort

jsmitchell (Wed, 21 Feb 2018 16:53:09 GMT):
I think you are going to have a hard time. I would recommend sharing the screenshots of the solution with them and then focusing on demos/customization with 1.0

jsmitchell (Wed, 21 Feb 2018 16:53:12 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/0.7/bond_family_guide/users_guide/ui_reference.html

jsmitchell (Wed, 21 Feb 2018 16:53:31 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/0.7/bond_family_guide/users_guide/tutorial.html

jsmitchell (Wed, 21 Feb 2018 16:53:47 GMT):
that second link does a nice job of showing all the capabilities

pschwarz (Wed, 21 Feb 2018 17:16:21 GMT):
@ParitoshPandey I would agree with @jsmitchell on that recommendation

mc (Wed, 21 Feb 2018 17:37:22 GMT):
which distro of linux is recommended?

amundson (Wed, 21 Feb 2018 17:37:53 GMT):
The deb files are built for Ubuntu 16.04

amundson (Wed, 21 Feb 2018 17:38:27 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html

mc (Wed, 21 Feb 2018 17:57:33 GMT):
ok

mc (Wed, 21 Feb 2018 18:02:01 GMT):
is there a docker graphical interface for linux?

mc (Wed, 21 Feb 2018 18:02:12 GMT):
similar to what is available for windows and mac?

mc (Wed, 21 Feb 2018 18:30:31 GMT):
i'm using linux mint

kdenhartog (Wed, 21 Feb 2018 18:43:42 GMT):
Has joined the channel.

nage (Wed, 21 Feb 2018 18:47:35 GMT):
Has joined the channel.

jsmitchell (Wed, 21 Feb 2018 20:15:16 GMT):
@mc not sure - all our usage of docker is command line

callmeashok (Wed, 21 Feb 2018 20:25:17 GMT):
Can anyone tell me how validator validates a transaction or batch and how to configure validator to my project

callmeashok (Wed, 21 Feb 2018 20:30:11 GMT):
How to store and retrieve data from blockchain without db??

marksta (Wed, 21 Feb 2018 20:34:52 GMT):
Has left the channel.

jsmitchell (Wed, 21 Feb 2018 21:17:26 GMT):
@callmeashok have you taken a look at the Application Developer's Guide? https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

Er1ck (Wed, 21 Feb 2018 21:47:23 GMT):
Has joined the channel.

Dan (Wed, 21 Feb 2018 22:42:41 GMT):
@TreyZhong https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

TreyZhong (Thu, 22 Feb 2018 00:49:34 GMT):

Clipboard - February 21, 2018 4:49 PM

TreyZhong (Thu, 22 Feb 2018 00:52:44 GMT):
Ok, got it:

TreyZhong (Thu, 22 Feb 2018 00:52:46 GMT):

Clipboard - February 21, 2018 4:52 PM

TreyZhong (Thu, 22 Feb 2018 00:53:10 GMT):
use --url http://rest-api:8008

TreyZhong (Thu, 22 Feb 2018 00:53:23 GMT):
can't use localhost within docker image

TreyZhong (Thu, 22 Feb 2018 01:20:27 GMT):
@zac Hi Zac, I was told by the group that you started the marketplace repo. I'm trying to understand the project so I can use it for my future projects. I would like to know the structure of this project and what should I do if I were to start a project like this from scratch

zac (Thu, 22 Feb 2018 02:28:22 GMT):
@TreyZhong Have you read over the [README](https://github.com/hyperledger/sawtooth-marketplace/blob/master/README.md) and the [design doc](https://github.com/hyperledger/sawtooth-marketplace/blob/master/docs/transaction_family_design.pdf)?

zac (Thu, 22 Feb 2018 02:29:02 GMT):
Also, there is this [component diagram](https://github.com/hyperledger/sawtooth-marketplace/blob/master/docs/components_diagram.svg)

aczire (Thu, 22 Feb 2018 03:48:21 GMT):
Hi @zac When using supply-chain sample, once issued a "docker-compose down", "docker-compose up" is not working. Has to remove all images and rebuild from the scratch, ever encountered this issue?

zac (Thu, 22 Feb 2018 04:53:18 GMT):
Haven't seen that. What error are you getting?

zac (Thu, 22 Feb 2018 04:53:48 GMT):
Does `docker-compose up --build` work?

askmish (Thu, 22 Feb 2018 05:34:45 GMT):
@gaurang Could you share the log messages.

askmish (Thu, 22 Feb 2018 05:34:51 GMT):
a snippet of it

aczire (Thu, 22 Feb 2018 06:46:42 GMT):
@zac `docker-compose up --build` works but `docker-compose up` didn't most of the time.

gaurang (Thu, 22 Feb 2018 08:03:41 GMT):

Clipboard - February 22, 2018 1:33 PM

gaurang (Thu, 22 Feb 2018 08:03:56 GMT):

Clipboard - February 22, 2018 1:33 PM

gaurang (Thu, 22 Feb 2018 08:05:21 GMT):

Clipboard - February 22, 2018 1:35 PM

gaurang (Thu, 22 Feb 2018 08:06:51 GMT):

Clipboard - February 22, 2018 1:36 PM

gaurang (Thu, 22 Feb 2018 08:07:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=hLE2x4bo9BgRpYcwn) @askmish I am running two docker, and each docker running two TP threads in it. (so total four TP)

SandeepBist (Thu, 22 Feb 2018 09:03:50 GMT):
Has joined the channel.

niranjanp (Thu, 22 Feb 2018 09:25:57 GMT):
Has joined the channel.

gokhankocak (Thu, 22 Feb 2018 12:34:14 GMT):
Hello, is there a small bank transaction processor in python?

arlohosk (Thu, 22 Feb 2018 13:26:23 GMT):
Has joined the channel.

arlohosk (Thu, 22 Feb 2018 13:29:39 GMT):
Is there any concept of private transactions in sawtooth? (Fabric has channels, which is suboptimal but better than not...whole quorum for example has private transactions or ZSL integration). Is there anything like that available for saw tooth Ive missed, or is it planned?

arlohosk (Thu, 22 Feb 2018 13:29:52 GMT):
Thanks for any insight!

jsmitchell (Thu, 22 Feb 2018 13:45:28 GMT):
@gokhankocak no, only in go

gokhankocak (Thu, 22 Feb 2018 13:57:11 GMT):
How can I start the smallbank tp? I checked the docs but I could not find an answer.

VipulSingh (Thu, 22 Feb 2018 15:13:52 GMT):
Has joined the channel.

zac (Thu, 22 Feb 2018 15:20:39 GMT):
@aczire What error is is giving you?

paddolker (Thu, 22 Feb 2018 15:34:44 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=oQariJvzHmLF8q6Lm) @jsmitchell Happy to update that our team fixed this issue and successfully ran the TxnValidator and Ledger Sync

paddolker (Thu, 22 Feb 2018 15:34:55 GMT):
Happy to share our experience if anyone is interested

aleksfarrier (Thu, 22 Feb 2018 17:08:24 GMT):
Hi guys! Could somebody answer - is it possible to use own coins inside Sawtooth ащк for business transactions between participants?

aleksfarrier (Thu, 22 Feb 2018 17:08:24 GMT):
Hi guys! Could somebody answer - is it possible to use own coins inside Sawtooth for business transactions between participants?

jsmitchell (Thu, 22 Feb 2018 17:23:11 GMT):
@gokhankocak we package a docker container for it https://hub.docker.com/r/hyperledger/sawtooth-smallbank-tp-go/ otherwise you can run it out of sawtooth-core/bin/smallbank-tp-go

jsmitchell (Thu, 22 Feb 2018 17:23:26 GMT):
@paddolker nice work!

jsmitchell (Thu, 22 Feb 2018 17:26:47 GMT):
@aleksfarrier the system is a blank slate - it makes no prescriptions about what kind of data or transactions you might want to use. You can certainly define currency representations and build exchange transactions. All the functionality is totally flexible and up to you. You can take a look at the sawtooth-marketplace example application for pointers on implementation of a currency and an asset exchange model https://github.com/hyperledger/sawtooth-marketplace

paul.sitoh (Thu, 22 Feb 2018 17:28:28 GMT):
Has joined the channel.

paul.sitoh (Thu, 22 Feb 2018 17:29:20 GMT):
Any sawtooth guru who can give a summary of the protocol vs Fabric?

jsmitchell (Thu, 22 Feb 2018 17:40:31 GMT):
@paul.sitoh what do you mean by 'protocol'?

paul.sitoh (Thu, 22 Feb 2018 17:41:30 GMT):
Let's just say how sawtooth works

paul.sitoh (Thu, 22 Feb 2018 17:41:44 GMT):
how it achieve consensus

paul.sitoh (Thu, 22 Feb 2018 17:41:58 GMT):
what are the components that make up sawtooth

paul.sitoh (Thu, 22 Feb 2018 17:42:09 GMT):
etc

paul.sitoh (Thu, 22 Feb 2018 17:43:28 GMT):
For example, in Fabric, a transaction is sent, signed by peers, which then get endorsement from peers, then orderers update ledgers, etc. How does it work with Sawtooth

paul.sitoh (Thu, 22 Feb 2018 17:43:44 GMT):
How does permissioning works in Sawtooth

paul.sitoh (Thu, 22 Feb 2018 17:46:07 GMT):
How do you write smart contract, how does smart contract work, in the context of Sawtooth

paul.sitoh (Thu, 22 Feb 2018 17:46:10 GMT):
etc

nycycr (Thu, 22 Feb 2018 17:46:58 GMT):
These questions are all covered in the official doc: https://sawtooth.hyperledger.org/docs/core/releases/latest/index.html

arlohosk (Thu, 22 Feb 2018 18:00:54 GMT):
Is there any concept of private transactions in sawtooth? (Fabric has channels, which is suboptimal but better than not...whole quorum for example has private transactions or ZSL integration). Is there anything like that available for saw tooth Ive missed, or is it planned? Thanks for any insight!

Dan (Thu, 22 Feb 2018 18:06:50 GMT):
channels are just segmented networks. you can do the same thing with sawtooth. we just don't call it something special. just only permission the required parties into that network.

grkvlt (Thu, 22 Feb 2018 18:30:07 GMT):
@aleksfarrier and with Seth it should be possible to deploy ERC-20 tokens as smart contracts directly, which is something currently being worked on

benoit.razet (Thu, 22 Feb 2018 19:46:24 GMT):
@aleksfarrier we have been prototyping a token using sawtooth. We've described some of the design choices in a document you may be interested in https://pokitdok.com/dokchain/download/interfamily-communication/

benoit.razet (Thu, 22 Feb 2018 19:54:09 GMT):
the article presents a solution that is as close as we could get to Ethereum style transactions where smart contracts are able to transfer tokens.

benoit.razet (Thu, 22 Feb 2018 19:58:34 GMT):
For a simpler overview you might want to check out https://fullmetalhealth.com/cryptoasset-framework-intels-hyperledger-sawtooth-part-one/

kyogesh91 (Thu, 22 Feb 2018 20:28:21 GMT):
Has joined the channel.

arlohosk (Thu, 22 Feb 2018 21:53:31 GMT):
@Dan for private networks, does that mean I need to spin up a new network/node for every private network I want to be part of?

arlohosk (Thu, 22 Feb 2018 21:55:13 GMT):
And what if I want to transfer an asset from 1 private network to another - how would I maintain provenance? Is there any documentation on how to do this properly? Thanks

Dan (Thu, 22 Feb 2018 22:02:22 GMT):
Yep different network for every private group just like channels. And no good way to maintain provenance across networks just like channels.

Dan (Thu, 22 Feb 2018 22:02:45 GMT):
We are working on more interesting forms of transaction confidentiality.

arlohosk (Thu, 22 Feb 2018 22:24:49 GMT):
Gotcha thank you

alberto_souza (Thu, 22 Feb 2018 23:30:10 GMT):
Hi all... I am trying to use the nonce field in the TransactionEncoder to warranty the uniqueness of the header signature... But the nonce that I specify is not the same the appears in the json returned by /blocks endpoint.. Should it be the same, no?

ls84 (Fri, 23 Feb 2018 02:51:17 GMT):
Has joined the channel.

KiranVelicheti (Fri, 23 Feb 2018 05:07:30 GMT):
Has joined the channel.

agileHua (Fri, 23 Feb 2018 06:41:39 GMT):
Has joined the channel.

mc (Fri, 23 Feb 2018 11:16:39 GMT):
I'm trying to figure out whether to go with Sawtooth or Fabric, anyone have any recommendations on how to make that decision?

nycycr (Fri, 23 Feb 2018 13:08:44 GMT):
I had the same debate. I've gone for Fabric because I don't want to be tied to the hardware of a specific vendor i.e. Intel. But on the other hand, Sawtooth is more scalable than Fabric

nycycr (Fri, 23 Feb 2018 13:09:20 GMT):
Scalable in terms of being able to handle more nodes in the network

zac (Fri, 23 Feb 2018 13:34:45 GMT):
@nycycr It should be noted that Sawtooth is not tied to PoET

zac (Fri, 23 Feb 2018 13:35:34 GMT):
One of the main features is that it's consensus mechanism is pluggable, including mid-deploy

zac (Fri, 23 Feb 2018 13:35:34 GMT):
One of the main features is that its consensus mechanism is pluggable, including mid-deploy

nycycr (Fri, 23 Feb 2018 13:35:51 GMT):
Yeah I get that. Both Fabric and Sawtooth are designed with modularity in mind. But at the moment PoET using Intel hardware is still the most mature consensus mechanism offered in Sawtooth

zac (Fri, 23 Feb 2018 13:36:45 GMT):
As far as I know you cannot change consensus mechanisms mid-stream with Fabric

nycycr (Fri, 23 Feb 2018 13:37:33 GMT):
ok. I was referring to pre-deployment though

Dan (Fri, 23 Feb 2018 13:51:25 GMT):
you can use poet without intel processors. it's only if you want full BFT that you need SGX.

Dan (Fri, 23 Feb 2018 13:53:53 GMT):
to my knowledge fabric has only one consensus option and it does not provide byzantine fault tolerance nor correctness guarantees - only total ordering of valid and invalid transactions

nycycr (Fri, 23 Feb 2018 14:06:41 GMT):
Fabric 1.0 only supports Kafka as the consensus option for now. Yes it doesn't provider BFT. But one that does is coming: https://github.com/jcs47/hyperledger-bftsmart

nycycr (Fri, 23 Feb 2018 14:06:41 GMT):
Fabric 1.0 only supports Kafka as the consensus option for now. Yes it doesn't provide BFT. But one that does is coming: https://github.com/jcs47/hyperledger-bftsmart

zac (Fri, 23 Feb 2018 14:22:16 GMT):
@Dan Is Raft BFT?

benoit.razet (Fri, 23 Feb 2018 14:39:17 GMT):
My 2 cents experience comparison between Sawtooth and Fabric. When I looked at Fabric 1.0, it was easy to grab their newbie demo and modify it to write a first smart contract. After that, the architecture of Fabric seems quite complex. Leveraging the public key infrastructure as it is baked into Fabric is a potential very cool feature, but it was just one more additional obstacle to understand the fundamentals. In comparison, in Sawtooth I find it is also easy write smart contracts, particularly because they can be written in any programming language supported. If you put aside the consensus protocol debate, the design of Sawtooth is pretty lean and it makes it easy to develop smart contract apps having in mind only the fundamentals of Blockchain.

Dan (Fri, 23 Feb 2018 15:08:22 GMT):
@zac no raft is crash fault tolerant but not byzantine fault tolerant

zac (Fri, 23 Feb 2018 15:14:18 GMT):
As far as consensus goes, seems like the first question you need to ask is whether or not you need BFT. If not, there are a number of crash fault tolerant options for both Fabric and Sawtooth, without every talking about hardware.

zac (Fri, 23 Feb 2018 15:16:58 GMT):
If you need BFT, Sawtooth has a hardware based solution today called PoET. For now it is dependent on Intel's SGX chip, but other hardware vendors might develop there own TEEs in the future. Sawtooth may also incorporate other BFT consensus mechanisms.

zac (Fri, 23 Feb 2018 15:17:43 GMT):
The nice thing about being able to switch midstream, is you can actually deploy your product today, and you don't have to take it down if you want to switch to a new consensus mechanism later.

zac (Fri, 23 Feb 2018 15:18:41 GMT):
Fabric has no BFT solution today. I don't know how far along their efforts are, but you'll have to wait to deploy until it's done.

zac (Fri, 23 Feb 2018 15:20:29 GMT):
I sure I'm coming off as a total evangelist, but PoET seems like a strange reason to choose Fabric. I'm sure there are other things Fabric does well, but PoET is an optional component that Fabric has no equivalent to anyway.

Dan (Fri, 23 Feb 2018 15:23:03 GMT):
If we are talking future features Sawtooth is looking at adding a pbft implementation for our next minor release. The notion of consensus is also important. Sawtooth enforces consensus of shared state. Fabric enforces transaction ordering. Beyond consensus there are a number of other features that differentiate sawtooth including... Multi-language support Parallel Transaction execution Can run ethereum contracts On-chain governance

nycycr (Fri, 23 Feb 2018 15:34:01 GMT):
some good points! Thanks! @Dan @zac

PhilippeKaizen (Fri, 23 Feb 2018 18:27:52 GMT):
Has joined the channel.

PhilippeKaizen (Fri, 23 Feb 2018 18:39:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=y2PoGYPgfqpNkN6WT) @FrankCastellucci

jsmitchell (Fri, 23 Feb 2018 18:49:35 GMT):
@PhilippeKaizen sorry, i don't understand what you meant to do by quoting those messages. Do you have a question?

amundson (Fri, 23 Feb 2018 19:35:20 GMT):
@alberto_souza block is not a transaction; block includes batches, batches includes transactions. if you look at the transaction you should see your nonce.

cliveb (Fri, 23 Feb 2018 21:47:09 GMT):
Has joined the channel.

cliveb (Fri, 23 Feb 2018 21:58:25 GMT):
On Sawtooth we need to generate the genesis block and use “Seth” (Sawtooth Ethereum) using SGX/PSW. Any ideas if Google GCP cloud provides SGX processors? How many CPUs? How much RAM is recommend?

Dan (Fri, 23 Feb 2018 22:01:09 GMT):
sounds like a few things conflated there.. if you are trying to use Seth there is no SGX/PSW needed. SGX is only required for full BFT protection on PoET. Seth, the ethereum virtual machine does not involve SGX at all.

Dan (Fri, 23 Feb 2018 22:03:19 GMT):
For app dev and test networks stock images on AWS have worked fine. I haven't used google cloud yet. If you drive a lot of load at each instance then you'll want more disk throughput than a small instance will provide.

FrankCastellucci (Fri, 23 Feb 2018 23:48:58 GMT):
In looking through intkey_python I am not seeing how it is authorized to access context.get_state or context.set_state but in my similar code I am getting an Authorization issue. Is there a step I am missing?

kelly_ (Sat, 24 Feb 2018 01:19:02 GMT):
@cliveb I believe IBM offers bare metal SGX instances

kelly_ (Sat, 24 Feb 2018 01:19:14 GMT):
azure has announced it, I do not believe it is in GCP now though

FrankCastellucci (Sat, 24 Feb 2018 11:08:01 GMT):
```

FrankCastellucci (Sat, 24 Feb 2018 11:08:01 GMT):
``` # The following is how I am submitting a state entry def _set_initiate_event(context, event_initiate, uuid_key): LOGGER.info("Key string = %s", uuid_key) address = _make_events_key(uuid_key) LOGGER.info("Key address = %s", address) LOGGER.info("Value data = %s", event_initiate) event_data = event_initiate.SerializeToString() LOGGER.info("Serialized data = %s", event_data) state_dict = {address: event_data} LOGGER.info("State entry = %s", state_dict) try: addresses = context.set_state( state_dict, timeout=STATE_TIMEOUT_SEC) # In the log I am seeing the following hashblock-dev-events-tp | [2018-02-24 11:04:44.371 INFO handler] Key string = 4c2a7868-9ef6-4713-bc30-9d4950b49298 hashblock-dev-events-tp | [2018-02-24 11:04:44.372 INFO handler] Key address = ca2feea444c152902b6fe97fb2d8ab138fa5afcb0c12963a5171e5c80f775ebafdf3d03191ff14e6d78795aa0c50fa10300742ce99d764fc81158d14502194fc5383a6c84344c3f5441a6b02fc44c34244b9749c016f6a741499f3204def0f523a6a362ce3f52c4ec36f58920b0afe6121a2be608fdc96e6456bc5967659c2d6bdb4fc hashblock-dev-events-tp | [2018-02-24 11:04:44.372 INFO handler] Value data = plus: "plus_public_key" hashblock-dev-events-tp | minus: "minus_public_key" hashblock-dev-events-tp | quantity { hashblock-dev-events-tp | value: "\000\000\000\000\000" hashblock-dev-events-tp | valueUnit: "\000\000" hashblock-dev-events-tp | resourceUnit: "\000\000\000" hashblock-dev-events-tp | } hashblock-dev-events-tp | hashblock-dev-events-tp | [2018-02-24 11:04:44.372 INFO handler] Serialized data = b'\n\x0fplus_public_key\x12\x10minus_public_key\x1a\x10\n\x05\x00\x00\x00\x00\x00\x12\x02\x00\x00\x1a\x03\x00\x00\x00' hashblock-dev-events-tp | [2018-02-24 11:04:44.373 INFO handler] State entry = {'ca2feea444c152902b6fe97fb2d8ab138fa5afcb0c12963a5171e5c80f775ebafdf3d03191ff14e6d78795aa0c50fa10300742ce99d764fc81158d14502194fc5383a6c84344c3f5441a6b02fc44c34244b9749c016f6a741499f3204def0f523a6a362ce3f52c4ec36f58920b0afe6121a2be608fdc96e6456bc5967659c2d6bdb4fc': b'\n\x0fplus_public_key\x12\x10minus_public_key\x1a\x10\n\x05\x00\x00\x00\x00\x00\x12\x02\x00\x00\x1a\x03\x00\x00\x00'} hashblock-dev-events-tp | Traceback (most recent call last): hashblock-dev-events-tp | File "/project/sawtooth-eventchain/bin/events-tp", line 29, in hashblock-dev-events-tp | main() hashblock-dev-events-tp | File "/project/sawtooth-eventchain/families/events/hashblock_events/processor/main.py", line 166, in main hashblock-dev-events-tp | processor.start() hashblock-dev-events-tp | File "/usr/lib/python3/dist-packages/sawtooth_sdk/processor/core.py", line 265, in start hashblock-dev-events-tp | self._process_future(fut) hashblock-dev-events-tp | File "/usr/lib/python3/dist-packages/sawtooth_sdk/processor/core.py", line 216, in _process_future hashblock-dev-events-tp | self._process(msg) hashblock-dev-events-tp | File "/usr/lib/python3/dist-packages/sawtooth_sdk/processor/core.py", line 130, in _process hashblock-dev-events-tp | handler.apply(request, state) hashblock-dev-events-tp | File "/project/sawtooth-eventchain/families/events/hashblock_events/processor/handler.py", line 80, in apply hashblock-dev-events-tp | context, signer_key) hashblock-dev-events-tp | File "/project/sawtooth-eventchain/families/events/hashblock_events/processor/handler.py", line 104, in _apply_initiate hashblock-dev-events-tp | return _set_initiate_event(context, event_initiate, keyUUID) hashblock-dev-events-tp | File "/project/sawtooth-eventchain/families/events/hashblock_events/processor/handler.py", line 172, in _set_initiate_event hashblock-dev-events-tp | timeout=STATE_TIMEOUT_SEC) hashblock-dev-events-tp | File "/usr/lib/python3/dist-packages/sawtooth_sdk/processor/context.py", line 100, in set_state hashblock-dev-events-tp | addresses = [e.address for e in entries] hashblock-dev-events-tp | File "/usr/lib/python3/dist-packages/sawtooth_sdk/processor/context.py", line 100, in hashblock-dev-events-tp | addresses = [e.address for e in entries] hashblock-dev-events-tp | AttributeError: 'str' object has no attribute 'address' ```

zac (Sat, 24 Feb 2018 14:50:52 GMT):
Do you know what version of the SDK you are running?

FrankCastellucci (Sat, 24 Feb 2018 15:58:56 GMT):
@zac I just refreshed from github today and am using an altered version of the `local` yaml with my TP in it

FrankCastellucci (Sat, 24 Feb 2018 15:58:56 GMT):
@zac I just refreshed from github today and am using an altered version of the `local` yaml with my TP in it and did a `bin/build_all -l python`

zac (Sat, 24 Feb 2018 16:26:54 GMT):
hrmmm

zac (Sat, 24 Feb 2018 16:27:16 GMT):
I was wondering if there was perhaps a version mismatch between the validator and the SDK

zac (Sat, 24 Feb 2018 16:27:20 GMT):
But it doesn't sound like it

zac (Sat, 24 Feb 2018 16:29:07 GMT):
Is there a reason your address is 262 characters long?

zac (Sat, 24 Feb 2018 16:29:17 GMT):
It should be 70 yeah?

FrankCastellucci (Sat, 24 Feb 2018 17:29:18 GMT):
@zac I shortened it to `ca2feed61a2a16b13456ed2d24e3b58799a16588a5702b726411b0aebc7b1165e25bb9` but same error

zac (Sat, 24 Feb 2018 17:37:01 GMT):
Yeah, I think this is a bug

zac (Sat, 24 Feb 2018 17:37:10 GMT):
https://github.com/hyperledger/sawtooth-core/blob/master/sdk/python/sawtooth_sdk/processor/context.py#L100

zac (Sat, 24 Feb 2018 17:38:33 GMT):
Entries used to be an array of objects with address and value keys

zac (Sat, 24 Feb 2018 17:38:54 GMT):
It got changed to a dict, which you see on line 87

zac (Sat, 24 Feb 2018 17:39:20 GMT):
But it looks like the `AuthorizationError` code never got changed

zac (Sat, 24 Feb 2018 17:39:45 GMT):
Which means you are getting an AuthorizationError

zac (Sat, 24 Feb 2018 17:39:53 GMT):
so, that's another problem

zac (Sat, 24 Feb 2018 17:41:15 GMT):
Do me a favor

zac (Sat, 24 Feb 2018 17:41:38 GMT):
Change line 100 there to delete the `.address`, and tell me what logs out

zac (Sat, 24 Feb 2018 17:42:01 GMT):
Should read like this: ``` addresses = [e for e in entries] ```

zac (Sat, 24 Feb 2018 17:43:28 GMT):
(you might have to rebuild or reinstall the sdk after making that change, depending on how you're set up)

FrankCastellucci (Sat, 24 Feb 2018 17:48:30 GMT):
@zac - When I changed the address generation in the TP I went back to the code that creates the transaction. It too was creating a large address as part of the TxnHeader... I made the address generator there in parity with what is in the TP and it all works.

zac (Sat, 24 Feb 2018 17:48:57 GMT):
ah

zac (Sat, 24 Feb 2018 17:49:13 GMT):
the long address was probably generating the `AuthorizationError`

zac (Sat, 24 Feb 2018 17:49:24 GMT):
which is where that bug lives

FrankCastellucci (Sat, 24 Feb 2018 17:49:55 GMT):
Well, I agree that the `e.address` from the entries seems wrong and implies a key with address property

FrankCastellucci (Sat, 24 Feb 2018 17:50:26 GMT):
which is why I didn't get the Auth error but I can see that it was trying but failed on the map iteration

FrankCastellucci (Sat, 24 Feb 2018 17:50:39 GMT):
in context.py

FrankCastellucci (Sat, 24 Feb 2018 17:52:28 GMT):
Thanks, I must have missed the 70 char length if it is written somewhere

zac (Sat, 24 Feb 2018 17:52:50 GMT):
https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/global_state.html

zac (Sat, 24 Feb 2018 17:52:56 GMT):
^ Check that out

zac (Sat, 24 Feb 2018 17:53:29 GMT):
6 hex-char namespace + 64 hex-char address

zac (Sat, 24 Feb 2018 17:54:29 GMT):
Also keep in mind the hexadecimal characters actually represent bytes, so you should think of it as 35 bytes

zac (Sat, 24 Feb 2018 17:55:17 GMT):
you can create mini-namespaces within your 64 chars, but they must always be even numbers of chars

zac (Sat, 24 Feb 2018 17:56:12 GMT):
6 + 8 + 12 + 54 = :+1: 6 + 9 + 11 + 54 = :-1:

FrankCastellucci (Sat, 24 Feb 2018 17:57:39 GMT):
Yes... I just was staying in your lexicon from earlier... and thanks for the link

gen_el (Sun, 25 Feb 2018 04:23:46 GMT):
Hi @Dan In trying to support private networks like private channels, does the participating org, who is probably in an existing network, need another node, in other to participate in the new private network?

ranvirsingh (Sun, 25 Feb 2018 05:21:23 GMT):
Has joined the channel.

puneet (Sun, 25 Feb 2018 05:49:39 GMT):
Has joined the channel.

gen_el (Sun, 25 Feb 2018 08:02:33 GMT):
Also @Dan I see Sawtooth (in the intKey TP example) does a Tx Call/Simulation and then Tx Execution subsequently. My question is, if i was calling an API (can i call an API?) in my TP function, would it be executed twice (2x) or only once at Tx Execution?

gen_el (Sun, 25 Feb 2018 09:04:18 GMT):
Also @Dan Can i use Sawtooth with an external db like couchdb, or MongoDB or PostgreSQL?

jsmitchell (Sun, 25 Feb 2018 15:41:05 GMT):
@gen_el it’s not a simulation - the first invocation is due to block publishing. The transaction is executed and the validator publishes a block which includes that transaction and the corresponding state merkle root of all the aggregate state changes for that block. The second invocation you see is during block validation, where the validator is determining if the block is valid, contains valid transactions, and whether it reaches the same state merkle root as the publisher did.

gen_el (Sun, 25 Feb 2018 15:43:23 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=kDWroBJMkfseeAHpe) @jsmitchell Thanks for clarifying. So then, does that mean the invocation (if i were calling an API) only happens once?

jsmitchell (Sun, 25 Feb 2018 15:45:01 GMT):
What API?

gen_el (Sun, 25 Feb 2018 15:46:27 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=LN8WugvNGPEjYn8nE) @jsmitchell Assuming i were calling an external API in my transaction function (i don't know if that possible in sawtooth), would that mean i will see 2 calls, one at invocation, another at state validation?

gen_el (Sun, 25 Feb 2018 15:46:27 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=LN8WugvNGPEjYn8nE) @jsmitchell Assuming i were calling an external API in my transaction function (i don't know if thats possible in sawtooth), would that mean i will see 2 calls, one at invocation, another at state validation?

jsmitchell (Sun, 25 Feb 2018 15:46:36 GMT):
@gen_el to your question on other databases, Sawtooth has a very sophisticated event system that we use to implement state delta exports. The target can be any database system you like. Here is an example in clojure: https://github.com/peterschwarz/state-export-prototype

jsmitchell (Sun, 25 Feb 2018 15:47:21 GMT):
You should not call an external API from your transaction processor.

jsmitchell (Sun, 25 Feb 2018 15:48:47 GMT):
The #1 most important rule in blockchain transactions is they must be deterministic, across space and time

gen_el (Sun, 25 Feb 2018 15:49:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jpdDyJNL6Pxc3hDie) @jsmitchell I get. Assuming i did (a deterministic API), would it get called twice? (Assuming we have to 1 validator.

gen_el (Sun, 25 Feb 2018 15:49:08 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=jpdDyJNL6Pxc3hDie) @jsmitchell I get. Assuming i did (a deterministic API), would it get called twice? (Assuming we have 1 validator.

jsmitchell (Sun, 25 Feb 2018 15:49:16 GMT):
Yes

gen_el (Sun, 25 Feb 2018 15:49:51 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=XKamZuFc5jgKgkrs8) @jsmitchell Okay.

gen_el (Sun, 25 Feb 2018 15:51:01 GMT):
@jsmitchell One last question, how do i make a private network? Do i have to run another validator node (for my org) for each new private network?

jsmitchell (Sun, 25 Feb 2018 15:51:23 GMT):
It’s because publishing and validation are independent activities and we specifically do not just assume that the block that we ourselves published is valid. I.e. we treat it exactly the same way as if we received the block over the network

gen_el (Sun, 25 Feb 2018 15:52:16 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=N3Q5P9DjrXK4kcNJv) @jsmitchell I understand. Validation on Fabric is different.

jsmitchell (Sun, 25 Feb 2018 15:53:01 GMT):
Yeah, if you want to segment visibility of state for different use cases, you’ll want to run different network instances

gen_el (Sun, 25 Feb 2018 15:54:25 GMT):
@jsmitchell So if i want to transact with 10 orgs and would like to segment visibility, i would have to run a validator for each peer org. I would have **9 more validator nodes**?

jsmitchell (Sun, 25 Feb 2018 15:54:52 GMT):
Doesn’t sound like a great blockchain use case

jsmitchell (Sun, 25 Feb 2018 15:55:42 GMT):
Blockchains are about consensus on shared state

gen_el (Sun, 25 Feb 2018 15:56:14 GMT):
There are use cases that have trade secrets. However, there other use cases amongst them that they are very comfortable sharing.

gen_el (Sun, 25 Feb 2018 15:57:24 GMT):
Enterprises in heavily regulated industries and secrecy. Its a headache most times.

gen_el (Sun, 25 Feb 2018 15:57:24 GMT):
Enterprises in heavily regulated sectors and secrecy. Its a headache most times.

jsmitchell (Sun, 25 Feb 2018 15:58:00 GMT):
We work with companies that have to protect trade secrets all the time. Determining what should and should not appear on the chain is a key consideration for private networks. We don’t agree that an N^2 solution is desirable.

gen_el (Sun, 25 Feb 2018 16:00:48 GMT):
Understood.

gen_el (Sun, 25 Feb 2018 16:00:48 GMT):
Understood. Thanks @jsmitchell

ra_w (Sun, 25 Feb 2018 17:42:55 GMT):
Has joined the channel.

tomislav (Sun, 25 Feb 2018 22:15:28 GMT):
Hello. I'm writing an SDK for .net core and I'd like to test it out using the intkey and xo binaries found under /bin, but I'm having trouble building them. Is there a document outlining this process? Furthermore, is there any other way I can invoke the Rest API using some existing app without writing one?

tomislav (Sun, 25 Feb 2018 22:20:40 GMT):
To be clear, I have IntKey transaction processor up and connected to the 0MQ just need to invoke transactions

Dan (Mon, 26 Feb 2018 00:33:16 GMT):
cool! everything builds using the script bin/build_all. there are flags for building just certain languages. you can probably get away with building just python: ```$ bin/build_all -l python```

Dan (Mon, 26 Feb 2018 00:42:02 GMT):
btw that build script uses the magic of docker. you'll need to have that installed. works like a charm on osx & linux. ymmv on windows.

tomislav (Mon, 26 Feb 2018 02:33:40 GMT):
Thanks @Dan that worked like a charm. I was trying to to run the script from the bin folder

OSubachev (Mon, 26 Feb 2018 06:36:06 GMT):
I'm trying to compile Sawtooth SDK for Go under Windows. But Go cannot find various packages form sawtooth_sdk/protobuf/ path. Actually there is no sawtooth_sdk/protobuf/ directory in repository. What I'm missing ?

askmish (Mon, 26 Feb 2018 09:07:48 GMT):
@OSubachev How are you compiling the sdk?

Switch2Logic (Mon, 26 Feb 2018 09:27:37 GMT):
Has joined the channel.

GulshanKrish (Mon, 26 Feb 2018 09:39:16 GMT):
Has joined the channel.

GulshanKrish (Mon, 26 Feb 2018 09:39:36 GMT):
hi all....i am new to the group and i hope i get informations which i needed from here... :)

GulshanKrish (Mon, 26 Feb 2018 09:40:07 GMT):
I am really new to this Blockchain and Hyperledger.

GulshanKrish (Mon, 26 Feb 2018 09:40:43 GMT):
I would like to know more about it : Like who can join the blockchain network? on what basis they are allowed to join? Who can make the transactions?

GulshanKrish (Mon, 26 Feb 2018 09:40:51 GMT):
What are the permissions given and by whom?

GulshanKrish (Mon, 26 Feb 2018 09:40:59 GMT):
Who assigns and checks the transactions

Switch2Logic (Mon, 26 Feb 2018 09:49:13 GMT):
Good Day, I have been busy with Hyperledger Fabric for about a month now. Sawtooth Lake v1 has recently been released. I am now contemplating if I should move from Fabric to Sawtooth Lake. One of the the things that I like about Fabric is the creation of channels... Can't seem to find channels in the Sawtooth Docs does it support channels? Reason for thinking of moving over is the PoET consensus algorithm. As Kafka(zookeeper) ordering in Fabric does keep all the sheep together but the part that I am unsure of with Kafka its cons are: “While Kafka is crash fault tolerant, it is not Byzantine fault tolerant, which prevents the system from reaching agreement in the case of malicious or faulty nodes.” According to IBM. What will the implications be if the network reached agreement in the case of malicious faulty node? Can I fix this with fabric somehow? When in what use case would this be a concern? Should I move to Sawtooth Lake - what about channels then?

alcamo93 (Mon, 26 Feb 2018 12:06:24 GMT):
Has joined the channel.

alcamo93 (Mon, 26 Feb 2018 12:07:19 GMT):

VirtualBox_TechSoft_16_02_2018_10_54_01.png

alcamo93 (Mon, 26 Feb 2018 12:07:39 GMT):
Hi I have installed cURL, Node.js, docker toolbox on Ubuntu 17.10 artful and now i am trying to build the hyperledger sawtooth image using docker-compose -f sawtooth-default.yaml up This command is not at all completing. It is stuck at the last stage sawtooth-validator-default : sawtooth: error: argument command: invalid choice: 'admin' (choose from ''.'block','identity','keygen','peer','settings','state','transaction') Then I execute the following: 'docker exec -it sawtooth-client-default bash' En el root: root @ 65e6e6681382: / # I test the validator with: curl http://rest-api:8080/blocks It does not work I tried waiting till long long hours but still not completing. I tried using docker-compose -f sawtooth-default.yaml down docker-compose -f sawtooth-default.yaml up --force-recreate Hi I have installed cURL, Node.js, docker toolbox on Ubuntu 17.10 artful and now i am trying to build the hyperledger sawtooth image using docker-compose -f sawtooth-default.yaml up This command is not at all completing. It is stuck at the last stage sawtooth-validator-default : sawtooth: error: argument command: invalid choice: 'admin' (choose from ''.'block','identity','keygen','peer','settings','state','transaction') Then I execute the following: 'docker exec -it sawtooth-client-default bash' En el root: root @ 65e6e6681382: / # I test the validator with: curl http://rest-api:8080/blocks It does not work I tried waiting till long long hours but still not completing. I tried using docker-compose -f sawtooth-default.yaml down docker-compose -f sawtooth-default.yaml up --force-recreate regards

OSubachev (Mon, 26 Feb 2018 12:47:14 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=43xWqK2MfAQkbZt3S) @askmish I've installeded sawtooth_sdk and sawtooth_noop and try to build main.go from sawtooth_noop. I've already solved protobuf problem. But now I get the following error for zmq compiling: ..\github.com\pebbe\zmq4\auth.go:19:10: fatal error: zmq.h: No such file or directory

OSubachev (Mon, 26 Feb 2018 12:52:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=vtgtQoXPTrYmTA88Z) I've added the latest zmq.h and now after rather long compiling I get: # github.com/pebbe/zmq4 C:/Program Files/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lzmq collect2.exe: error: ld returned 1 exit status

OSubachev (Mon, 26 Feb 2018 12:52:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth?msg=vtgtQoXPTrYmTA88Z) I've added the latest zmq.h and now after rather long compiling I get: # github.com/pebbe/zmq4 C:/Program Files/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lzmq collect2.exe: error: ld returned 1 exit status Is it at all possible to build Sawtooth SDK for Go under Windows ?

OSubachev (Mon, 26 Feb 2018 12:56:26 GMT):
How to create Private and Public Keys (https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/txn_submit_tutorial.html#creating-private-and-public-keys) under .NET ?

OSubachev (Mon, 26 Feb 2018 13:03:19 GMT):
@tomislav I'm also writing SDK for .NET. How do you create Private and Public Keys under .NET ? (https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/txn_submit_tutorial.html#creating-private-and-public-keys)

tomislav (Mon, 26 Feb 2018 13:41:53 GMT):
@OSubachev You can generate EC key pair using BouncyCastle (http://www.bouncycastle.org/wiki/display/JA1/Elliptic+Curve+Key+Pair+Generation+and+Key+Factories)

tomislav (Mon, 26 Feb 2018 13:44:33 GMT):
Or you can also check Nethereum (https://github.com/Nethereum/Nethereum/blob/d6cba89ea00c16011b6000dff705c9f727688d51/src/Nethereum.KeyStore/KeyStoreServiceBase.cs#L61), however they use ETH json key store format, in case you need to work with the private key directly, you won't be able to I think, but you can sign and verify data

tomislav (Mon, 26 Feb 2018 13:51:39 GMT):
It looks like you're working on a client SDK. If you need a processor SDK to test with, feel free to play around with my code https://github.com/tmarkovski/sawtooth-sdk-net

zac (Mon, 26 Feb 2018 14:33:26 GMT):
@alcamo93 Sounds like you're using an old version of a docker-compose file (0.8) with 1.0 docker images. Make sure the commands in your compose file match the ones here: https://github.com/hyperledger/sawtooth-core/blob/master/docker/compose/sawtooth-default.yaml

zac (Mon, 26 Feb 2018 14:33:53 GMT):
In particular you'll notice there is no longer a `sawtooth admin` command. It has been replaced with `sawadm`.

zac (Mon, 26 Feb 2018 15:26:48 GMT):
@Switch2Logic Others can probably speak more intelligently to the channels issue than I can, but as I understand them they are essentially sub-blockchains with stricter permissioning. While there isn't anything marketed as "channels" in Sawtooth, there would be nothing stopping you from creating as many independent blockchains as you needed, with specific permissioning on each.

MikeTD (Mon, 26 Feb 2018 16:43:29 GMT):
Has joined the channel.

gusseleet (Mon, 26 Feb 2018 17:04:47 GMT):
Has joined the channel.

gusseleet (Mon, 26 Feb 2018 17:06:35 GMT):
Hi guys! Here (https://www.hyperledger.org/projects/sawtooth/marketplace-case-study) they list a few things that are a challenge with traditional digital assets. Do someone have any more information about that?

Dan (Mon, 26 Feb 2018 17:44:00 GMT):
@agunde can you remind me of the txn flow through the system? structure checking -> signature checking -> journal? ...? Do transactions get gossiped out before they are validated?

agunde (Mon, 26 Feb 2018 17:48:19 GMT):
Receive Batch -> Check Permissions -> Check Signatures -> Check Structure -> Check if we should broadcast -> Completer -> Journal @Dan

cliveb (Mon, 26 Feb 2018 18:04:56 GMT):
What is the best doc or code to understand how Sawtooth interfaces with a distributed ledger? We are looking into message-passing to interface with content-addressable storage.

cliveb (Mon, 26 Feb 2018 18:04:56 GMT):
What is the best doc or code to understand how Sawtooth interfaces with a distributed ledger? We are looking into message-passing to interface with content-addressable storage. Is the Consensus Interface the definition? https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/journal.html#the-consensus-interface

Dan (Mon, 26 Feb 2018 18:11:31 GMT):
Thanks @agunde

jsmitchell (Mon, 26 Feb 2018 19:16:00 GMT):
Welcome! Introductory documentation is available here: https://sawtooth.hyperledger.org/docs/core/releases/latest/introduction.html

brian038 (Mon, 26 Feb 2018 19:18:30 GMT):
Has joined the channel.

tarcisiocjr (Mon, 26 Feb 2018 19:53:57 GMT):
Has joined the channel.

Dan (Mon, 26 Feb 2018 19:54:01 GMT):
@cliveb do you want sawtooth to send authoritative messages to a different system? or do you want sawtooth to consume information from an oracle? If the former, I'd suggest looking at the state delta subscriptions https://sawtooth.hyperledger.org/docs/core/releases/latest/rest_api/state_delta_websockets.html If the latter then check out the app dev guide: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide.html

tomislav (Mon, 26 Feb 2018 20:13:11 GMT):
https://gist.github.com/tmarkovski/9fc008fc034511bbbee93a5c4cd1a99a[ ](https://chat.hyperledger.org/channel/sawtooth?msg=Bv7yEru3GrcWo2EB7) @OSubachev

alcamo93 (Mon, 26 Feb 2018 21:40:45 GMT):
@zac If the file that I was taking had the command sawtooth admin` and it repl replaces the one you sent me with. When I run it I get the error: yaml.scanner. scanner Error: while scannign for the next token found character '\t' that cannot start any token in ""./sawtooth-dafault.yaml" line 2 column 1 Send screen

alcamo93 (Mon, 26 Feb 2018 21:42:16 GMT):

VirtualBox_TechSoft_26_02_2018_17_20_04.png

pmettu (Mon, 26 Feb 2018 22:46:04 GMT):
Has joined the channel.

jsmitchell (Mon, 26 Feb 2018 22:54:17 GMT):
@alcamo93 per @zac's comment above, if your docker images are the wrong version, you can't just edit a file. There will be numerous changes.

jsmitchell (Mon, 26 Feb 2018 22:54:38 GMT):
You should ensure you are starting from a clean and consistent set of containers

zac (Mon, 26 Feb 2018 22:57:43 GMT):
@alcamo93 I haven't seen that error before, but at a glance it looks like your compose file is not valid YAML because it includes a tab character. I would suspect some sort of copy/paste error.

azanux (Tue, 27 Feb 2018 01:34:47 GMT):
Has joined the channel.

jamryl (Tue, 27 Feb 2018 02:52:15 GMT):
Has joined the channel.

ls84 (Tue, 27 Feb 2018 06:58:07 GMT):
@alcamo93 I have encounter this error before, I replaced all the tabs with spaces and It worked

ls84 (Tue, 27 Feb 2018 07:55:58 GMT):
Hi everyone. Is it normal that I am getting continuous log like this ```````

ls84 (Tue, 27 Feb 2018 07:55:58 GMT):
Hi everyone. Is it normal that I am getting continuous log like this ```````

ls84 (Tue, 27 Feb 2018 07:55:58 GMT):
Hi everyone. Is it normal that I am getting continuous log like this ````[2018-02-27 07:53:55.200 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.011143207550049 seconds - beginning heartbeat pings. [2018-02-27 07:53:55.202 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.007282733917236 seconds - beginning heartbeat pings. [2018-02-27 07:53:55.205 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.006829738616943 seconds - beginning heartbeat pings. [2018-02-27 07:54:05.209 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.006008625030518 seconds - beginning heartbeat pings. [2018-02-27 07:54:05.212 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.003559350967407 seconds - beginning heartbeat pings. [2018-02-27 07:54:05.213 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.001600742340088 seconds - beginning heartbeat pings. [2018-02-27 07:54:15.223 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.010595798492432 seconds - beginning heartbeat pings. [2018-02-27 07:54:15.226 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.008011817932129 seconds - beginning heartbeat pings. [2018-02-27 07:54:15.228 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.00614047050476 seconds - beginning heartbeat pings. [2018-02-27 07:54:25.236 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.00986385345459 seconds - beginning heartbeat pings. [2018-02-27 07:54:25.237 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.006031513214111 seconds - beginning heartbeat pings. [2018-02-27 07:54:25.239 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.005645990371704 seconds - beginning heartbeat pings. [2018-02-27 07:54:35.250 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.010359525680542 seconds - beginning heartbeat pings. [2018-02-27 07:54:35.252 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.008033037185669 seconds - beginning heartbeat pings. [2018-02-27 07:54:35.255 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.006391763687134 seconds - beginning heartbeat pings. [2018-02-27 07:54:45.262 DEBUG interconnect] No response from 895bd3fbb7602540ce0e79839a76fb3c94fe85f20948775d4859c33bd5b3713e16763197cd673c72a91c0e091ec0613178f0952bf7498b602e4eb30851f409f9 in 10.008602619171143 seconds - beginning heartbeat pings. [2018-02-27 07:54:45.264 DEBUG interconnect] No response from 55946bd3854e057d998ee54aca447d2d536f34a26650e0c629dca17c72a238ed45710a485cf07cb2e65cbda43e9d1c92940f26235afd03c851cba19b4292a7e4 in 10.00626802444458 seconds - beginning heartbeat pings. [2018-02-27 07:54:45.266 DEBUG interconnect] No response from f4463436afe3455ab7887407b2e2db57ec2e932210414eeeccc4ab027176457c6f198f4bb8bfffbd4057c5998b8ba1937a40590d06dd7d8d19c57b6fc9b31480 in 10.004461765289307 seconds - beginning heartbeat pings.````

ls84 (Tue, 27 Feb 2018 08:00:38 GMT):
Hi everyone, is it normal that I am continuously getting logs like this? but nodes seems are successfully peered

ls84 (Tue, 27 Feb 2018 08:00:46 GMT):

Screen Shot 2018-02-05 at 13.56.45.png

ls84 (Tue, 27 Feb 2018 08:01:40 GMT):

Screen Shot 2018-02-27 at 16.01.13.png

ls84 (Tue, 27 Feb 2018 08:03:07 GMT):
I config validator mostly default like this https://github.com/ls84/sawtooth-network/blob/master/validator-0/docker-compose.yaml

alexsvecencu (Tue, 27 Feb 2018 13:03:32 GMT):
Has joined the channel.

Aleshia (Tue, 27 Feb 2018 14:59:18 GMT):
Morning guys, random Q. I'm using sawtooths documentation in my thesis but being an open source project how would I cite it? Just cite the website and github page?

rjones (Tue, 27 Feb 2018 15:37:51 GMT):
@Aleshia I'd ask your advisor what the correct citation style they want is

rjones (Tue, 27 Feb 2018 15:38:58 GMT):
@Aleshia For example: http://www.easybib.com/reference/guide/apa/website

thegreatsunra (Tue, 27 Feb 2018 18:36:14 GMT):
When we follow the instructions here to create an identity policy: https://sawtooth.hyperledger.org/docs/core/releases/latest/cli/sawtooth.html#sawtooth-identity-policy-create ...we get the following error when we try to list policies: ``` sawtooth identity policy list Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sawtooth_cli/main.py", line 174, in main_wrapper main() File "/usr/lib/python3/dist-packages/sawtooth_cli/main.py", line 160, in main do_identity(args) File "/usr/lib/python3/dist-packages/sawtooth_cli/identity.py", line 234, in do_identity _do_identity_policy_list(args) File "/usr/lib/python3/dist-packages/sawtooth_cli/identity.py", line 322, in _do_identity_policy_list + entry.key AttributeError: type object 'Policy' has no attribute 'Type' ``` This behavior is present on 1.0.1 and nightly. Is there a workaround?

agunde (Tue, 27 Feb 2018 19:23:47 GMT):
@thegreatsunra Looks like you found a bug. I tested myself and I see the same output. I am looking into what the issue is.

agunde (Tue, 27 Feb 2018 19:34:24 GMT):
The Type attribute was changed to EntryType but this was missed when that change went in. There is now a PR up for a fix here https://github.com/hyperledger/sawtooth-core/pull/1481

VikasJakhar (Tue, 27 Feb 2018 20:05:06 GMT):
Has joined the channel.

thegreatsunra (Tue, 27 Feb 2018 20:08:23 GMT):
@agunde oh sweet, thank you! to be sure, it's a bug with the identity CLI, correct? the policies are in there, they simply aren't being returned from the `list` command?

agunde (Tue, 27 Feb 2018 20:08:40 GMT):
Correct.

thegreatsunra (Tue, 27 Feb 2018 20:09:57 GMT):
@agunde brilliant, thank you for the forthcoming fix!

agunde (Tue, 27 Feb 2018 20:10:16 GMT):
No problem.

leckronekt (Tue, 27 Feb 2018 21:06:38 GMT):
Has joined the channel.

leckronekt (Tue, 27 Feb 2018 21:12:17 GMT):
hey all

leckronekt (Tue, 27 Feb 2018 21:12:26 GMT):
don't know if this is the right place to post this

leckronekt (Tue, 27 Feb 2018 21:12:52 GMT):
but https://sawtooth.hyperledger.org/docs/core/releases/0.7/tutorial.html is referencing an old https location on github

zac (Tue, 27 Feb 2018 21:46:24 GMT):
`https://github.com/IntelLedger/sawtooth-core.git`?

zac (Tue, 27 Feb 2018 21:47:07 GMT):
Yeah, that should be `https://github.com/hyperledger/sawtooth-core.git`

zac (Tue, 27 Feb 2018 21:47:21 GMT):
For the record though, 0.7 is _very_ old at this point

zac (Tue, 27 Feb 2018 21:47:44 GMT):
I would highly recommend working with 1.0

pschwarz (Tue, 27 Feb 2018 21:47:55 GMT):
I wonder if we can put a redirect in that repo

zac (Tue, 27 Feb 2018 21:50:41 GMT):
https://github.com/blog/1508-repository-redirects-are-here

zac (Tue, 27 Feb 2018 21:50:42 GMT):
?

zac (Tue, 27 Feb 2018 21:52:00 GMT):
nevermind

zac (Tue, 27 Feb 2018 21:52:10 GMT):
this is just if you rename a repo or organization

zac (Tue, 27 Feb 2018 21:52:27 GMT):
they will automatically redirect

zac (Tue, 27 Feb 2018 21:54:24 GMT):
I am not seeing anything

rjones (Tue, 27 Feb 2018 21:55:10 GMT):
We created a hyperledger-archive org to park repos in. You could archive the old one, set up a new one which is just "click here now thanks"

rjones (Tue, 27 Feb 2018 21:55:22 GMT):
so you won't change history, etc

zac (Tue, 27 Feb 2018 22:07:22 GMT):
That's a good idea

rjones (Tue, 27 Feb 2018 22:08:30 GMT):
https://github.com/hyperledger-archives for instance

rjones (Tue, 27 Feb 2018 22:08:50 GMT):
part of the move is stripping all the tokens and collaborators, integrations, etc.

rjones (Tue, 27 Feb 2018 22:09:31 GMT):
(and set the archive option)

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Step Four: Build Docker Images buntu@ip-172-31-46-25:~/sawtooth$ cd sawtooth-core ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ ls adm BUILD.md cli consensus docker families integration LICENSE perf README.md sdk utility VERSION bin ci COMMITTERS CONTRIBUTING.md docs images Jenkinsfile NOTICES protos rest_api signing validator ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/build?buildargs=%7B%22HTTPS_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22HTTP_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22http_proxy%22%3A%22%22%2C%22https_proxy%22%3A%22%22%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=sawtooth-dev-cxx&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=5590ea6eb30131cface6045a0418989b11eb6c141c3d364631f649c8dff8c9e6&shmsize=0&t=sawtooth-dev-cxx&target=&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Step Four: Build Docker Images buntu@ip-172-31-46-25:~/sawtooth$ cd sawtooth-core ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ ls adm BUILD.md cli consensus docker families integration LICENSE perf README.md sdk utility VERSION bin ci COMMITTERS CONTRIBUTING.md docs images Jenkinsfile NOTICES protos rest_api signing validator ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/build?buildargs=%7B%22HTTPS_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22HTTP_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22http_proxy%22%3A%22%22%2C%22https_proxy%22%3A%22%22%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=sawtooth-dev-cxx&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=5590ea6eb30131cface6045a0418989b11eb6c141c3d364631f649c8dff8c9e6&shmsize=0&t=sawtooth-dev-cxx&target=&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? buntu@ip-172-31-46-25:~/sawtooth$ cd sawtooth-core ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ ls adm BUILD.md cli consensus docker families integration LICENSE perf README.md sdk utility VERSION bin ci COMMITTERS CONTRIBUTING.md docs images Jenkinsfile NOTICES protos rest_api signing validator ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/build?buildargs=%7B%22HTTPS_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22HTTP_PROXY%22%3A%22http%3A%2F%2F13.58.187.186%22%2C%22http_proxy%22%3A%22%22%2C%22https_proxy%22%3A%22%22%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=sawtooth-dev-cxx&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=5590ea6eb30131cface6045a0418989b11eb6c141c3d364631f649c8dff8c9e6&shmsize=0&t=sawtooth-dev-cxx&target=&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? https://github.com/hyperledger/sawtooth-core/blob/master/BUILD.md ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? https://github.com/hyperledger/sawtooth-core/blob/master/BUILD.md ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ //I tried

cliveb (Tue, 27 Feb 2018 22:37:55 GMT):
Working thru standing up Sawtooth on AWS. Stumped at - Step Four: Build Docker Images. Hints or help appreciated? https://github.com/hyperledger/sawtooth-core/blob/master/BUILD.md ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ sudo bin/build_all [--- Build mode: mounted ---] [--- Building cxx ---] [--- Building sawtooth-dev-cxx from docker/sawtooth-dev-cxx ---] Sending build context to Docker daemon 355.8kB Step 1/9 : FROM ubuntu:xenial Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) ubuntu@ip-172-31-46-25:~/sawtooth/sawtooth-core$ //I tried the following test: ubuntu@ip-172-31-46-25:~$ sudo docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/ ubuntu@ip-172-31-46-25:~$ sudo docker run -it ubuntu bash Unable to find image 'ubuntu:latest' locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'. ubuntu@ip-172-31-46-25:~$

vitorqshr (Tue, 27 Feb 2018 23:13:59 GMT):
Has joined the channel.

vitorqshr (Tue, 27 Feb 2018 23:14:01 GMT):
anyone know anything about migration? Ex: I have a network running on Fabric but want to change it to Sawtooth, is there any way to migrate the data?

tomislav (Wed, 28 Feb 2018 00:10:43 GMT):
I'm testing a .net sdk against my docker instance. I keep getting "header signature validation failed". I'm not entirely sure why it fails, it seems I have formatted and followed the documentation as well as the studied the javascript sdk workflow to create this. Can someone shed some light if I'm doing anything wrong? The code is very self explanatory and simple. I tested the Signer logic against the javascript sdk (sign using .net, verify using js) and it worked fine. Here's the call I'm making - this should be readable even for non-c# devs. https://pastebin.com/fdEFkbYX

tomislav (Wed, 28 Feb 2018 00:12:37 GMT):
And the signer code for reference is here https://github.com/tmarkovski/sawtooth-sdk-net/tree/master/Client

kelly_ (Wed, 28 Feb 2018 00:31:39 GMT):
@Dan ^^^

kelly_ (Wed, 28 Feb 2018 00:31:52 GMT):
hey @tomislav do you know what format your signature is in?

kelly_ (Wed, 28 Feb 2018 00:32:23 GMT):
oh you said you verified it with the JS example so that should be right

cliveb (Wed, 28 Feb 2018 01:04:27 GMT):
@tomislav using JS try ES6 'use strict' mode