rjones (Mon, 07 May 2018 20:39:04 GMT):
amundson

rjones (Mon, 07 May 2018 20:39:19 GMT):
Has left the channel.

amundson (Tue, 08 May 2018 01:31:29 GMT):
User User_1 added by amundson.

amundson (Tue, 08 May 2018 01:31:29 GMT):
User User_2 added by amundson.

amundson (Tue, 08 May 2018 01:31:29 GMT):
User User_3 added by amundson.

amundson (Tue, 08 May 2018 01:31:29 GMT):
User User_4 added by amundson.

cliveb (Tue, 08 May 2018 18:24:18 GMT):
Has joined the channel.

grkvlt (Tue, 08 May 2018 23:35:40 GMT):
Has joined the channel.

boydjohnson (Thu, 10 May 2018 14:39:54 GMT):
Has joined the channel.

amundson (Thu, 10 May 2018 22:47:30 GMT):
Sabre Announcement: https://lists.hyperledger.org/g/sawtooth/message/280

pankajgoyal (Fri, 11 May 2018 06:09:56 GMT):
Has joined the channel.

SjirNijssen (Fri, 11 May 2018 09:55:06 GMT):
Has joined the channel.

SjirNijssen (Fri, 11 May 2018 09:55:47 GMT):
@amundson Congratulations. Excellent initiative.

chainsaw (Fri, 11 May 2018 14:27:42 GMT):
Has joined the channel.

amundson (Fri, 11 May 2018 14:37:41 GMT):
@SjirNijssen thanks, we are excited about it

chainsaw (Fri, 11 May 2018 14:42:53 GMT):
where can I read about the background for this and the elapsed timeline from inception? I am interested in learning who created this, why it was created, design discussions, Hyperledger proposal for acceptance, and background on the submitter(s) and key developers and maintainers. Thanks.

jsmitchell (Fri, 11 May 2018 15:12:29 GMT):
@chainsaw that's a lot of questions. Can you help us understand why you want to know all of those things?

chainsaw (Fri, 11 May 2018 17:46:58 GMT):
I want to know all of these things so I can understand who to follow and where to go to follow and potentially participate. I want to know all of these things so I can understand how this project was created and why. I want to know who are the influencers and authoritative developers that maintain, guide, and decide what will and will not be accepted.

chainsaw (Fri, 11 May 2018 17:51:00 GMT):
It can be frustrating trying to come put t o speed on Hyperledger projects without first understanding the fundamental concepts, design decisions, participants, assignments, roadmap, etc. -- the rocket chat and the repos do not provide forum in any efficent and effective manner for this discovery and orientation process.

chainsaw (Fri, 11 May 2018 17:51:00 GMT):
It can be frustrating trying to come up to speed on Hyperledger projects without first understanding the fundamental concepts, design decisions, participants, assignments, roadmap, etc. -- the rocket chat and the repos do not provide forum in any efficent and effective manner for this discovery and orientation process.

chainsaw (Fri, 11 May 2018 17:51:00 GMT):
It can be frustrating trying to come up to speed on Hyperledger projects without first understanding the fundamental concepts, design decisions, participants, assignments, roadmap, etc. -- the rocket chat and the repos do not provide a forum in any efficent and effective manner for this discovery and orientation process.

jsmitchell (Fri, 11 May 2018 17:54:58 GMT):
Here's the documentation on Sabre which should give you an idea of the design intent: https://sawtooth.hyperledger.org/docs/sabre/releases/latest/

chainsaw (Fri, 11 May 2018 17:56:12 GMT):
Like for example "who is jsmitchell? what role does he perform? what projects does he work on? is he work for a hyperledger member? if so which one? This information allows me to determine the who, what and how tp communicate with and potentially collaborate with. Does this make any sense?

jsmitchell (Fri, 11 May 2018 17:56:18 GMT):
There are members of the development team here in this channel that can help answer questions. But, I'm afraid you may be expecting a level of rigor around project documentation and justification that might not be in place.

jsmitchell (Fri, 11 May 2018 17:56:56 GMT):
Sure, it makes sense, but the people here have no obligation to document that or even provide that information. So, don't be too upset if it's not forthcoming.

jsmitchell (Fri, 11 May 2018 17:59:07 GMT):
I work for Bitwise IO - we've done a lot of work with Intel and Cargill on Hyperledger Sawtooth, in addition to making a number of contributions ourselves. Sawtooth Sabre is a contribution of Cargill, and some members of the team that worked on it are in this channel.

jsmitchell (Fri, 11 May 2018 18:00:33 GMT):
This channel is a great place to collaborate on Sabre

chainsaw (Fri, 11 May 2018 18:01:09 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=m8vyuv7Kc957H9nAj) @jsmitchell I thought all projects had to submit a paper or charter to Hyperledger and there was a process (with trackable conversations) regarding the acceptance of the project into Hyperledger--I would like to read the documents and discussion threads for sawtooth-sabre.

jsmitchell (Fri, 11 May 2018 18:02:22 GMT):
Ah, I see. This is not a separate top-level project. It's part of sawtooth, just managed in its own repository.

chainsaw (Fri, 11 May 2018 18:03:07 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=ZwmudbikEqbxirY34) @jsmitchell Super! Is Cargill an Hyperledger member? I could not find them in the member list.

jsmitchell (Fri, 11 May 2018 18:03:31 GMT):
I don't believe they are members. Contributions can come from anywhere, member or not.

chainsaw (Fri, 11 May 2018 18:06:05 GMT):
Awesome! Thank you @jsmitchell. I hope I have not been a pain or annoyance. I appreciate your patience and informative replies :)

jsmitchell (Fri, 11 May 2018 18:06:28 GMT):
no problem! Excited to have you dig in and learn/contribute on Sabre!

chainsaw (Fri, 11 May 2018 18:06:37 GMT):
So TPs are welcome?

jsmitchell (Fri, 11 May 2018 18:06:52 GMT):
TP?

chainsaw (Fri, 11 May 2018 18:07:06 GMT):
Transaction Processors

jsmitchell (Fri, 11 May 2018 18:07:33 GMT):
Well, Sabre _is_ a transaction processor that runs wasm bytecode stored on chain

jsmitchell (Fri, 11 May 2018 18:07:38 GMT):
that's in the repo

jsmitchell (Fri, 11 May 2018 18:08:14 GMT):
https://github.com/hyperledger/sawtooth-sabre

jsmitchell (Fri, 11 May 2018 18:08:24 GMT):
https://github.com/hyperledger/sawtooth-sabre/tree/master/tp/src

jsmitchell (Fri, 11 May 2018 18:08:35 GMT):
written in Rust

jsmitchell (Fri, 11 May 2018 18:09:09 GMT):
the idea is that you import the sdk, write your code, and then compile down to wasm bytecode

jsmitchell (Fri, 11 May 2018 18:09:33 GMT):
that bytecode is then loaded to state in a transaction and then executed later by a different transaction

chainsaw (Fri, 11 May 2018 18:09:40 GMT):
Yep, so TPs can be contributed, because it seems that TPs are the area where Sawtooth has the greatest opportunity and a rich ecosystem of TPs will propel Sawtooth to the #1 slot.

jsmitchell (Fri, 11 May 2018 18:10:04 GMT):
the sabre transaction processor deals with all the complexity of storing, loading, and executing the wasm contracts

jsmitchell (Fri, 11 May 2018 18:10:23 GMT):
yes, absolutely - cool applications which use sabre would be great to see!

jsmitchell (Fri, 11 May 2018 18:10:54 GMT):
here's how to write sabre smart contracts: https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html

chainsaw (Fri, 11 May 2018 18:12:44 GMT):
I like the WASM approach. Great promise.

chainsaw (Fri, 11 May 2018 18:12:59 GMT):
I'll clone the repo and get to work :)

jsmitchell (Fri, 11 May 2018 18:13:14 GMT):
fantastic!

chainsaw (Fri, 11 May 2018 18:13:17 GMT):
Thanks @jsmitchell

jsmitchell (Fri, 11 May 2018 18:13:45 GMT):
of course!

BenBetts (Fri, 11 May 2018 18:20:43 GMT):
Has joined the channel.

tkuhrt (Fri, 11 May 2018 23:02:08 GMT):
Has joined the channel.

svanschalkwyk (Fri, 18 May 2018 21:13:17 GMT):
Has joined the channel.

Johnjam (Tue, 22 May 2018 07:04:06 GMT):
Has joined the channel.

kelly_ (Thu, 24 May 2018 20:11:28 GMT):
Has joined the channel.

benoit.razet (Fri, 25 May 2018 17:48:33 GMT):
Has joined the channel.

Gandalf (Sun, 27 May 2018 04:07:00 GMT):
Has joined the channel.

benoit.razet (Tue, 29 May 2018 20:58:18 GMT):
Hi, I got the chance to review the RFC for Sabre. It's super interesting! It addresses a number of issues inherent to bare sawtooth, like the governance of smart contracts deployment on a network or the namespace restriction.

amundson (Wed, 30 May 2018 05:20:43 GMT):
@benoit.razet Sawtooth does have a fairly good governance capability for which transaction processors must exist at any given time, which provides the ability to do enterprise-level things like rolling upgrades in a traditional software management sense; but while that is appropriate for sawtooth itself and transaction processors, we definitely wanted an easier way to deploy smart contracts without systems administrator involvement and have them safely executed in a sandboxed vm.

tim-d-blue (Thu, 31 May 2018 15:13:58 GMT):
Has joined the channel.

rys_rahul (Fri, 08 Jun 2018 09:06:55 GMT):
Has joined the channel.

JonathanLevi (Mon, 11 Jun 2018 17:12:17 GMT):
Has joined the channel.

markg 17 (Mon, 11 Jun 2018 22:39:44 GMT):
Has joined the channel.

paulananth (Fri, 15 Jun 2018 15:56:02 GMT):
Has joined the channel.

tungdt_socoboy (Thu, 21 Jun 2018 11:45:42 GMT):
Has joined the channel.

mengan (Wed, 27 Jun 2018 12:11:48 GMT):
Has joined the channel.

hanen (Thu, 05 Jul 2018 09:49:56 GMT):
Has joined the channel.

pschwarz (Fri, 06 Jul 2018 18:43:24 GMT):
Has joined the channel.

shannynalayna (Tue, 10 Jul 2018 15:50:11 GMT):
Has joined the channel.

honeyjills (Fri, 20 Jul 2018 05:10:47 GMT):
Has joined the channel.

honeyjills (Fri, 20 Jul 2018 05:13:47 GMT):
Hi everyone , Is it possible to get the activity information of DApps deployed in Ethereum smart contract into the sawtooth network?. The transaction data will be stored in Sawtooth. I am not sure how the WASM mechanism works. Just a new comer.

zac (Fri, 20 Jul 2018 12:06:53 GMT):
you can load anything you want into the Sawtooth network

zac (Fri, 20 Jul 2018 12:07:39 GMT):
You'll almost certainly want a client to record that information and feed it into transactions

zac (Fri, 20 Jul 2018 12:08:41 GMT):
That doesn't really have anything to do with Sabre though. Smart contracts are more a deployment strategy than anything. Do you want to store the business logic of your app on-chain or off-chain? The logic itself can be identical.

underbell (Tue, 24 Jul 2018 06:28:45 GMT):
Has joined the channel.

Gabe (Mon, 20 Aug 2018 04:14:36 GMT):
Has joined the channel.

alchmeina (Thu, 23 Aug 2018 14:18:17 GMT):
Has joined the channel.

sureshtedla (Fri, 31 Aug 2018 17:33:13 GMT):
Has joined the channel.

benoit.razet (Mon, 10 Sep 2018 13:12:50 GMT):
Hi, I tried to build the sabre-tp image with `docker-compose -f docker-compose-installed.yaml build sabre-tp` and run into docker credential issue

benoit.razet (Mon, 10 Sep 2018 13:13:23 GMT):

Screen Shot 2018-09-10 at 9.12.28 AM.png

benoit.razet (Mon, 10 Sep 2018 13:25:03 GMT):
any idea

benoit.razet (Mon, 10 Sep 2018 13:25:03 GMT):
any idea?

agunde (Mon, 10 Sep 2018 13:26:58 GMT):
@benoit.razet @rbuysse is going to take a look when he gets in.

rbuysse (Mon, 10 Sep 2018 13:27:00 GMT):
Has joined the channel.

benoit.razet (Mon, 10 Sep 2018 13:27:12 GMT):
thanks!

rbuysse (Mon, 10 Sep 2018 14:07:47 GMT):
Hm. can you run `docker logout` and then try again?

benoit.razet (Mon, 10 Sep 2018 16:30:07 GMT):
@rbuysse I `docker logout` and same pb :(

benoit.razet (Mon, 10 Sep 2018 16:34:38 GMT):
I'm going to look on my side and see if there is anything suspicious with my docker.

benoit.razet (Mon, 10 Sep 2018 16:34:59 GMT):
it was able to get the hyperledger:1.0 image fine

benoit.razet (Mon, 10 Sep 2018 16:34:59 GMT):
it was able to get the `hyperledger/sawtooth-validator:1.0` image fine

benoit.razet (Mon, 10 Sep 2018 16:43:26 GMT):
ok, I have the same pb when building the validator. So it sounds like something on my side.

benoit.razet (Mon, 10 Sep 2018 16:52:16 GMT):
no really relevant to this channel, but I followed this link https://github.com/docker/docker-credential-helpers/issues/65 and it fixed the issue. Sorry for bothering you with docker related issue

benoit.razet (Mon, 10 Sep 2018 16:52:48 GMT):
sabre-tp is being built

rbuysse (Mon, 10 Sep 2018 16:59:56 GMT):
:clap:

benoit.razet (Mon, 10 Sep 2018 19:23:46 GMT):
Everything went well! I read the docs and followed the tutorial with intkey and intkey-multiply. If I understand correctly, the sabre-sdk allows to produce either a traditional rust TP or a wasm sabre smart contract, that's a cool feature!

benoit.razet (Mon, 10 Sep 2018 19:24:41 GMT):
all the commands run as expected. The only oops was trying to run some command before the rust compiler was done in the container

amundson (Tue, 11 Sep 2018 17:29:05 GMT):
@benoit.razet yeah, we aren't sure how to solve that rust-compiler-still-running-but-not-obvious problem

benoit.razet (Tue, 11 Sep 2018 17:39:36 GMT):
yeah, the program `intkey_multiply` did not exist when I tried to run the command from the docs, so I looked for the binary in other places to see if the path was incorrect or what, and then saw the logs with all-the-things being compiled. All cool! Now I'm looking into writing my first sabre smart contract, a simple one (while keeping an eye on Florence and all the updates)

arsulegai (Tue, 11 Sep 2018 19:00:52 GMT):
Has joined the channel.

cecchi (Wed, 12 Sep 2018 19:01:33 GMT):
Has joined the channel.

benoit.razet (Fri, 14 Sep 2018 15:00:43 GMT):
quick report on my ongoing exploration of sabre. I was able to modify intkey-multiply, to do my own simple (very simple) smart contract, with different namespace permission. I'm surprised it worked pretty well. Once I figured how to please the type system of Rust, it just worked as expected. I think now I'll dig a little more into the details of the framework.

jsmitchell (Fri, 14 Sep 2018 15:40:07 GMT):
heh

amundson (Mon, 17 Sep 2018 15:58:33 GMT):
@benoit.razet cool. I'm all ears in terms of potential features or changes.

benoit.razet (Mon, 17 Sep 2018 16:14:11 GMT):
@amundson cool! I keep experimenting with the workflow for upload/ns/perm/execute. Looking into the play between the inputs/outputs at the sabre payload level or sawtooth txn level. Right now, I'm looking into the absolute necessity of having inputs/outputs in the ExecuteContractAction, and wondering if in the sabre tp, it would be possible to pass the inputs/outputs from the sawtooth txn itself to check the permission `https://github.com/hyperledger/sawtooth-sabre/blob/master/tp/src/handler.rs#L930` I'm still looking, contemplating the design

benoit.razet (Mon, 17 Sep 2018 16:18:16 GMT):
Also discovered that in the NamespaceRegistry the Permissions do not include the `version`, only the `name`. At first I thought it was curious because the permission not fine grained upto the `version`. But then I realized it might be a good design, for not having to update the namespace registry at each bump version, if there are no real changes.

benoit.razet (Mon, 17 Sep 2018 16:18:16 GMT):
Also discovered that in the NamespaceRegistry the Permissions do not include the `version`, only the `name`. At first I thought it was curious because it makes the permission not fine grained upto the `version`. But then I realized it might be a good design, allowing not having to update the namespace registry at each bump version, if there are no real changes.

amundson (Mon, 17 Sep 2018 16:57:31 GMT):
@benoit.razet the sawtooth txn itself will need to include more than the sabre transaction, since it has to include the inputs/outputs for loading the smart contract from state

amundson (Mon, 17 Sep 2018 16:58:00 GMT):
though I guess you could subtract those and pass the rest perhaps

amundson (Mon, 17 Sep 2018 16:59:57 GMT):
the omission of version is is for the reason you mention; we are basically delegating to the owner of the contract, not the specific contract itself (if we did it to the specific contract, we would have used a hash of it)

amundson (Mon, 17 Sep 2018 17:00:33 GMT):
whether it is a good design, well, that is certainly up for debate

amundson (Mon, 17 Sep 2018 17:01:43 GMT):
I like to think of it as a good starting point to figure out what we want the design to be.

benoit.razet (Mon, 17 Sep 2018 17:14:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=q3kgnzsEtEzqcZxEK) that makes sense!

benoit.razet (Mon, 17 Sep 2018 17:16:58 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=cP9Nc9BTxbGd7nHrg) It's a pretty good starting point! A lot of thoughts on the design already. And the implementation looks pretty solid too, taking care of a lot of details and corner cases apparently.

amundson (Mon, 17 Sep 2018 17:28:44 GMT):
@benoit.razet we have a few items on the roadmap that we want to do. one is solve the halting problem (probably by counting costs of instructions, not unlike the EVM but fixed-"gas limit", though we are going to try and stick to the solution Parity uses if we can); and then attempting to address determinism (removing the ability to do truly random code execution) - again, by trying to stick to approaches Parity has taken, if possible.

benoit.razet (Mon, 17 Sep 2018 17:31:35 GMT):
Ahah, I did not think about the determinism! and that's one that is not so easy to solve, right? How do you prevent side-effecty/probabilistic smart contract. Is there a subset of the wasm machine codes that can identified to be deterministic?

benoit.razet (Mon, 17 Sep 2018 17:33:09 GMT):
I'm not too concern on our side, because we could still lock the contract registry to the `sawtooth.swa.admin` but it is an interesting problem!

benoit.razet (Mon, 17 Sep 2018 17:33:09 GMT):
I'm not too concerned on our side, because we could still lock the contract registry to the `sawtooth.swa.admin` but it is an interesting problem!

benoit.razet (Mon, 17 Sep 2018 17:47:31 GMT):
In principle, I'm sure it's too naive, if there was such a subset of wasm opcodes that is deemed deterministic, then the CreateContractAction tp could analyze the `contract` and fail the transaction if it included an opcode that is deemed nondeterministic. I don't understand yet the boundary between the wasm code and Rust/C, for example whether the get_state and set_state functions are wasm code or rust/C. two pointers I was looking at: https://github.com/hyperledger/sawtooth-sabre/blob/master/sdk/src/lib.rs#L67 https://github.com/hyperledger/sawtooth-sabre/blob/master/sdk/src/externs.rs#L20

amundson (Mon, 17 Sep 2018 17:48:24 GMT):
Our first part of that will be research, so we don't have the answer yet. I assume it amounts to making rand() not work or more likely making it predictable based on the context the transaction is run in.

amundson (Mon, 17 Sep 2018 17:49:06 GMT):
yeah, it could involve rewriting the smart contract like that

amundson (Mon, 17 Sep 2018 17:50:46 GMT):
@benoit.razet those functions are exposed so that the code running within the WASM container can call them. essentially, you start with a fully sandboxed environment and then you expose specific functions to it. those functions are the most likely attack surface for sabre as a result (for executing untrusted code).

amundson (Mon, 17 Sep 2018 17:53:06 GMT):
@RyanBanks and @agunde know way more implementation details, so they should call me out if I say something incorrect

RyanBanks (Mon, 17 Sep 2018 17:53:07 GMT):
Has joined the channel.

benoit.razet (Mon, 17 Sep 2018 18:01:09 GMT):
Thanks @amundson . All this is very exciting!

benoit.razet (Mon, 17 Sep 2018 19:01:47 GMT):
Any opinion whether it's too soon to start working on deploying it in a running environment, or it is at the same level of robustness/stability as other sawtooth components?

amundson (Tue, 18 Sep 2018 03:25:07 GMT):
@benoit.razet we haven't committed to backward compatibility yet (of the permission design for example), but we are trying to use it as much as possible when doing app development so we can uncover problems. we also tend to give ourselves an "out" and make apps work as both sabre contracts and TPs... for now.

benoit.razet (Tue, 18 Sep 2018 11:56:06 GMT):
Thanks @amundson that's helpful information.

benoit.razet (Mon, 24 Sep 2018 16:17:09 GMT):
While trying to run the example using the `installed` container, I noticed some discrepancies between the bash command starting the validator between ./sawtooth-sabre/docker-compose.yaml` and `./sawtooth/docker-compose-installed.yaml`. The main difference is that in the installed mode, the setting entry `sawtooth.swa.administrators` is not set in the genesis block. Is it on purpose or does it need a shineup?

benoit.razet (Mon, 24 Sep 2018 16:17:09 GMT):
While trying to run the example using the `installed` container, I noticed some discrepancies between the bash command starting the validator between `./sawtooth-sabre/docker-compose.yaml` and `./sawtooth/docker-compose-installed.yaml`. The main difference is that in the installed mode, the setting entry `sawtooth.swa.administrators` is not set in the genesis block. Is it on purpose or does it need a shineup?

benoit.razet (Mon, 24 Sep 2018 16:17:09 GMT):
While trying to run the example using the `installed` container, I noticed some discrepancies between the bash command starting the validator between `./sawtooth-sabre/docker-compose.yaml` and `./sawtooth-sabre/docker-compose-installed.yaml`. The main difference is that in the installed mode, the setting entry `sawtooth.swa.administrators` is not set in the genesis block. Is it on purpose or does it need a shineup?

benoit.razet (Mon, 24 Sep 2018 18:11:33 GMT):
https://github.com/hyperledger/sawtooth-sabre/blob/master/docker-compose.yaml#L33

amundson (Mon, 24 Sep 2018 18:53:52 GMT):
@rbuysse do you recall if that was intentional? ^

rbuysse (Mon, 24 Sep 2018 18:56:28 GMT):
it was not deliberately omitted

agunde (Wed, 26 Sep 2018 14:17:49 GMT):
I am going to be merging this change shortly https://github.com/hyperledger/sawtooth-sabre/pull/11 so if anyone is using sabre from master you will need to add a step to create the namespace registry first and you need to use the admin key to do so. The docs have been updated for the change. Let me know if you have any questions.

agunde (Wed, 26 Sep 2018 19:46:22 GMT):
^ that has been merged

Dvi 19 (Mon, 01 Oct 2018 07:04:48 GMT):
Has joined the channel.

Dvi 19 (Mon, 01 Oct 2018 07:05:15 GMT):
I have my Sabre TP running, and also installed the sabre CLI

Dvi 19 (Mon, 01 Oct 2018 07:06:13 GMT):
how can I submit an smart contract to the sawtooth blochchain?

Dvi 19 (Mon, 01 Oct 2018 07:24:47 GMT):
I am reading the intkey tutorial at https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#starting-the-network but I don´t find where you define the action of "multiply" values

Dvi 19 (Mon, 01 Oct 2018 11:59:59 GMT):
I have created a contract registry and, with the same key, I try to sabre upload --filename ../example/intkey_multiply/intkey_multiply.yaml --url http://rest-api:9708 but I get the error "Only owners can submit new versions of contracts"

Dvi 19 (Mon, 01 Oct 2018 12:08:19 GMT):
And I am the owner

agunde (Mon, 01 Oct 2018 13:01:04 GMT):
How did you create the contract registry?

Dvi 19 (Mon, 01 Oct 2018 13:13:08 GMT):
./sabre cr --create intkey_multiply --owner /root/.sawtooth/keys/root.priv --url http://127.0.0.1:8008

agunde (Mon, 01 Oct 2018 13:14:19 GMT):
it needs to to be the pub key not the priv key

Dvi 19 (Mon, 01 Oct 2018 13:22:01 GMT):
ok sorry

agunde (Mon, 01 Oct 2018 13:23:16 GMT):
Its no problem. :)

Dvi 19 (Mon, 01 Oct 2018 13:28:14 GMT):
also invalid message again...

Dvi 19 (Mon, 01 Oct 2018 13:31:08 GMT):
how can I remove the smart contract?

Dvi 19 (Mon, 01 Oct 2018 13:31:29 GMT):
contract registry sorry

Dvi 19 (Mon, 01 Oct 2018 13:34:03 GMT):
or update the keys authorized to this contact registry

agunde (Mon, 01 Oct 2018 13:34:29 GMT):
sabre cr --delete intkey_multiply

agunde (Mon, 01 Oct 2018 13:34:29 GMT):
`sabre cr --delete intkey_multiply`

agunde (Mon, 01 Oct 2018 13:34:48 GMT):
Need to be an owner or admin to do so, and there cannot be any contract versions in the registry.

agunde (Mon, 01 Oct 2018 13:36:13 GMT):
or `sabre cr --update intkey_multiply --owner` to update owners

Dvi 19 (Mon, 01 Oct 2018 13:36:21 GMT):
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: integer `404`, expected struct Link", line: 1, column: 3)', libcore/result.rs:945:5 note: Run with `RUST_BACKTRACE=1` for a backtrace

agunde (Mon, 01 Oct 2018 13:39:02 GMT):
Looks like you got an 404 back from the rest-api. Check the rest-api and validator logs for possible reasons.

Dvi 19 (Mon, 01 Oct 2018 13:39:11 GMT):
I am not the owner of intkey_multiply, but I am a sawtooth.swa.administrators:

Dvi 19 (Mon, 01 Oct 2018 13:40:38 GMT):
so, I could delete the contract registry, isnt it?

Dvi 19 (Mon, 01 Oct 2018 13:45:22 GMT):
so, I could delete the contract registry, correct?

agunde (Mon, 01 Oct 2018 13:59:06 GMT):
Correct

Dvi 19 (Mon, 01 Oct 2018 14:00:24 GMT):
I will revert my nodes to a previous snapshot

Dvi 19 (Mon, 01 Oct 2018 14:00:56 GMT):
error[E0432]: unresolved import `platform::Signal` when compiling the smart contract, any idea?

agunde (Mon, 01 Oct 2018 14:03:51 GMT):
No, I've never seen that before.

Dvi 19 (Mon, 01 Oct 2018 14:05:55 GMT):
error[E0046]: not all trait items implemented, missing: `encode` --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/rustc-serialize-0.3.24/src/serialize.rs:1358:1

agunde (Mon, 01 Oct 2018 14:09:39 GMT):
What are you trying to compile?

Dvi 19 (Mon, 01 Oct 2018 14:10:54 GMT):
in sawtooth-sabre/tp

Dvi 19 (Mon, 01 Oct 2018 14:11:01 GMT):
cargo build --target wasm32-unknown-unknown --release

Dvi 19 (Mon, 01 Oct 2018 14:13:41 GMT):
to compile the smart contract

Dvi 19 (Mon, 01 Oct 2018 14:14:17 GMT):
sorry

agunde (Mon, 01 Oct 2018 14:14:18 GMT):
The sabre tp should not be compiled into wasm. Only the smart contracts (tp) that sabre should run. You should just use cargo build for building the sabre transaction processor.

Dvi 19 (Mon, 01 Oct 2018 14:14:20 GMT):
I was in the incorrect folder

Dvi 19 (Mon, 01 Oct 2018 14:25:37 GMT):
Now I Have created the contract registry with the public key owner

Dvi 19 (Mon, 01 Oct 2018 14:25:38 GMT):
./sabre cr --create intkey_multiply --owner /root/.sawtooth/keys/root.pub --url http://127.0.0.1:8008

Dvi 19 (Mon, 01 Oct 2018 14:26:27 GMT):
and still this message: "message": "Only owners can submit new versions of contracts 03e24f31a20246ac7f4f8d947df7287a53885725be82dff6443744b64206749621"

agunde (Mon, 01 Oct 2018 14:29:36 GMT):
Looks like you are giving --owners a file path string instead of the public key string.

Dvi 19 (Mon, 01 Oct 2018 14:30:45 GMT):
umm

Dvi 19 (Mon, 01 Oct 2018 14:30:49 GMT):
its true

jsmitchell (Mon, 01 Oct 2018 14:35:15 GMT):
I'm pretty sure if you compile the sabre tp into a smart contract and deploy it on sabre, you will open a rift in spacetime

Dvi 19 (Mon, 01 Oct 2018 16:06:10 GMT):
I have upload the contract and set the permissions, now when I execute it y receive

Dvi 19 (Mon, 01 Oct 2018 16:06:11 GMT):
"message": "Wasm contract returned invalid transaction: intkey_multiply, 1.0"

Dvi 19 (Mon, 01 Oct 2018 16:06:27 GMT):
./sabre exec --contract intkey_multiply:1.0 --payload /root/sawtooth-sabre/example/intkey_multiply/cli/target/debug/payload --inputs 1cf126 --outputs 1cf126 --url http://127.0.0.1:8008

agunde (Mon, 01 Oct 2018 16:08:07 GMT):
Did you pre-populate the intkey state first?

Dvi 19 (Mon, 01 Oct 2018 16:10:14 GMT):
mmm no

Dvi 19 (Mon, 01 Oct 2018 16:10:34 GMT):
what is the command for it?

agunde (Mon, 01 Oct 2018 16:13:03 GMT):
Take a look at the Sabre application developer guide it walks through that here: https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#intkey-state

Dvi 19 (Mon, 01 Oct 2018 16:15:57 GMT):
so, I need a intkey transaction processor?

Dvi 19 (Mon, 01 Oct 2018 16:16:11 GMT):
how many transaction processor are necessary to run sabre smart contracts?

agunde (Mon, 01 Oct 2018 16:19:17 GMT):
Intkey is required to run the intkey_multiply example specifically. If you are running an independent smart contract you would only need settings and sabre currently.

Dvi 19 (Mon, 01 Oct 2018 16:26:58 GMT):
thanks @agunde

Dvi 19 (Mon, 01 Oct 2018 16:45:27 GMT):
is it possible to know the size of a block? this block contains the upload of a sabre smart contact.

Dvi 19 (Tue, 02 Oct 2018 07:44:58 GMT):
How can I start the intkey transaction processor?

benoit.razet (Tue, 02 Oct 2018 12:10:20 GMT):
Hi @Dvi 19, it is started by the docker-compose file `example/intkey_multiply/docker-compose.yaml` when the network is started https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#starting-the-network

benoit.razet (Tue, 02 Oct 2018 12:10:55 GMT):
the container for the intkey transaction processor is at https://github.com/hyperledger/sawtooth-sabre/blob/master/example/intkey_multiply/docker-compose.yaml#L18

benoit.razet (Tue, 02 Oct 2018 12:20:05 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=ftWRWXG4XcuToz9aD) I'm not sure there is a convenience method to get the exact size of a block, that might be more a question for the #sawtooth channel. Using the rest-api you can get a json version of blocks and get the size of that, which relates to the block originally encoded as protobuff. Otherwise, to bypass the jsonification of the block, it's possible to connect directly to the validator through zmq and get the exact block which is a protobuff.

benoit.razet (Tue, 02 Oct 2018 13:40:38 GMT):
@agunde @amundson does Sabre accept external contribution PRs?

benoit.razet (Tue, 02 Oct 2018 13:43:15 GMT):
I thought I could put a PR with small tweaks based on my recent experience with Sabre. Nothing major, mostly adjusting the docker-compose-installed.yaml that allows to run the tutorial in installed mode and some minor fixes to the documentation.

benoit.razet (Tue, 02 Oct 2018 13:47:55 GMT):
by the way I was able to test the latest version master with the new `cr` command on the example I developed and it worked :thumbsup:

jsmitchell (Tue, 02 Oct 2018 13:51:55 GMT):
PRs are always welcome

agunde (Tue, 02 Oct 2018 13:53:51 GMT):
Glad it worked for ya. Yes, As jsmitchell said PRs are always welcome, especially ones that fix the docs.

benoit.razet (Tue, 02 Oct 2018 19:46:01 GMT):
here is the PR https://github.com/hyperledger/sawtooth-sabre/pull/20 I hope it's helpful

Dvi 19 (Sun, 14 Oct 2018 15:14:52 GMT):
what is the difference between sabre and seth for using smart contracts in sawtooth?ç

Dvi 19 (Mon, 15 Oct 2018 06:41:50 GMT):
what do you recommend? what is the easy way of implementing smart contracts?

agunde (Mon, 15 Oct 2018 12:54:05 GMT):
Sabre uses WASM code for smart contracts and are very simular to a normal Sawtooth Transaction processor. Seth uses EVM smart contracts. If you are familiar with how to write a Sawtooth Transaction processor in Rust it is very easy to convert it to a Sabre smart contract. (Assuming all your dependency can be compiled into WASM). If you are familiar with EVM smart contracts that may be easier for you.

Dvi 19 (Mon, 15 Oct 2018 13:12:37 GMT):
thanks @agunde

agunde (Thu, 18 Oct 2018 15:48:55 GMT):
@grapebaba can you elaborate what you mean by "the sabre project does not support smart contract transaction family right now"

grapebaba (Thu, 18 Oct 2018 15:48:55 GMT):
Has joined the channel.

achenette (Thu, 18 Oct 2018 16:52:16 GMT):
Has joined the channel.

grapebaba (Fri, 19 Oct 2018 01:56:48 GMT):
@agunde i checked code, seems it only implement a interkey transaction family right now? Am I missing something?

RealDeanZhao (Fri, 19 Oct 2018 02:37:47 GMT):
Has joined the channel.

prithvikp (Fri, 19 Oct 2018 19:45:14 GMT):
Has joined the channel.

prithvikp (Fri, 19 Oct 2018 21:26:09 GMT):
@grapebaba Do we have any example with sabre tp and how it can be used with a smart contract. Currently what I see is that example even in documentation needs sabre SDK to compile

agunde (Mon, 22 Oct 2018 13:19:55 GMT):
@grapebaba @prithvikp the provided example is intkey-multiply but you can convert any rust transaction processor easily into a sabre smart contract using the Sabre SDK and following the provided documentation (assuming the dependencies can be converted into wasm).

Dan (Mon, 22 Oct 2018 14:48:12 GMT):
Has joined the channel.

Dan (Mon, 22 Oct 2018 14:49:27 GMT):
I think the question in this thread https://lists.hyperledger.org/g/sawtooth/message/454 Is about the development model with Sabre. Like what needs to be installed.

prithvikp (Mon, 22 Oct 2018 16:43:37 GMT):
Thanks @Dan. @agunde I am aware of example and also have it running. But the development model relies on sabre sdk to be available locally.

agunde (Mon, 22 Oct 2018 16:49:52 GMT):
In rust you can add the following line to your Cargo.toml file `sabre-sdk = {git = "https://github.com/hyperledger/sawtooth-sabre"}` to fetch it from github so it does not have to be local. Sabre is not at a 1.0 yet so the sdk has not been added as a crate yet.

prithvikp (Mon, 22 Oct 2018 16:51:25 GMT):
I tried using git and it failed on me.

prithvikp (Mon, 22 Oct 2018 16:51:35 GMT):
I will try again.

agunde (Mon, 22 Oct 2018 16:52:22 GMT):
That may have been do to a bug we fixed recently.

agunde (Mon, 22 Oct 2018 16:52:22 GMT):
That may have been due to a bug we fixed recently.

prithvikp (Mon, 22 Oct 2018 17:43:52 GMT):
Thanks @agunde I will check it again and see if I can get it up and running without a local copy

Dan (Mon, 22 Oct 2018 18:45:39 GMT):
Once you verify if that works could you post the answer to the list (the bit above about editing the cargo file) ?

prithvikp (Mon, 22 Oct 2018 20:47:54 GMT):
sure thanks

prithvikp (Fri, 26 Oct 2018 15:51:17 GMT):
@agunde I was able to use sabre-sdk and was able to compile. However I am not clear is how to use the smart contract to work with sabre-tp. Do I need to use command line (sabre cli). The documentation also does not give examples with sabre-tp but only about cli

prithvikp (Fri, 26 Oct 2018 15:51:17 GMT):
@agunde I was able to use sabre-sdk and was able to use sdk however it is failing at this line `cfg_if!`error: cannot find macro `cfg_if!` in this scope. However I am not clear is how to use the smart contract to work with sabre-tp. Do I need to use command line (sabre cli). The documentation also does not give examples with sabre-tp but only about cli

agunde (Fri, 26 Oct 2018 16:03:15 GMT):
You need to include cfg_if in your Cargo.toml file `cfg-if = "0.1"` or you can use` #[cfg(target_arch = "wasm32")]` for every line but that gets hard to read.

agunde (Fri, 26 Oct 2018 16:03:15 GMT):
You need to include cfg_if in your Cargo.toml file `cfg-if = "0.1"` and add a`#[macro_use]` before the import line or you can use` #[cfg(target_arch = "wasm32")]` for every line but that gets hard to read.

agunde (Fri, 26 Oct 2018 16:04:20 GMT):
You can use the sabre-cli to upload the the contract as described here. https://sawtooth.hyperledger.org/docs/sabre/nightly/master/application_developer_guide.html#uploading-contract

agunde (Fri, 26 Oct 2018 16:06:19 GMT):
It is not clear to me what information you are looking for when you say "The documentation also does not give examples with sabre-tp but only about cli"

agunde (Fri, 26 Oct 2018 16:06:39 GMT):
The cli is submitting the transactions described in https://sawtooth.hyperledger.org/docs/sabre/nightly/master/sabre_transaction_family.html

agunde (Fri, 26 Oct 2018 16:09:11 GMT):
Also note there is working being done to improve the documentation by @achenette. PRs and feed back is welcome.

agunde (Fri, 26 Oct 2018 16:09:11 GMT):
Also note there is working being done to improve the documentation by @achenette . PRs and feed back is welcome.

prithvikp (Fri, 26 Oct 2018 16:13:46 GMT):
Sorry for not being clear. I am actually including cfg-if in cargo.toml. [dependencies] clap = "2" protobuf = "2" cfg-if = "0.1" hex = "0.3.1"

agunde (Fri, 26 Oct 2018 16:16:16 GMT):
I just edited the comment to say you also need to add ``#[macro_use]`` above the import line for cfg_if

prithvikp (Fri, 26 Oct 2018 16:17:12 GMT):
Regarding documentation I was confused regarding the tp ... So if I read it right then we always use CLI to submit smart contract. I was thinking there is a similar pattern to how sawtooth does with batches wherein you can submit smart contract as part of non cli approach like passing a file name through a rest api

prithvikp (Fri, 26 Oct 2018 16:17:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=255wJEJJP8346WwRq) @agunde Thanks will try that

agunde (Fri, 26 Oct 2018 16:24:04 GMT):
Sabre does not currently have its own api. The cli currently creates the Sabre Transaction, creates the Batch and Batch List and then submits it to the validator's rest-api. You could create the Transactions/Batch yourself if you wish but the cli makes it easier for you.

agunde (Fri, 26 Oct 2018 16:24:04 GMT):
Sabre does not currently have its own rest api. The cli currently creates the Sabre Transaction, creates the Batch and Batch List and then submits it to the validator's rest-api. You could create the Transactions/Batch yourself if you wish but the cli makes it easier for you.

prithvikp (Fri, 26 Oct 2018 16:25:03 GMT):
got it

boydjohnson (Mon, 29 Oct 2018 20:55:12 GMT):
Does the sawtooth rest api have a limit on how large a message it will receive? I am working on the settings-tp rust re-write and testing it with sabre.

boydjohnson (Mon, 29 Oct 2018 20:56:05 GMT):
When I do the `sabre upload` command I don't see any output in the logs.

boydjohnson (Mon, 29 Oct 2018 21:02:25 GMT):
the wasm-gc utility reduced the size of the wasm by 10x.

boydjohnson (Mon, 29 Oct 2018 21:26:17 GMT):
Something I was missing was that in `sabre cr` `--owner` is the public key text and you can't use the public key file, so `--owner $(cat /project/keys/root.pub)` works.

agunde (Tue, 30 Oct 2018 13:11:37 GMT):
^ yep that is by design because the admin running that command may not have access to the actually key files. Doc clarifications are in the works.

agunde (Tue, 30 Oct 2018 13:13:51 GMT):
@boydjohnson the rest-api does have a limit but it is configurable. you can set it using --client-max-size with the limit in bytes. default is 10mb.

boydjohnson (Tue, 30 Oct 2018 15:10:57 GMT):
woot ```sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::handler] Action: Execute Contract ["00ec01359aee2c476d2649349d77ade2160e5f4becca4f6e7b0dc95b32a502d9f8d45c", "00ec027c521358c33f76dadb83dbbc68f63c9bcf7795b6a4d957a2ccf09c75e55db19d", "00ec0064fcc6f6bc7a815041b4db51f00f4bea8e51c13b27f422da0a8522c94641c7e4", "000000"] ["00ec01359aee2c476d2649349d77ade2160e5f4becca4f6e7b0dc95b32a502d9f8d45c", "00ec027c521358c33f76dadb83dbbc68f63c9bcf7795b6a4d957a2ccf09c75e55db19d", "00ec0064fcc6f6bc7a815041b4db51f00f4bea8e51c13b27f422da0a8522c94641c7e4", "000000"] sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 265 sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["000000a87cb5eafdcca6a8cde0fb0dec1400c5ab274474a6aa82c12840f169a04216b7"] sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 2 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 445 sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["000000a87cb5eafdcca6a8cde0fb0dec1400c5ab274474a6aa82c1918142591ba4e8a7"] sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 2 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 515 sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["000000a87cb5eafdcca6a84f03a060b7eb0329cf8faeb36270e74ce3b0c44298fc1c14"] sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 13 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to set state, address: 000000a87cb5eafdcca6a84f03a060b7eb0329cf8faeb36270e74ce3b0c44298fc1c14 sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sabre::wasm_executor::wasm_externals] SET_STATE Execution time: 0 secs 2 ms sabre-tp | 2018-10-30 15:09:59 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: OK```

boydjohnson (Tue, 30 Oct 2018 15:11:10 GMT):
I was able to commit a settings transaction.

agunde (Tue, 30 Oct 2018 15:13:14 GMT):
Nice!

JOYELIN (Fri, 09 Nov 2018 08:01:44 GMT):
Has joined the channel.

boydjohnson (Tue, 13 Nov 2018 19:55:41 GMT):
Hey, @agunde. @knkski and I work verifying that Identity works with sabre. Identity makes a get call to settings to find `sawtooth.identity.allowed_keys`. We ran settings as a normal tp and did `sawset proposal create` and our identity transaction is failing after the first get request, so I think it can't find the allowed keys. I am a little ignorant on this. I would guess that we have to run settings as a sabre contract, right?

knkski (Tue, 13 Nov 2018 19:55:42 GMT):
Has joined the channel.

agunde (Tue, 13 Nov 2018 19:57:00 GMT):
No, you can run settings as tp. Identity smart contract will be calling into state just like any other tp

boydjohnson (Tue, 13 Nov 2018 19:59:23 GMT):
Dang. I thought that was the problem.

RealDeanZhao (Mon, 19 Nov 2018 07:00:52 GMT):
Does sabre support Golang wasm? Is there any example for this?

JayeshJawale2 (Mon, 19 Nov 2018 09:12:49 GMT):
Has joined the channel.

agunde (Mon, 19 Nov 2018 13:33:59 GMT):
Currently, Rust is the only language that there is a Sabre SDK for.

benoit.razet (Tue, 20 Nov 2018 19:09:07 GMT):
thanks for rekicking the test!

agunde (Tue, 20 Nov 2018 19:10:19 GMT):
np

benoit.razet (Tue, 20 Nov 2018 19:52:43 GMT):
it looks like the Jenkinsfile is picked up from the master branch and not the PR branch

kc1116 (Fri, 30 Nov 2018 16:39:44 GMT):
Has joined the channel.

kc1116 (Fri, 30 Nov 2018 16:39:56 GMT):
is sabre only available for rust right now ?

agunde (Fri, 30 Nov 2018 16:41:43 GMT):
That is the only language we currently have an sdk for, yes.

kc1116 (Fri, 30 Nov 2018 16:42:24 GMT):
gotcha thanks

agunde (Tue, 11 Dec 2018 13:41:31 GMT):
@benoit.razet https://github.com/hyperledger/sawtooth-sabre/pull/20 needs a rebase. Once that is done I will give it a final review and we can hopefully get it in.

benoit.razet (Tue, 11 Dec 2018 17:48:48 GMT):
Thanks @agunde I did the rebase. Unfortunately the jenkins test failed towards the end in the `Archive Build Artifact` part.

agunde (Tue, 11 Dec 2018 18:15:39 GMT):
@benoit.razet the build on your pr has been restarted so that it will use your updated jenkinsfile.

agunde (Tue, 11 Dec 2018 20:18:29 GMT):
@benoit.razet The build passed. I approved the pr and merged it in. Thanks again for your contribution!

benoit.razet (Tue, 11 Dec 2018 20:29:55 GMT):
Thanks! I had fun looking into sabre

merq (Sat, 22 Dec 2018 03:41:43 GMT):
Has joined the channel.

rinor (Tue, 29 Jan 2019 09:49:04 GMT):
Has joined the channel.

seanyoung (Thu, 31 Jan 2019 11:32:26 GMT):
Has joined the channel.

manojgop (Thu, 07 Feb 2019 11:22:40 GMT):
Has joined the channel.

colincmcc (Sun, 10 Feb 2019 19:34:45 GMT):
Has joined the channel.

ed2dword (Fri, 15 Feb 2019 15:06:37 GMT):
Has joined the channel.

satelander (Tue, 26 Feb 2019 18:42:30 GMT):
Has joined the channel.

kodonnel (Wed, 27 Feb 2019 21:37:44 GMT):
Has joined the channel.

atlantisKing (Fri, 01 Mar 2019 05:35:34 GMT):
Has joined the channel.

atlantisKing (Fri, 01 Mar 2019 05:37:02 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error

atlantisKing (Fri, 01 Mar 2019 05:37:40 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-3-generate-the-payload-file and in the container intkey-multiply-cli when i am executing `intkey-multiply multiply A B C --output payload` it gives an error i `bash: intkey-multiply: command not found` what could be the source of this error

agunde (Fri, 01 Mar 2019 14:06:48 GMT):
@atlantisKing Ill take a look

agunde (Fri, 01 Mar 2019 14:28:38 GMT):
@atlantisKing Did you wait for the rust code to finish compiling? It can take a while after the the dockerfiles starts up. You should be able to see this line `intkey-multiply-cli | Finished dev [unoptimized + debuginfo] target(s) in 11m 06s`

atlantisKing (Tue, 05 Mar 2019 06:27:53 GMT):
Thanks @agunde it is working now

agunde (Tue, 05 Mar 2019 11:52:08 GMT):
:thumbsup:

MicaelFerreira (Wed, 06 Mar 2019 12:47:06 GMT):
Has joined the channel.

ra_w (Thu, 07 Mar 2019 05:52:04 GMT):
Has joined the channel.

rranjan3 (Mon, 11 Mar 2019 09:23:16 GMT):
Has joined the channel.

raghav.aneja14 (Mon, 11 Mar 2019 10:07:39 GMT):
Has joined the channel.

raghav.aneja14 (Tue, 12 Mar 2019 10:19:31 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#compiling-the-contract and it fails at step *Compiling intkey-multiply v0.1.0 * .It gives error : failed to run custom build command for `intkey-multiply v0.1.0 (/home/ubuntu/sabre/sawtooth-sabre/example/intkey_multiply/processor)` thread 'main' panicked at 'protoc: Custom { kind: NotFound, error: StringError("failed to spawn `\"protoc\" \"--version\"`: No such file or directory (os error 2)") }', src/libcore/result.rs:997:5

raghav.aneja14 (Tue, 12 Mar 2019 10:19:31 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#compiling-the-contract and it fails at step *Compiling intkey-multiply v0.1.0 * .It gives error : failed to run custom build command for `intkey-multiply v0.1.0 (/home/ubuntu/sabre/sawtooth-sabre/example/intkey_multiply/processor)` thread 'main' panicked at 'protoc: Custom { kind: NotFound, error: StringError("failed to spawn `\"protoc\" \"--version\"`: No such file or directory (os error 2)") }', src/libcore/result.rs:997:5 .. What could be the possible reason ??

raghav.aneja14 (Wed, 13 Mar 2019 03:40:38 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-7-execute-the-smart-contract , It returns invalid transaction saying, unauthorized access to 'cad11d....' , so i had created a namespace registry for 'cad11d' and included the same under inputs option for sabre exec cmd. Now it return me "Invalid Transaction with message : Wasm contract returned invalid transaction: intkey_multiply, 1.0

raghav.aneja14 (Wed, 13 Mar 2019 03:40:38 GMT):
Hi I am following sawtooth sabre guide and on this step https://sawtooth.hyperledger.org/docs/sabre/releases/latest/application_developer_guide.html#step-7-execute-the-smart-contract , It returns invalid transaction saying, unauthorized access to 'cad11d....' , so i had created a namespace registry for 'cad11d' and included the same under inputs option for sabre exec cmd. Now it return me "Invalid Transaction with message : Wasm contract returned invalid transaction: intkey_multiply, 1.0 .What could be the issue and am i missing anything ?

atlantisKing (Wed, 13 Mar 2019 07:09:55 GMT):
Will the smart contract generated by sabre can be accessed by other peers as well, if it is stored on chain

atlantisKing (Wed, 13 Mar 2019 07:09:55 GMT):
Will the smart contract generated by sabre can be accessed by other peers as well, if it is stored on chain??

atlantisKing (Wed, 13 Mar 2019 07:09:55 GMT):
Will the smart contract generated by sabre can be accessed by other peers as well, if it is stored on chain??

atlantisKing (Wed, 13 Mar 2019 07:09:55 GMT):
Will the smart contract generated by sabre can be accessed by other peers as well, if it is stored on chain ?

atlantisKing (Wed, 13 Mar 2019 07:09:55 GMT):
Will the smart contract generated by sabre can be accessed and invoked by other peers as well, if it is stored on chain ?

raghav.aneja14 (Wed, 13 Mar 2019 08:49:38 GMT):
Following are precisely the steps I have followed referring the documentation and test_sabre.rs file : docker-compose -f docker-compose.yaml -f example/intkey_multiply/docker-compose.yaml up docker exec -it sabre-shell bash intkey set B 10 --url http://rest-api:9708 intkey set C 5 --url http://rest-api:9708 intkey list --url http://rest-api:9708 docker exec -it intkey-multiply-cli bash cd /project/example/intkey_multiply/cli intkey-multiply multiply A B C --output payload docker exec -it sabre-cli bash cat /root/.sawtooth/keys/root.pub sabre cr --create pike --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../contracts/sawtooth-pike/pike.yaml --url http://rest-api:9708 sabre ns --create cad11d --owner test_owner --url http://rest-api:9708 sabre perm cad11d pike --read --write --url http://rest-api:9708 sabre cr --create intkey_multiply --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../example/intkey_multiply/intkey_multiply.yaml --url http://rest-api:9708 sabre ns --create 1cf126 --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre ns --create 00ec03 --owner test_owner --url http://rest-api:9708 sabre perm 1cf126 intkey_multiply --read --write --url http://rest-api:9708 sabre perm cad11d intkey_multiply --read --write --url http://rest-api:9708 sabre perm 00ec03 intkey_multiply --read --write --url http://rest-api:9708 sabre exec --contract intkey_multiply:1.0 \ --payload /project/example/intkey_multiply/cli/payload \ --inputs 1cf126 cad11d 00ec03 \ --outputs 1cf126 \ --url http://rest-api:9708 But still I am getting invalid transaction error : Attempting to get state, addresses: ["cad11d0073315e886fc4c5c10fa16d089e1d3d809c72793393447ccac422d35fb772b2"] sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 3 ms sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply, 1.0 What is it that I am doing wrong or missing ??

raghav.aneja14 (Wed, 13 Mar 2019 08:49:38 GMT):
Following are precisely the steps I have followed referring the documentation and test_sabre.rs file : docker-compose -f docker-compose.yaml -f example/intkey_multiply/docker-compose.yaml up docker exec -it sabre-shell bash intkey set B 10 --url http://rest-api:9708 intkey set C 5 --url http://rest-api:9708 intkey list --url http://rest-api:9708 docker exec -it intkey-multiply-cli bash cd /project/example/intkey_multiply/cli intkey-multiply multiply A B C --output payload docker exec -it sabre-cli bash cat /root/.sawtooth/keys/root.pub sabre cr --create pike --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../contracts/sawtooth-pike/pike.yaml --url http://rest-api:9708 sabre ns --create cad11d --owner test_owner --url http://rest-api:9708 sabre perm cad11d pike --read --write --url http://rest-api:9708 sabre cr --create intkey_multiply --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../example/intkey_multiply/intkey_multiply.yaml --url http://rest-api:9708 sabre ns --create 1cf126 --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre ns --create 00ec03 --owner test_owner --url http://rest-api:9708 sabre perm 1cf126 intkey_multiply --read --write --url http://rest-api:9708 sabre perm cad11d intkey_multiply --read --write --url http://rest-api:9708 sabre perm 00ec03 intkey_multiply --read --write --url http://rest-api:9708 sabre exec --contract intkey_multiply:1.0 \ --payload /project/example/intkey_multiply/cli/payload \ --inputs 1cf126 cad11d 00ec03 \ --outputs 1cf126 \ --url http://rest-api:9708 But still I am getting invalid transaction error : Attempting to get state, addresses: ["cad11d0073315e886fc4c5c10fa16d089e1d3d809c72793393447ccac422d35fb772b2"] sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 3 ms sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply, 1.0 What is it that I am doing wrong or missing ??

raghav.aneja14 (Wed, 13 Mar 2019 08:49:38 GMT):
Hi @agunde ,,Following are precisely the steps I have followed referring the documentation and test_sabre.rs file : docker-compose -f docker-compose.yaml -f example/intkey_multiply/docker-compose.yaml up docker exec -it sabre-shell bash intkey set B 10 --url http://rest-api:9708 intkey set C 5 --url http://rest-api:9708 intkey list --url http://rest-api:9708 docker exec -it intkey-multiply-cli bash cd /project/example/intkey_multiply/cli intkey-multiply multiply A B C --output payload docker exec -it sabre-cli bash cat /root/.sawtooth/keys/root.pub sabre cr --create pike --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../contracts/sawtooth-pike/pike.yaml --url http://rest-api:9708 sabre ns --create cad11d --owner test_owner --url http://rest-api:9708 sabre perm cad11d pike --read --write --url http://rest-api:9708 sabre cr --create intkey_multiply --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre upload --filename ../example/intkey_multiply/intkey_multiply.yaml --url http://rest-api:9708 sabre ns --create 1cf126 --owner 03aa98bd16ba7da4c31a5a9daeee57dba3c469e5c868bc5026297ab6376be3bf88 --url http://rest-api:9708 sabre ns --create 00ec03 --owner test_owner --url http://rest-api:9708 sabre perm 1cf126 intkey_multiply --read --write --url http://rest-api:9708 sabre perm cad11d intkey_multiply --read --write --url http://rest-api:9708 sabre perm 00ec03 intkey_multiply --read --write --url http://rest-api:9708 sabre exec --contract intkey_multiply:1.0 \ --payload /project/example/intkey_multiply/cli/payload \ --inputs 1cf126 cad11d 00ec03 \ --outputs 1cf126 \ --url http://rest-api:9708 But still I am getting invalid transaction error : Attempting to get state, addresses: ["cad11d0073315e886fc4c5c10fa16d089e1d3d809c72793393447ccac422d35fb772b2"] sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 3 ms sabre-tp | 2019-03-13 08:44:29 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply, 1.0 What is it that I am doing wrong or missing ??

agunde (Wed, 13 Mar 2019 13:41:34 GMT):
There are two commands that were not added to the sabre app dev guide properly they are the following:

agunde (Wed, 13 Mar 2019 13:51:40 GMT):
@raghav.aneja14 There are two commands that were not added to the sabre app dev guide properly when smart permissions were added. They are the following: `sabre exec --contract pike:1.0 --payload /project/integration/payloads/create_org --inputs cad11d --outputs cad11d --url http://rest-api:9708` to create the organization in pike and `sabre sp --url http://rest-api:9708 --wait 300 create FooOrg000 test --filename /project/contracts/sawtooth-pike/examples/intkey/target/wasm32-unknown-unknown/release/intkey.wasm` to add the smart permission used by intkey_multiply.wasm You can see that they are used in the test. I will make sure the guide gets updated.

agunde (Wed, 13 Mar 2019 13:53:33 GMT):
Note that if you were to write your own smart contract to not use pike, theses steps would not be needed. But intkey_mutiply is an example used to highlight both running a sabre smart contract and using smart permissions within the contract.

raghav.aneja14 (Thu, 14 Mar 2019 04:57:14 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=oCKC2v9vy4jENh3ji) @agunde It worked. Thanks !! And 1 quick question : Where exactly the changes have to be made if I wish to avoid smart permissions & pike ?

agunde (Thu, 14 Mar 2019 13:04:04 GMT):
@raghav.aneja14 you do not need to set up the pike namespace, upload the pike contract etc, and then you would not run the above commands.

agunde (Thu, 14 Mar 2019 13:04:56 GMT):
And you would not include the pike namespace in the inputs for your execute command

raghav.aneja14 (Tue, 26 Mar 2019 04:18:41 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=QnSKrASeWxwXMdfim) @agunde got it, I tried the same way and works pretty well

raghav.aneja14 (Tue, 26 Mar 2019 04:18:41 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=QnSKrASeWxwXMdfim) @agunde got it, I tried the same way and works pretty well.. Thanks!!

agunde (Tue, 26 Mar 2019 12:57:51 GMT):
:thumbsup:

atlantisKing (Fri, 29 Mar 2019 10:27:09 GMT):

Clipboard - March 29, 2019 3:56 PM

atlantisKing (Fri, 29 Mar 2019 12:41:48 GMT):

Clipboard - March 29, 2019 6:10 PM

atlantisKing (Fri, 29 Mar 2019 12:41:48 GMT):

Clipboard - March 29, 2019 6:10 PM

atlantisKing (Fri, 29 Mar 2019 12:42:15 GMT):
@agunde

agunde (Fri, 29 Mar 2019 14:30:22 GMT):
@atlantisKing what are you trying to execute in sabre?

atlantisKing (Fri, 29 Mar 2019 16:44:08 GMT):
I am following the developer guide only and followed every step after executing this command ``` ```

atlantisKing (Fri, 29 Mar 2019 16:44:08 GMT):
I am following the developer guide only and followed every step after executing this command ``` ```

atlantisKing (Fri, 29 Mar 2019 16:44:08 GMT):
I am following the developer guide only and followed every step after executing this command ``` sabre exec --contract intkey_multiply:1.0 \ --payload /project/example/intkey_multiply/cli/payload \ --inputs 1cf126 --outputs 1cf126 --url http://rest-api:9708 ```

atlantisKing (Fri, 29 Mar 2019 16:44:08 GMT):
@agunde I am following the developer guide only and followed every step after executing this command ``` sabre exec --contract intkey_multiply:1.0 \ --payload /project/example/intkey_multiply/cli/payload \ --inputs 1cf126 --outputs 1cf126 --url http://rest-api:9708 ```

kumble (Tue, 02 Apr 2019 07:05:56 GMT):
Has joined the channel.

agunde (Tue, 02 Apr 2019 19:59:25 GMT):
There is now a 0-1 branch for Sabre https://github.com/hyperledger/sawtooth-sabre/tree/0-1 . Sabre is going to be updated to work with 0.3 of the Rust SDK (current master of https://github.com/hyperledger/sawtooth-sdk-rust). If you are using the Sabre SDK and are pointing at the github master please update to use the 0-1 branch or the published crate `sabre-sdk = "0.1.3"`

atlantisKing (Wed, 03 Apr 2019 06:19:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=GTh3QggbmxYjSRxqB) @agunde code is failing at this snippet of file wasm_module.rs of the to ``` let result = instance.invoke_export( "entrypoint", &vec![ RuntimeValue::I32(payload_ptr), RuntimeValue::I32(signer_ptr), RuntimeValue::I32(signature_ptr), ], &mut env, )?; ```

atlantisKing (Wed, 03 Apr 2019 06:19:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=GTh3QggbmxYjSRxqB) @agunde code is failing at this snippet of file wasm_module.rs of tp ``` let result = instance.invoke_export( "entrypoint", &vec![ RuntimeValue::I32(payload_ptr), RuntimeValue::I32(signer_ptr), RuntimeValue::I32(signature_ptr), ], &mut env, )?; ```

atlantisKing (Wed, 03 Apr 2019 06:19:26 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=GTh3QggbmxYjSRxqB) @agunde code is failing at this snippet of file wasm_module.rs of tp/src/wasm_executer line number 52 ``` let result = instance.invoke_export( "entrypoint", &vec![ RuntimeValue::I32(payload_ptr), RuntimeValue::I32(signer_ptr), RuntimeValue::I32(signature_ptr), ], &mut env, )?; ```

agunde (Wed, 03 Apr 2019 12:28:58 GMT):
Do you know if the intkey_mulitply contract compiled into wasm correctly and was uploaded successfully? I have not run into this issue.

agunde (Wed, 03 Apr 2019 12:28:58 GMT):
Do you know if the intkey_mulitply contract compiled into wasm correctly and was uploaded successfully? I have not run into this issue with the current master.

agunde (Fri, 05 Apr 2019 16:45:31 GMT):
Sabre has been updated to work with the newest version of the rust sdk https://github.com/hyperledger/sawtooth-sabre/pull/51 If you have any questions please let me know. This PR also includes some changes to the example intkey_mulitply and application developers guide that allows for running intkey_mutiply without setting pike state and adds two missing commands for setting up the pike namespace.

achala (Wed, 10 Apr 2019 04:57:55 GMT):
Has joined the channel.

achala (Wed, 10 Apr 2019 05:10:59 GMT):
Hi, I have gone through sawtooth sabre, need some clarification 1. How sabre is running on blockchain( hyperledger sawttoth) 2. How to interact with other peers using sabre? or how transaction is happening? 3. Where it is storing and how can I check the transaction state (running transaction and pervious with peer address) 4. Where can I get the instruction format to write the contract in Rust

achala (Wed, 10 Apr 2019 05:10:59 GMT):
Hi, I have gone through sawtooth sabre, need some clarification 1. How sabre is running on blockchain( hyperledger sawttoth) 2. How to interact with other peers using sabre? or how transaction is happening? 3. Where it is storing and how can I check the transaction state (running transaction and pervious with peer address)

agunde (Wed, 10 Apr 2019 13:18:42 GMT):
Hello @AchalaSB. 1. Sabre is a transaction processor and will talk to the Sawtooth Validator as any other transaction processor does. 2. Im not sure exactly what you are asking here but the Sawtooth validators talk to each other over gossip and send the transactions and blocks around for validation. 3. Sabre transaction state is also stored in Sawtooth's global state like any other transactions processed by a stand alone transaction processor. This is the list of provided endpoints in the Sawtooth Rest API https://sawtooth.hyperledger.org/docs/core/nightly/master/rest_api/endpoint_specs.html 4. Here is the example of how to write a transaction processor in rust https://sawtooth.hyperledger.org/docs/core/nightly/master/app_developers_guide/rust_sdk.html that then explains how to turn it into a Sabre smart contract https://sawtooth.hyperledger.org/docs/sabre/nightly/master/application_developer_guide.html

agunde (Fri, 12 Apr 2019 12:59:32 GMT):
A new version of the Sabre-sdk has been released on crates https://crates.io/crates/sabre-sdk

madushankaf (Wed, 24 Apr 2019 20:18:50 GMT):
Has joined the channel.

JMIsham (Sat, 27 Apr 2019 18:02:52 GMT):
Has joined the channel.

JMIsham (Sat, 27 Apr 2019 18:05:19 GMT):
Hi, I'm currently trying to follow sabre intkey_multiply example in a pbft environment. I'm wokring with sabre 0.1.4 version. when I tried to execute the smart contract, I got this error

JMIsham (Sat, 27 Apr 2019 18:05:19 GMT):
Hi @agunde , I'm currently trying to follow sabre intkey_multiply example in a pbft environment. I'm wokring with sabre 0.1.4 version. when I tried to execute the smart contract, I got this error

JMIsham (Sat, 27 Apr 2019 18:05:19 GMT):
Hi @agunde , I'm currently trying to follow sabre intkey_multiply example in a pbft environment. I'm wokring with sabre `0.1.4` version. when I tried to execute the smart contract, I got this error

JMIsham (Sat, 27 Apr 2019 18:06:24 GMT):
`2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] Message: 2db955fdac794a71acf7afabea8b1616 2019-04-27 18:05:56 INFO [sawtooth_sabre::handler] Action: Execute Contract ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "00ec00d4eb478d386d0d216048a54575feda3450f2fcc42b3d15f80e258c16010da412", "1cf126", "cad11d"] ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "1cf126"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 `

JMIsham (Sat, 27 Apr 2019 18:07:04 GMT):
``` ```

JMIsham (Sat, 27 Apr 2019 18:07:33 GMT):
```2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] Message: 2db955fdac794a71acf7afabea8b1616 2019-04-27 18:05:56 INFO [sawtooth_sabre::handler] Action: Execute Contract ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "00ec00d4eb478d386d0d216048a54575feda3450f2fcc42b3d15f80e258c16010da412", "1cf126", "cad11d"] ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "1cf126"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 ```

JMIsham (Sat, 27 Apr 2019 18:07:33 GMT):
```2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] Message: 2db955fdac794a71acf7afabea8b1616 2019-04-27 18:05:56 INFO [sawtooth_sabre::handler] Action: Execute Contract ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "00ec00d4eb478d386d0d216048a54575feda3450f2fcc42b3d15f80e258c16010da412", "1cf126", "cad11d"] ["00ec01f82be17e8d9f2168c4684179b4c26d4a0ea86ae505af8a1711d4be48fb265277", "00ec02abaf60e2a83b7362aa98b4f929b58b68e606b46fce2b4f5ec236c0f59bba3139", "00ec0078fe085f6edb13bbd519c9282dff5d7fc3bc4966867eaac0cf2b21ffd3622ecd", "1cf126"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-27 18:05:56 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-27 18:05:56 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply, 1.0 ```

JMIsham (Sat, 27 Apr 2019 18:17:36 GMT):
these are the commands I used ``` intkey set B 5 intkey set C 10 sabre cr --create intkey_multiply --owner 03e2b277454209d4e358a3cc2df167af859c06807ac67378e5e2807cbf84904ed9 --url http://127.0.0.1:8008 sabre upload --filename /home/ubuntu/intkey_multiply.yaml --url http://127.0.0.1:8008 sabre ns --create 1cf126 --owner 03e2b277454209d4e358a3cc2df167af859c06807ac67378e5e2807cbf84904ed9 --url http://127.0.0.1:8008 sabre perm 1cf126 intkey_multiply --read --write --url http://127.0.0.1:8008 sabre ns --create cad11d --owner 03e2b277454209d4e358a3cc2df167af859c06807ac67378e5e2807cbf84904ed9 --url http://127.0.0.1:8008 sabre perm cad11d intkey_multiply --read --url http://127.0.0.1:8008 sabre exec --contract intkey_multiply:1.0 --payload /home/ubuntu/payload --inputs 1cf126 --inputs cad11d --outputs 1cf126 --url http://127.0.0.1:8008 ```

Dipspaw (Mon, 29 Apr 2019 12:38:00 GMT):
Has joined the channel.

agunde (Mon, 29 Apr 2019 13:03:59 GMT):
@JMIsham What version of the intkey_multiply transaction are you using, are you on current master of sawtooth-sabre?

JMIsham (Mon, 29 Apr 2019 17:34:40 GMT):
@agunde , tag v0.1.4

JMIsham (Mon, 29 Apr 2019 17:35:09 GMT):
when I installed sawtooh-sabre and abre-cli, that was the version got installed

JMIsham (Mon, 29 Apr 2019 17:35:34 GMT):
so I also built the wasm from v0.1.4 tag

JMIsham (Mon, 29 Apr 2019 17:36:24 GMT):
I did not do anything related pike except, setting the read permision for the cad11d namespace

JMIsham (Mon, 29 Apr 2019 17:37:20 GMT):
do you think building the sabre, cli and the example from the current master branch would work?

JMIsham (Mon, 29 Apr 2019 17:37:32 GMT):
only using the above commands

agunde (Mon, 29 Apr 2019 18:28:00 GMT):
@JMIsham To follow the documentation you need the master version of the intkey_multiple smart contract. The old version enforces that you set up a pike organization (so an agent is created) otherwise the intkey_multiply transaction will be invalid. The new one skips that check if the pike agent is missing.

shonjs (Tue, 30 Apr 2019 02:19:07 GMT):
Has joined the channel.

JMIsham (Tue, 30 Apr 2019 06:38:40 GMT):
@agunde , I was able to build the tp and the cli from the master. now I'm getting a different error

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 554 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 554 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 554 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 5542019-04-30 06:41:40 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 5542019-04-30 06:41:40 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 5542019-04-30 06:41:40 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 ```

JMIsham (Tue, 30 Apr 2019 06:38:58 GMT):
``` 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Payload written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signer written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_module] Signature written to memory 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 200 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["cad11d00a4dbd9e65006fc4f580b14eac30479569415462898a45f86414a57a8a010ba"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 1 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 270 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 9 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 340 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] associating pointers: [410, 480] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 10 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Collection found elements in collection: 2 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 0 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 410 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving pointer head_ptr: 410 index: 1 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Pointer retrieved: 480 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] ALLOC Execution time: 0 secs 0 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] create_collection: 484 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Attempting to get state, addresses: ["1cf126014c48c4384ee5c5a54e7830e45fcd87df7910a7fda77b68c2efdd75f8de25e8"] 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] GET_STATE Execution time: 0 secs 4 ms 2019-04-30 06:37:47 INFO [sawtooth_sabre::wasm_executor::wasm_externals] Retrieving collection length. Head pointer 554 2019-04-30 06:41:40 INFO [sawtooth_sdk::processor] TP_PROCESS_REQUEST sending TpProcessResponse: Wasm contract returned invalid transaction: intkey_multiply2, 1.0 ```

JMIsham (Tue, 30 Apr 2019 06:39:43 GMT):
does it seems like contract doesn't have the permission to write ?

RealDeanZhao (Tue, 30 Apr 2019 08:06:27 GMT):
does sabre depends on sawtooth-pike? There are some code about pike in sabre repo.

JMIsham (Tue, 30 Apr 2019 09:33:44 GMT):
when it comes to smart permission we need pike, otherwise we can skip pike

agunde (Tue, 30 Apr 2019 13:06:50 GMT):
@RealDeanZhao JMIsham is correct, if you wish to use smart permissions then your would use pike to provide the agents and organization. But otherwise you do not need to use pike.

agunde (Tue, 30 Apr 2019 13:07:17 GMT):
@JMIsham Did you setup the intkey state when you reran the docker-compose file?

JMIsham (Tue, 30 Apr 2019 16:38:35 GMT):
@agunde , I'm not using the docker environment

JMIsham (Tue, 30 Apr 2019 16:39:44 GMT):
I have 4 aws instance running, and using 4 aws instances with pbft consensus engine

JMIsham (Tue, 30 Apr 2019 16:39:44 GMT):
I have 4 aws instance running, with pbft consensus engine

agunde (Tue, 30 Apr 2019 16:40:51 GMT):
can you see what is in intkey state?

JMIsham (Tue, 30 Apr 2019 16:41:11 GMT):
u mean `intkey list`

agunde (Tue, 30 Apr 2019 16:41:16 GMT):
yep

JMIsham (Tue, 30 Apr 2019 16:41:17 GMT):
?

JMIsham (Tue, 30 Apr 2019 16:41:31 GMT):
both B and C were set

JMIsham (Tue, 30 Apr 2019 16:41:51 GMT):
We dont need to initiate A right?

agunde (Tue, 30 Apr 2019 16:42:29 GMT):
And your payload is to set A? No, you should not need to initiate A.

JMIsham (Tue, 30 Apr 2019 16:43:10 GMT):
yeah payload is 'A,B,C`

JMIsham (Tue, 30 Apr 2019 16:43:10 GMT):
yeah payload is `A,B,C`

JMIsham (Tue, 30 Apr 2019 16:44:04 GMT):
I just copied the paylod file generated when I was running docker environment and past it in the instance where I'm running the sabre

JMIsham (Tue, 30 Apr 2019 16:45:03 GMT):
when we see the logs, it seems attempting to get the last state was failed, isn't it?

agunde (Tue, 30 Apr 2019 16:45:40 GMT):
Yes that what it looks like

JMIsham (Tue, 30 Apr 2019 16:46:17 GMT):
FYI, I was able to successfully run it in the docker environment

JMIsham (Tue, 30 Apr 2019 16:46:49 GMT):
so the admin key is the one which is generated by `sawdam` right ?

JMIsham (Tue, 30 Apr 2019 16:47:22 GMT):
or is it the validator key?

agunde (Tue, 30 Apr 2019 16:49:38 GMT):
sawadm keygen is the validator key. The admin keys should be set to the ones you generated with sawtooth keygen

JMIsham (Tue, 30 Apr 2019 16:50:40 GMT):
my bad :P , It was one of the key pair generated by `sawtooth keygen`

JMIsham (Tue, 30 Apr 2019 17:01:27 GMT):
@agunde , do you guys do any kind of remote debugging on sabre?

JMIsham (Tue, 30 Apr 2019 17:02:43 GMT):
is it possible to console log from either the smart contract or the sabre-tp/handler ?

agunde (Tue, 30 Apr 2019 17:03:09 GMT):
Not currently. We do have a plan to add a logging backend for sabre that can provide more insight into what is happening when there is an invalid transaction. The ones that we have tried cannot be compiled into wasm.

JMIsham (Tue, 30 Apr 2019 17:05:08 GMT):
lets say in my case, how do you think I can use logs to identify whats going on.

JMIsham (Tue, 30 Apr 2019 17:05:10 GMT):
?

JMIsham (Tue, 30 Apr 2019 17:05:46 GMT):
cuz the error message is returned from the handler class when the result is -3

JMIsham (Tue, 30 Apr 2019 17:08:05 GMT):
and from the wasm_externals, we are throwing error from various places, is there a way to log the actuall error message from the handler ?

JMIsham (Tue, 30 Apr 2019 17:08:30 GMT):
@agunde

agunde (Tue, 30 Apr 2019 17:27:45 GMT):
What i have done in the past is compile it as transaction processor (instead of the wasm smart contract) and connect it as transaction processor and submit the same transaction (not as a sabre transaction). Another option is you can follow along with the apply method in the code and see what get is failing which will give you an idea. These options are obviously not ideal. Hence why we need to improve the debugging process. There is not currently a way to get the error message out from the wasm code.

JMIsham (Tue, 30 Apr 2019 19:23:23 GMT):
@agunde , cool. will try to go to the code level for an in-depth understanding.

JMIsham (Tue, 30 Apr 2019 19:25:23 GMT):
just want to clarify that if I copy `sawtooth-sabre`, `sabre-cli`, and the `intkey_multiply.wasm` which are built when I was running the docker environment to the aws environment, it should work right?

JMIsham (Tue, 30 Apr 2019 19:26:37 GMT):
and also do we need to have sawtooth nightly version to work with this current master?

agunde (Tue, 30 Apr 2019 19:28:19 GMT):
@JMIsham I would assume that would work but I have never done so myself. I believe sabre as it is in master would work with older versions of sawtooth.

JMIsham (Tue, 30 Apr 2019 19:29:14 GMT):
cool. I'll also try to make it work. will let you if I find any workarounds.

JMIsham (Tue, 30 Apr 2019 19:29:45 GMT):
So you guys never tested sabre with multi peer environment?

agunde (Tue, 30 Apr 2019 19:33:52 GMT):
We have tested it. I believe we run it in docker on aws when we did. @rbuysse would know more.

JMIsham (Sat, 04 May 2019 06:40:35 GMT):
@agunde , I was able to run intkey_multiply example on my infrastructure

JMIsham (Sat, 04 May 2019 06:40:49 GMT):
Now, I'm trying to write my own sabre smart contract

JMIsham (Sat, 04 May 2019 06:41:33 GMT):
do you have any sabre contract development process

JMIsham (Sat, 04 May 2019 06:41:35 GMT):
?

JMIsham (Sat, 04 May 2019 06:41:47 GMT):
how do you guys test it?

agunde (Mon, 06 May 2019 14:28:08 GMT):
@JMIsham Are you familiar with writing a stand alone Rust Transaction Processor? What I usually do is run it as a transaction processor first and when it is finished, I test it as a Sabre smart contract (compiled into WASM). With the updates to the TransactionContext (turned into a trait) in the current version of the sawtooth rust sdk, it is much easier to write unit tests.

achala (Sat, 01 Jun 2019 07:36:25 GMT):
@agunde Where can I found all the commands for sabre ? (like intkey_multiply what are the other commands exists in sabre)? intkey is for interger operations and intkey_multiply is only for multiplication. How can I perform other operations? intkey_add/sub/divide and all are not exist!!!

jsmitchell (Sat, 01 Jun 2019 14:25:21 GMT):
@achala intkey is a transaction processor which is written in Rust and compiled to a WASM target for deployment and execution in Sabre. It is an example. You can write whatever you want. Please don’t make the mistake of assuming that the intkey example represents Sabre opcodes!

achala (Thu, 06 Jun 2019 09:03:05 GMT):
What these line represent https://github.com/hyperledger/sawtooth-sabre/blob/master/example/intkey_multiply/processor/src/handler.rs#L133 and #L132 ?

agunde (Thu, 06 Jun 2019 13:15:41 GMT):
This code is used to decode the expected intkey state, which is stored in cbor. When this was written there was not a cbor crate that could be compiled into wasm (at least not one that I could find and was deterministic with the crate used by the intkey transaction processor) Those lines are used to extract the write bytes from the cbor to decode the Name of the entry in state.

rossth (Wed, 12 Jun 2019 13:35:23 GMT):
Has joined the channel.

desktophero (Tue, 18 Jun 2019 19:35:31 GMT):
Has joined the channel.

AmimKnabben (Wed, 19 Jun 2019 22:09:48 GMT):
Has joined the channel.

RealDeanZhao (Thu, 27 Jun 2019 06:37:01 GMT):
Is Sabre pike deprecated? what's the difference between Grid pike and Sabre pike?

agunde (Thu, 27 Jun 2019 12:59:38 GMT):
Grid Pike is Pikes final location. It will eventually be removed from Sabre. @RealDeanZhao

thodges (Wed, 03 Jul 2019 13:38:37 GMT):
Has joined the channel.

Imoh (Thu, 11 Jul 2019 06:37:10 GMT):
Has joined the channel.

jamesbarry (Wed, 31 Jul 2019 16:31:40 GMT):
Has joined the channel.

arsulegai (Mon, 05 Aug 2019 03:41:56 GMT):
I received a question on Java support, in Sabre. Is it in plan?

jsmitchell (Mon, 05 Aug 2019 04:07:28 GMT):
Good languages targeting Sabre would produce minimal WASM bytecode - the JVM would be very heavy weight for this purpose.

arsulegai (Mon, 05 Aug 2019 04:20:49 GMT):
@VishalBatra ^

VishalBatra (Mon, 05 Aug 2019 04:20:49 GMT):
Has joined the channel.

VishalBatra (Mon, 05 Aug 2019 08:19:08 GMT):
ok, thanks @arsulegai

amundson (Mon, 05 Aug 2019 14:57:11 GMT):
could maybe be done though - https://github.com/appcypher/awesome-wasm-langs#java

arsulegai (Mon, 05 Aug 2019 17:15:38 GMT):
Hmm, TeaVM wins based on stargazers count

newhall (Thu, 17 Oct 2019 14:29:48 GMT):
Has joined the channel.

arsulegai (Sun, 01 Dec 2019 08:19:28 GMT):
I seem to be receiving the payload in the `entrypoint` method but the actual payload sent from the client is at the end of this stream of bytes received.

arsulegai (Mon, 02 Dec 2019 13:28:09 GMT):
@agunde ^ any help? The same TP & client works perfectly fine on Sawtooth

agunde (Mon, 02 Dec 2019 14:04:22 GMT):
@arsulegai when you say the TP and client work on Sawtooth, do you mean as a separate Transaction Processor running without sabre?

arsulegai (Mon, 02 Dec 2019 14:04:48 GMT):
Yes

agunde (Mon, 02 Dec 2019 14:05:16 GMT):
Is the client wrapping the payload in a SabreTransaction?

arsulegai (Mon, 02 Dec 2019 14:16:10 GMT):
That's interesting question, I was referring to the intkey_multiply example here https://github.com/hyperledger/sawtooth-sabre/blob/master/example/intkey_multiply/cli/src/transaction.rs

agunde (Mon, 02 Dec 2019 14:19:08 GMT):
O to use that cli with sabre you need to save the payload by setting an output and then use the sabre cli as described here https://sawtooth.hyperledger.org/docs/sabre/nightly/master/application_developer_guide.html#step-3-generate-the-payload-file

agunde (Mon, 02 Dec 2019 14:19:32 GMT):
https://sawtooth.hyperledger.org/docs/sabre/nightly/master/application_developer_guide.html#step-7-execute-the-smart-contract

arsulegai (Mon, 02 Dec 2019 14:23:36 GMT):
That would still be a Sawtooth batch file right?

agunde (Mon, 02 Dec 2019 14:24:50 GMT):
The intkey multiply will save out just the intkey_multiply payload and then the sabre cli will take the payload and wrap it in a Sabre Transaction (which yes goes into a Sawtooth Batch)

arsulegai (Mon, 02 Dec 2019 14:27:45 GMT):
I missed this line https://github.com/hyperledger/sawtooth-sabre/blob/322977ded5dc4b1ec9a1ca9876b5a86ce173ff6d/example/intkey_multiply/cli/src/multiply.rs#L40

arsulegai (Mon, 02 Dec 2019 14:27:51 GMT):
Thanks :)

agunde (Mon, 02 Dec 2019 14:28:29 GMT):
np

slavitch (Thu, 05 Dec 2019 18:56:49 GMT):
Has joined the channel.

trevormcdonald (Thu, 12 Dec 2019 16:46:22 GMT):
Has joined the channel.

trevormcdonald (Thu, 12 Dec 2019 16:46:24 GMT):
I'm trying to use Sabre instead of a separate transaction processor and running into an issue whenever I try to send a transaction. Sabre-sdk 0.4, Sabre-cli 0.4, Sawtooth 1.2, Sawtooth-sdk 0.3. The log message I get is: `consensource-validator | [2019-12-12 16:35:03.320 INFO processor_manager] waiting for processor type consensource: 0.1 to register` Did I miss a configuration step to tell the validator to use the Sabre TP for that family? Here is my contract definition: ``` name: consensource version: "0.1" wasm: target/wasm32-unknown-unknown/release/cert-registry-processor.wasm inputs: - "3d0111" outputs: - "3d0111" ``` Here are the Sabre commands run at start up: ``` while true; do curl -s http://sawtooth-rest-api:8008/state | grep -q head; if [ $$? -eq 0 ]; then break; fi; sleep 0.5; done; sabre cr --create consensource --key /shared_data/my_key --owner $$(cat /shared_data/my_key.pub) --url http://sawtooth-rest-api:8008 --wait 30 sabre upload --filename /build/processor/consensource.yaml --key /shared_data/my_key --url http://sawtooth-rest-api:8008 --wait 30 sabre ns --create 3d0111 --key /shared_data/my_key --owner $$(cat /shared_data/my_key.pub) --url http://sawtooth-rest-api:8008 --wait 30 sabre perm 3d0111 consensource --key /shared_data/my_key --read --write --url http://sawtooth-rest-api:8008 --wait 30 echo '---------========= consensource contract is loaded =========---------' ``` And here is the raw batch that is sent: ``` “ Ç B022550f49fecc38aeee9993a1625ab8de54ebeaa810935ad3e10c989df76e711cb€c3ee40961f346064d2fe161b914fc237aa7abf5f16bb323700dc07bf3d9fe7d23d34b7fb62c0c25e437a85f64f61e4a38859812f0c438b975adc5ddcccb47a47€c0bb56d2ad44d5637ebc300c0a45ef4a355e03c77e1f460b8fd03f9e3fa350a036e7ed92f1b7569de947a804d8e968ed8a5088be12eb542c45f9cfd23e546469Ã ® B022550f49fecc38aeee9993a1625ab8de54ebeaa810935ad3e10c989df76e711cb consensource"0.1*F3d011100007aa49839c24c018b1cdfc3d68b8ee202a18a733b354c2c92ba941bb962e8:F3d011100007aa49839c24c018b1cdfc3d68b8ee202a18a733b354c2c92ba941bb962e8J€a509651bc6f13c5d32a45d642167371fae4bb1d9b2958623a1f060efd61ded23ec61b2b18feeda3e7b5e2f225693346730f10f96b4bf31bb11a817ec5302acf1RB022550f49fecc38aeee9993a1625ab8de54ebeaa810935ad3e10c989df76e711cb€c3ee40961f346064d2fe161b914fc237aa7abf5f16bb323700dc07bf3d9fe7d23d34b7fb62c0c25e437a85f64f61e4a38859812f0c438b975adc5ddcccb47a47  q·ØÉï ``` Here is the branch where the code lives: https://github.com/target/consensource/tree/tmcdonald-sabre Any ideas as to what I'm missing?

amundson (Thu, 12 Dec 2019 20:51:04 GMT):
@trevormcdonald this suggests to me that the transaction you are submitting isn't a sabre transaction, but instead is a "consensource: 0.1" transaction. you probably need to update the client to create a sabre transaction and stick the current consensource transaction content inside the sabre transaction.

amundson (Thu, 12 Dec 2019 20:52:02 GMT):
this is because Sawtooth doesn't know about Sabre, and thus doesn't do the marshaling automatically for you

amundson (Thu, 12 Dec 2019 20:52:02 GMT):
this is because Sawtooth validator doesn't know about Sabre, and thus doesn't do the marshaling automatically for you

amundson (Thu, 12 Dec 2019 20:53:30 GMT):
there are some examples in javascript of making it optional (so you can support both sabre and tp transactions), but I can't recall which examples. probably the track and trace example.

trevormcdonald (Fri, 13 Dec 2019 14:27:20 GMT):
Thanks for pointing me there, for reference I believe the example you refer to is here: https://github.com/hyperledger/grid-contrib/tree/master/track_and_trace

seanyoung (Tue, 11 Feb 2020 22:09:22 GMT):
Hello, I'm making a start Sabre support on Solang: https://github.com/hyperledger-labs/solang/pull/103 Now I'm trying to understand the get_state/set_state externs. Is there any documentation available on this or could someone give me a quick guide to get me started. I'm not sure what the pointer collections are supposed to do. Thanks Sean

seanyoung (Tue, 11 Feb 2020 22:26:54 GMT):
Just reading some more of the code. State is stored at an address which should be a valid utf8 string. Can this be any string?

seanyoung (Tue, 11 Feb 2020 22:27:32 GMT):
Solidity stores data an slot number which 256 bit. I can just convert this to a hex string for now.

seanyoung (Tue, 11 Feb 2020 22:27:32 GMT):
Solidity stores data an slot number which a 256 bit unsigned integer. I can just convert this to a hex string for now.

seanyoung (Tue, 11 Feb 2020 22:42:14 GMT):
Actually it would be nice if the names of the Solidity variables can be used for state address. However this is difficult for arrays/structs/mappings are they are accessed per-element, and purposely designed so that they can hold lots of (sparse) data. That would mean creating addresses for each array element, which can be expensive.

rbuysse (Wed, 12 Feb 2020 23:00:18 GMT):
A new version (0.5.0) of sawtooth-sabre has been released. You can view the release notes at https://github.com/hyperledger/sawtooth-sabre/blob/v0.5.0/RELEASE_NOTES.md

arsulegai (Thu, 13 Feb 2020 04:32:15 GMT):
@seanyoung Saw your question other day and forgot to add this link. This page should give you details on what the address string will have https://sawtooth.hyperledger.org/docs/core/nightly/1-2/architecture/global_state.html#global-state

seanyoung (Thu, 13 Feb 2020 11:05:21 GMT):
[ ](https://chat.hyperledger.org/channel/sawtooth-sabre?msg=G7oq5wHePmNodPMtQ) Thank you, that helps

rbuysse (Thu, 13 Feb 2020 21:24:57 GMT):
A new version (0.5.1) of sawtooth-sabre has been released. You can view the release notes at https://github.com/hyperledger/sawtooth-sabre/blob/v0.5.1/RELEASE_NOTES.md

seanyoung (Sat, 15 Feb 2020 17:17:07 GMT):
I've been looking at the externs that sabre exposes for wasm contracts, in order to write Solang target support for sabre. - Solang has it's own heap/malloc library. Should it use the alloc extern instead? How about realloc? - As I understand it, when entrypoint is called, the payload is written to wasm memory and passes an argument. Should I use get_ptr_len() to get its length? - If wasm memory is written by the externs, what do I set the stack pointer to so it doesn't overwrite allocated stuff? What about static compiled data?

arsulegai (Sat, 15 Feb 2020 21:00:13 GMT):
Is Solang going to be compiled into WASM?

seanyoung (Sat, 15 Feb 2020 22:31:30 GMT):
Do you mean the Solang compiler itself, or are you asking if the Solang compiler outputs wasm?

seanyoung (Sat, 15 Feb 2020 22:36:18 GMT):
Solang compiles Solidity into wasm; I would like to make it possible to run Solang-compiled Solidity run on sabre.

seanyoung (Sat, 15 Feb 2020 22:36:18 GMT):
Solang compiles Solidity into wasm; I would like to make it possible to run Solang-compiled Solidity on sabre

seanyoung (Sat, 15 Feb 2020 22:37:06 GMT):
Solang is rust, so Solang itself can be compiled into wasm. It require llvm to be compiled to wasm too, which I haven't tried yet.

arsulegai (Sun, 16 Feb 2020 04:48:10 GMT):
Awesome! When you say run WASM converted Solidity code on Sabre, it makes me curious. Probably need something like #sawtooth-seth?

seanyoung (Sun, 16 Feb 2020 08:36:20 GMT):
seth runs EVM, not WASM

arsulegai (Sun, 16 Feb 2020 08:36:45 GMT):
Right

arsulegai (Sun, 16 Feb 2020 08:49:20 GMT):
I couldn't understand how the context conversion from Sabre to Solidity happen in the PR you pointed earlier. I am curious to learn more.

seanyoung (Sun, 16 Feb 2020 08:50:22 GMT):
This PR https://github.com/hyperledger-labs/solang/pull/103 I assume?

arsulegai (Sun, 16 Feb 2020 08:50:32 GMT):
Yes

seanyoung (Sun, 16 Feb 2020 08:51:04 GMT):
sabre runs wasm smart contracts

seanyoung (Sun, 16 Feb 2020 08:51:15 GMT):
solang compiles Solidity to wasm

seanyoung (Sun, 16 Feb 2020 08:52:26 GMT):
However sabre has a set of externs to interact with the blockchain, which are specific to each blockchain (e.g. ewasm).

seanyoung (Sun, 16 Feb 2020 08:52:48 GMT):
So Solang needs to be taught a few tricks to make its output run on sabre

arsulegai (Sun, 16 Feb 2020 08:54:26 GMT):
Yes, this trick is what I wanted to learn more about

seanyoung (Sun, 16 Feb 2020 08:55:21 GMT):
What do you want to know?

arsulegai (Sun, 16 Feb 2020 09:18:24 GMT):
The way Solidity contracts are written is different from how we generally write for Sabre. For example, in sabre if a state has to be stored then we compute the address and store on the global state. But these steps are not generally what we see in a Solidity code.

seanyoung (Sun, 16 Feb 2020 09:19:52 GMT):
That's where Solang comes in. If contract storage gets assigned then it has to generate some code to set global state.

seanyoung (Sun, 16 Feb 2020 09:21:27 GMT):
Solidity contract variables each have a 256 bit slot number. That can be converted to a string, and then we can call set_state() on this (generated from Solang). However, I'm trying to get my head round how the ewasm externs work.

seanyoung (Sun, 16 Feb 2020 09:26:48 GMT):
It needs to go here: https://github.com/hyperledger-labs/solang/pull/103/files#diff-f27c8a7941fd75514621ba404b78272dR183

seanyoung (Sun, 16 Feb 2020 21:32:40 GMT):
Ok, I've managed to work it out. I got it working. See https://solang.readthedocs.io/en/latest/running.html#using-solang-with-sawtooth-sabre

seanyoung (Sun, 16 Feb 2020 21:36:32 GMT):
Hasn't seen much testing, just got it working.

yeiyei (Tue, 03 Mar 2020 15:32:58 GMT):
Has joined the channel.

Dan (Mon, 09 Mar 2020 14:15:22 GMT):
I might invest some more time digging into wasm. Anyone have any favorite wasm articles/links?

jsmitchell (Mon, 09 Mar 2020 14:52:30 GMT):
lots of good content here: https://hacks.mozilla.org/category/webassembly/

jsmitchell (Mon, 09 Mar 2020 14:56:20 GMT):
sabre uses parity-wasm for sandbox execution: https://github.com/paritytech/parity-wasm

seanyoung (Mon, 09 Mar 2020 17:13:29 GMT):
@Dan depending on what you're after, this might be useful: https://webassembly.org/docs/semantics/

Dan (Mon, 09 Mar 2020 19:47:02 GMT):
Thanks!

Dan (Mon, 09 Mar 2020 19:48:20 GMT):
Incidentally, #private-data-objects has https://github.com/hyperledger-labs/private-data-objects/tree/master/common/interpreter/wawaka_wasm which is based on https://github.com/bytecodealliance/wasm-micro-runtime

seanyoung (Mon, 09 Mar 2020 23:15:26 GMT):
great, I was looking for that after talking to @MicBowman

JMIsham (Tue, 10 Mar 2020 10:59:01 GMT):
@agunde , May I know is there any plans to implement sawtooth sabre payload sdk in Assemblyscript SDKs?? like we have in rust (https://github.com/hyperledger/sawtooth-sabre/blob/master/sdks/rust/src/protocol/payload.rs)

JMIsham (Tue, 10 Mar 2020 10:59:01 GMT):
@agunde , May I know is there any plans to implement sawtooth sabre payload sdk in Assemblyscript?? like we have in rust (https://github.com/hyperledger/sawtooth-sabre/blob/master/sdks/rust/src/protocol/payload.rs)

agunde (Tue, 10 Mar 2020 13:37:03 GMT):
@JMIsham There are not currently plans to do so.

JMIsham (Tue, 10 Mar 2020 13:38:57 GMT):
I'm looking in to create a rest service which takes the application level payload as json, encode it, sign it and send it to the splinter network.

JMIsham (Tue, 10 Mar 2020 13:38:57 GMT):
I'm looking in to create a rest service which takes the application level payload as json, encode it, sign it and send it to sabre TP

JMIsham (Tue, 10 Mar 2020 13:39:23 GMT):
thought of doing it using typescript rather going for rust..

JMIsham (Tue, 10 Mar 2020 13:40:22 GMT):
is it possible for me to start develop those SDKs and contribute to splinter?

JMIsham (Tue, 10 Mar 2020 13:40:22 GMT):
is it possible for me to start develop those SDKs and contribute to sawtooth sabre?

amundson (Tue, 10 Mar 2020 14:05:04 GMT):
@JMIsham yes, and if you need a place to share your work, you can commit it to sawtooth-contrib; then at some point we could figure out were it should go long-term

JMIsham (Tue, 10 Mar 2020 14:05:56 GMT):
thank you @amundson

amundson (Tue, 10 Mar 2020 14:07:52 GMT):
@JMIsham also, consider contributing to Transact's Javascript SDK - https://github.com/hyperledger/transact-sdk-javascript if it makes sense -- there is code there currently to help build up transactions (including sabre transactions), and this is the code we use in the browser to do that -- https://github.com/hyperledger/transact-sdk-javascript/tree/master/src

JMIsham (Tue, 10 Mar 2020 14:08:48 GMT):
Sure. I'll have a look

cg223 (Fri, 03 Apr 2020 22:16:14 GMT):
Has joined the channel.

cg223 (Fri, 03 Apr 2020 22:18:31 GMT):
go

agunde (Thu, 09 Apr 2020 17:14:49 GMT):
@arsulegai https://github.com/hyperledger/sawtooth-sabre/pull/95 was approved and merged. Thanks for the contribution!

jmbarry (Tue, 16 Jun 2020 17:32:47 GMT):
Has joined the channel.

gusBar (Thu, 06 May 2021 05:14:11 GMT):
Has joined the channel.

LeonardoCarvalho (Sat, 03 Jul 2021 16:46:11 GMT):
Has joined the channel.

rjones (Wed, 23 Mar 2022 17:27:11 GMT):

rjones (Wed, 23 Mar 2022 17:27:11 GMT):

rjones (Wed, 23 Mar 2022 17:27:11 GMT):