You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by cm...@apache.org on 2019/10/09 12:49:10 UTC

[incubator-milagro-dta] branch tendermint updated (2932457 -> b1a85e3)

This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a change to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git.


    from 2932457  Rename HTTP endpoints /order1 to /order and /order/secret1 to /order/secret
     new bf75aaf  Add fishhook
     new 93c4966  Merge branch 'tendermint' into fishhook
     new 7268634  in progress
     new 7e811ee  Update fishhook
     new f9c7a03  Complete fishhook and update tests
     new b1a85e3  Merge branch 'fishhook' into tendermint

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 cmd/servicetester/e2e_test.sh                      | 209 ++++++++-------------
 cmd/servicetester/{e2e_test.sh => e2e_test.sh.old} |   0
 cmd/servicetester/{main => fishhook}               | Bin 23390004 -> 29288396 bytes
 cmd/servicetester/main.go                          |   2 +-
 cmd/servicetester/ref                              |   1 +
 go.sum                                             |  14 ++
 p                                                  |   4 +-
 pkg/defaultservice/orderTX.go                      |   3 +-
 pkg/endpoints/endpoints.go                         |   2 +-
 pkg/tendermint/cmd/tmget.go                        | 110 -----------
 pkg/tendermint/fishhook/build                      |   2 +
 .../main => pkg/tendermint/fishhook/fishhook       | Bin 23390004 -> 29288396 bytes
 pkg/tendermint/fishhook/main.go                    | 186 ++++++++++++++++++
 pkg/tendermint/{cmd => }/transactions.go           |  10 +-
 14 files changed, 292 insertions(+), 251 deletions(-)
 copy cmd/servicetester/{e2e_test.sh => e2e_test.sh.old} (100%)
 copy cmd/servicetester/{main => fishhook} (65%)
 create mode 100644 cmd/servicetester/ref
 delete mode 100644 pkg/tendermint/cmd/tmget.go
 create mode 100755 pkg/tendermint/fishhook/build
 copy cmd/servicetester/main => pkg/tendermint/fishhook/fishhook (65%)
 create mode 100644 pkg/tendermint/fishhook/main.go
 rename pkg/tendermint/{cmd => }/transactions.go (89%)


[incubator-milagro-dta] 06/06: Merge branch 'fishhook' into tendermint

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit b1a85e3d03c3f6a6797978871ff505d6b048ff1c
Merge: 2932457 f9c7a03
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 13:48:03 2019 +0100

    Merge branch 'fishhook' into tendermint

 cmd/servicetester/e2e_test.sh                      | 209 ++++++++-------------
 cmd/servicetester/{e2e_test.sh => e2e_test.sh.old} |   0
 cmd/servicetester/fishhook                         | Bin 0 -> 29288396 bytes
 cmd/servicetester/main.go                          |   2 +-
 cmd/servicetester/ref                              |   1 +
 go.sum                                             |  14 ++
 p                                                  |   4 +-
 pkg/defaultservice/orderTX.go                      |   3 +-
 pkg/endpoints/endpoints.go                         |   2 +-
 pkg/tendermint/cmd/tmget.go                        | 110 -----------
 pkg/tendermint/fishhook/build                      |   2 +
 pkg/tendermint/fishhook/fishhook                   | Bin 0 -> 29288396 bytes
 pkg/tendermint/fishhook/main.go                    | 186 ++++++++++++++++++
 pkg/tendermint/{cmd => }/transactions.go           |  10 +-
 14 files changed, 292 insertions(+), 251 deletions(-)


[incubator-milagro-dta] 03/06: in progress

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit 726863453d48e88d0ed377c4ac1df7dd72337c01
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 09:06:43 2019 +0100

    in progress
---
 pkg/tendermint/cmd/{tmget => fishhook} | Bin 28468644 -> 24169060 bytes
 pkg/tendermint/cmd/fishhook.go         |  19 ++++++-----
 pkg/tendermint/cmd/transactions.go     |  60 ---------------------------------
 3 files changed, 10 insertions(+), 69 deletions(-)

diff --git a/pkg/tendermint/cmd/tmget b/pkg/tendermint/cmd/fishhook
similarity index 68%
rename from pkg/tendermint/cmd/tmget
rename to pkg/tendermint/cmd/fishhook
index 27ede0c..854a652 100755
Binary files a/pkg/tendermint/cmd/tmget and b/pkg/tendermint/cmd/fishhook differ
diff --git a/pkg/tendermint/cmd/fishhook.go b/pkg/tendermint/cmd/fishhook.go
index 7971666..b3344a1 100644
--- a/pkg/tendermint/cmd/fishhook.go
+++ b/pkg/tendermint/cmd/fishhook.go
@@ -12,6 +12,7 @@ import (
 	"time"
 
 	"github.com/TylerBrock/colorjson"
+	"github.com/apache/incubator-milagro-dta/pkg/tendermint"
 	"github.com/urfave/cli"
 )
 
@@ -52,10 +53,10 @@ Qredo DT-A uses:
 		if url == "" {
 			url = "localhost:26657"
 		}
-		if len(c.Args()) == 0 {
-			print(app.UsageText)
-			return nil
-		}
+		// if len(c.Args()) == 0 {
+		// 	print(app.UsageText)
+		// 	return nil
+		// }
 
 		fullUrl := "http://" + url + "/tx_search?query=\"" + tag + "=" + lookup + "\""
 		print(fullUrl)
@@ -67,19 +68,19 @@ Qredo DT-A uses:
 		defer resp.Body.Close()
 		body, err := ioutil.ReadAll(resp.Body)
 
-		txResponse, err := UnmarshalFetchTxResponse([]byte(body))
+		txResponse, err := tendermint.UnmarshalFetchTxResponse([]byte(body))
 
-		txs := txResponse.Result.Txs
+		txs := txResponse.TResult.Txs
 		for r1, v := range txs {
 			for r2, v1 := range v.TxResult.Events {
 				for r3, v2 := range v1.Attributes {
 					newkey, _ := base64.StdEncoding.DecodeString(v2.Key)
-					txResponse.Result.Txs[r1].TxResult.Events[r2].Attributes[r3].Key = string(newkey)
+					txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Key = string(newkey)
 					newval, _ := base64.StdEncoding.DecodeString(v2.Value)
-					txResponse.Result.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = string(newval)
+					txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = string(newval)
 
 					if string(newkey) == "key" {
-						txResponse.Result.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = hex.EncodeToString(newval)
+						txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = hex.EncodeToString(newval)
 					}
 				}
 			}
diff --git a/pkg/tendermint/cmd/transactions.go b/pkg/tendermint/cmd/transactions.go
deleted file mode 100644
index 2b68658..0000000
--- a/pkg/tendermint/cmd/transactions.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package main
-
-import "encoding/json"
-
-func UnmarshalFetchTxResponse(data []byte) (FetchTxResponse, error) {
-	var r FetchTxResponse
-	err := json.Unmarshal(data, &r)
-	return r, err
-}
-
-func (r *FetchTxResponse) Marshal() ([]byte, error) {
-	return json.Marshal(r)
-}
-
-func UnmarshalAttribute(data []byte) (Attribute, error) {
-	var r Attribute
-	print("hello")
-	err := json.Unmarshal(data, &r)
-	return r, err
-}
-
-type FetchTxResponse struct {
-	ID      string `json:"id"`
-	Jsonrpc string `json:"jsonrpc"`
-	Result  Result `json:"result"`
-}
-
-type Result struct {
-	TotalCount string `json:"total_count"`
-	Txs        []Tx   `json:"txs"`
-}
-
-type Tx struct {
-	Hash     string   `json:"hash"`
-	Height   string   `json:"height"`
-	Index    int64    `json:"index"`
-	Tx       string   `json:"tx"`
-	TxResult TxResult `json:"tx_result"`
-}
-
-type TxResult struct {
-	Code      int64       `json:"code"`
-	Codespace string      `json:"codespace"`
-	Data      interface{} `json:"data"`
-	Events    []Event     `json:"events"`
-	GasUsed   string      `json:"gasUsed"`
-	GasWanted string      `json:"gasWanted"`
-	Info      string      `json:"info"`
-	Log       string      `json:"log"`
-}
-
-type Event struct {
-	Attributes []Attribute `json:"attributes"`
-	Type       string      `json:"type"`
-}
-
-type Attribute struct {
-	Key   string `json:"key"`
-	Value string `json:"value"`
-}


[incubator-milagro-dta] 05/06: Complete fishhook and update tests

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit f9c7a03a365815ed6f0bbb9cf5e801967012d601
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 13:44:59 2019 +0100

    Complete fishhook and update tests
---
 cmd/servicetester/e2e_test.sh                      | 209 ++++++++-------------
 cmd/servicetester/{e2e_test.sh => e2e_test.sh.old} |   0
 .../fishhook => cmd/servicetester}/fishhook        | Bin 29288396 -> 29288396 bytes
 cmd/servicetester/main.go                          |   2 +-
 cmd/servicetester/ref                              |   1 +
 pkg/defaultservice/orderTX.go                      |   3 +-
 pkg/tendermint/fishhook/fishhook                   | Bin 29288396 -> 29288396 bytes
 pkg/tendermint/fishhook/main.go                    |  41 ++--
 pkg/tendermint/fishhook/run                        |   2 -
 9 files changed, 109 insertions(+), 149 deletions(-)

diff --git a/cmd/servicetester/e2e_test.sh b/cmd/servicetester/e2e_test.sh
index a0f7f0d..2c3ca87 100755
--- a/cmd/servicetester/e2e_test.sh
+++ b/cmd/servicetester/e2e_test.sh
@@ -22,13 +22,14 @@
 apiVersion="v1"
 defaultURL="http://localhost:5556"
 apiURL="${1:-$defaultURL}"
-
+configdir="/Users/chris/.milagro"
+host="34.246.173.153:26657"
 
 status () {
   #Determine if an extension is running
   statusOutput=$(curl -s -X GET "$apiURL/$apiVersion/status" -H "accept: */*" -H "Content-Type: application/json")
 
-echo "$apiURL/$apiVersion/status"
+  echo "$apiURL/$apiVersion/status"
 
   identity=$(echo $statusOutput | jq .nodeCID)
   extensionVendor=$(echo $statusOutput | jq -r .extensionVendor)
@@ -45,144 +46,93 @@ echo "$apiURL/$apiVersion/status"
 
 execute_bitcoin () {
   # #Run 4 Tests against the Bitcoin Extension
-  echo "Bitcoin Plugin Tests [4 Tests]"
-  output1=$(curl -s -X POST "$apiURL/$apiVersion/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
-  #echo $output1
-  op1=$(echo $output1 | jq .orderReference)
-  commitment1=$(echo $output1 | jq .commitment)
-  address1=$(echo $output1 | jq .extension.address)
-  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity}")
-  address2=$(echo $output2 | jq .extension.address)
-  commitment2=$(echo $output2 | jq .commitment)
-
-  echo "Committment1 $commitment1 $address1"
-  echo "Committment2 $commitment2 $address2"
-
+  echo "Bitcoin Plugin Tests [2 Tests]"
+
+
+ ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json"  -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}" > ref ) &
+  output1=$(fishhook $configdir $host "self" 2)
+  ref=$(cat ref)
+  commitment1=$(echo $output1 | jq .OrderPart2.CommitmentPublicKey)
+  address1=$(echo $output1 | jq .OrderPart2.Extension.address)
+  (sleep 1; curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":$identity}" > /dev/null ) &
+  output2=$(fishhook $configdir $host "self" 2)
+  address2=$(echo $output2 | jq .OrderPart4.Extension.address)
+  commitment2=$(echo $output2 | jq .OrderPart4.Extension.FinalPublicKey)
+  #echo "Committment1 $commitment1 $address1"
+  #echo "Committment2 $commitment2 $address2"
   if [ -z $commitment2 ]; then
       echo "Failed Commitment is empty"
       exit 1
   fi
-
-  if [ $commitment1 == $commitment2 ]; then
-    echo "Pass - Id, Order & OrderSecret(Beneficiary)"
-  else
+  if [ $commitment1 != $commitment2 ]; then
     echo "Fail"
     exit 1
   fi
-
-  output3=$(curl -s -X POST "$apiURL/$apiVersion/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"coin\":\"0\"}}")
-
-  op3=$(echo $output3 | jq .orderReference)
-  commitment3=$(echo $output3 | jq .commitment)
-  address3=$(echo $output3 | jq .extension.address)
-  output4=$(curl -s -X POST "$apiURL/$apiVersion/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op3}")
-  commitment4=$(echo $output4 | jq .commitment)
-  address4=$(echo $output4 | jq .extension.address)
-  orderReference=$(echo $output4 | jq .orderReference)
-  orderIndex=1
-
-  echo "Committment3 $commitment3 $address3"
-  echo "Committment4 $commitment4 $address4"
-
-  if [ -z $commitment4 ]; then
+  if [ $address2 != $address2 ]; then
+    echo "Fail"
+    exit 1
+  fi
+  echo "Pass - Id, Order & OrderSecret(Beneficiary)"
+
+
+  ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json"  -d "{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"coin\":\"0\"}}" > ref ) &
+  output1=$(fishhook $configdir $host "self" 2)
+  ref=$(cat ref)
+  commitment1=$(echo $output1 | jq .OrderPart2.CommitmentPublicKey)
+  address1=$(echo $output1 | jq .OrderPart2.Extension.address)
+  (sleep 1; curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref}" > /dev/null ) &
+  output2=$(fishhook $configdir $host "self" 2)
+  address2=$(echo $output2 | jq .OrderPart4.Extension.address)
+  commitment2=$(echo $output2 | jq .OrderPart4.Extension.FinalPublicKey)
+  #echo "Committment1 $commitment1 $address1"
+  #echo "Committment2 $commitment2 $address2"
+  if [ -z $commitment2 ]; then
       echo "Failed Commitment is empty"
       exit 1
   fi
-
-  if [ $commitment3 == $commitment4 ]; then
-    echo "Pass - Id, Order(Beneficiary) & OrderSecret"
-  else
-      echo "Fail"
-      exit 1
+  if [ $commitment1 != $commitment2 ]; then
+    echo "Fail"
+    exit 1
   fi
-
-
-   #make another BeneficiaryID
-  #  output5=$(curl -s -X POST "http://localhost:5556/$apiVersion/identity" -H "accept: */*" -H       "Content-Type: application/json" -d "{\"Name\":\"AA\"}")
-  #  benid=$(echo $output5 | jq -r .idDocumentCID)
-
-  #  #Tests against the Bitcoin Extension - different befificary
-  #  output6=$(curl -s -X POST "http://localhost:5556/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
-  #  #echo $output6
-  #  op6=$(echo $output6 | jq .orderReference)
-  #  commitment6=$(echo $output6 | jq .commitment)
-  #  address6=$(echo $output6 | jq .extension.address)
-
-  #  output7=$(curl -s -X POST "http://localhost:5556/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op6,\"beneficiaryIDDocumentCID\":\"$benid\"}")
-  #  address7=$(echo $output7 | jq .extension.address)
-  #  commitment7=$(echo $output7 | jq .commitment)
-
-  #  echo "Committment5 $commitment6 $address6"
-  #  echo "Committment6 $commitment7 $address7"
-
-  #  if [ -z $commitment7 ]; then
-  #      echo "Failed Commitment is empty"
-  #      exit 1
-  #  fi
-
-  #  if [ $commitment6 == $commitment7 ]; then
-  #    echo "Pass - Id, Order & OrderSecret(Beneficiary)"
-  #  else
-  #    echo "Fail"
-  #    exit 1
-  #  fi
-
-  # output8=$(curl -s -X POST "http://localhost:5556/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"$benid\",\"extension\":{\"coin\":\"0\"}}")
-  # op8=$(echo $output8 | jq .orderReference)
-  # commitment8=$(echo $output8 | jq .commitment)
-  # address8=$(echo $output8 | jq .extension.address)
-
-
-  # output9=$(curl -s -X POST "http://localhost:5556/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op8}")
-  # commitment9=$(echo $output9 | jq .commitment)
-  # address9=$(echo $output9 | jq .extension.address)
-  # orderReference=$(echo $output9 | jq .orderReference)
-  # orderIndex=1
-
-  # echo "Committment7 $commitment8 $address8"
-  # echo "Committment8 $commitment9 $address9"
-
-  # if [ -z $commitment9 ]; then
-  #     echo "Failed Commitment is empty"
-  #     exit 1
-  # fi
-
-  # if [ $commitment8 == $commitment9 ]; then
-  #   echo "Pass - Id, Order(Beneficiary) & OrderSecret"
-  # else
-  #     echo "Fail"
-  #     exit 1
-  # fi
-
+  if [ $address2 != $address2 ]; then
+    echo "Fail"
+    exit 1
+  fi
+ echo "Pass - Id, Order(Beneficiary) & OrderSecret"
 }
 
 
 ###############################################################################################################################
 
 execute_safeguardsecret () {
+
   inputString="This is some random test text 1234567890!"
   echo "Encrypt a String [1 Test]"
-  echo $output1
-  output1=$(curl -s -X POST "$apiURL/$apiVersion/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"plainText\":\"$inputString\"}}")
-  echo $output1
-  op1=$(echo $output1 | jq .orderReference)
-  cipherText=$(echo $output1 | jq .extension.cypherText)
-  tvalue=$(echo $output1 | jq .extension.t)
-  vvalue=$(echo $output1 | jq .extension.v)
-  commitment1=$(echo $output1 | jq .commitment)
-  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"cypherText\":$cipherText,\"t\":$tvalue,\"v\":$vvalue}}")
-  result=$(echo $output2 | jq -r .extension.plainText)
-
-  orderReference=$(echo $output2 | jq .orderReference)
-  orderIndex=0
 
 
-  if [ "$inputString" == "$result" ]; then
-    echo "Pass"
+  ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"plainText\":\"$inputString\"}}" > ref ) &
+  output1=$(fishhook $configdir $host "self" 2)
+  ref=$(cat ref)
+  cipherText=$(echo $output1 | jq .OrderPart2.Extension.cypherText)
+
+  #echo $cipherText
+  ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":$identity,\"extension\":{\"cypherText\":$cipherText}}" > /dev/null) &
+  output2=$(fishhook $configdir $host "self" 2)
+  plaintext=$(echo $output2 | jq -r .OrderPart4.Extension.plainText)
+
+
+  if [ -z "$plaintext" ]; then
+      echo "Failed Commitment is empty"
+      exit 1
+  fi
+
+  if [ "$inputString" == "$plaintext" ]; then
+    echo "Order Create/Retrieve Pass"
   else
-    echo "Fail"
+    echo "Order Create/Retrieve Fail"
     exit 1
   fi
+
 }
 
 # #############################################################################
@@ -190,21 +140,18 @@ execute_safeguardsecret () {
 
 execute_milagro () {
   echo "Milagro Tests [1 Test]"
-  output1=$(curl -s -X POST "$apiURL/$apiVersion/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity}")
-  echo $output1
-  op1=$(echo $output1 | jq .orderReference)
-
-
-  commitment1=$(echo $output1 | jq .commitment)
-  output2=$(curl -s -X POST "$apiURL/$apiVersion/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity}")
-  commitment2=$(echo $output2 | jq .commitment)
-
-  orderReference=$(echo $output2 | jq .orderReference)
+  ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":$identity}" > ref ) &
+  output1=$(fishhook $configdir $host "self" 1)
+  ref=$(cat ref)
+  commitment1=$(echo $output1 | jq .OrderPart2.CommitmentPublicKey)
+  #echo "Committment1 $commitment1"
+
+  ( sleep 1; curl -s -X POST "$apiURL/$apiVersion/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":$identity}" > /dev/null) &
+  output2=$(fishhook $configdir $host "self" 3)
+  commitment2=$(echo $output2 | jq .OrderPart4.Extension.FinalPublicKey)
   orderIndex=0
-
-
-  echo "Committment1 $commitment1"
-  echo "Committment2 $commitment2"
+  #echo "Committment1 $commitment1"
+  #echo "Committment2 $commitment2"
 
   if [ -z $commitment2 ]; then
       echo "Failed Commitment is empty"
@@ -263,5 +210,5 @@ fi
 if [ $plugin == "safeguardsecret" ]; then
     execute_safeguardsecret
 fi
-execute_orderlist
+#execute_orderlist
 
diff --git a/cmd/servicetester/e2e_test.sh b/cmd/servicetester/e2e_test.sh.old
similarity index 100%
copy from cmd/servicetester/e2e_test.sh
copy to cmd/servicetester/e2e_test.sh.old
diff --git a/pkg/tendermint/fishhook/fishhook b/cmd/servicetester/fishhook
similarity index 80%
copy from pkg/tendermint/fishhook/fishhook
copy to cmd/servicetester/fishhook
index be3a244..6353907 100755
Binary files a/pkg/tendermint/fishhook/fishhook and b/cmd/servicetester/fishhook differ
diff --git a/cmd/servicetester/main.go b/cmd/servicetester/main.go
index fc55432..700645c 100644
--- a/cmd/servicetester/main.go
+++ b/cmd/servicetester/main.go
@@ -84,7 +84,7 @@ func  Dump(tx *BlockChainTX) error {
 	}
 
 	order := &documents.OrderDoc{}
-	err = documents.DecodeOrderDocument(tx.Payload, txHashString, order, sikeSK, nodeID, localIDDoc.BLSPublicKey)
+	err = documents.FinalPrivateKey(tx.Payload, txHashString, order, sikeSK, nodeID, localIDDoc.BLSPublicKey)
 
 	pp, _ := prettyjson.Marshal(order)
 	fmt.Println(string(pp))
diff --git a/cmd/servicetester/ref b/cmd/servicetester/ref
new file mode 100644
index 0000000..7bb74c7
--- /dev/null
+++ b/cmd/servicetester/ref
@@ -0,0 +1 @@
+"83568372-ea91-11e9-888f-acde48001122"
diff --git a/pkg/defaultservice/orderTX.go b/pkg/defaultservice/orderTX.go
index 02ff5f5..ad07ea6 100644
--- a/pkg/defaultservice/orderTX.go
+++ b/pkg/defaultservice/orderTX.go
@@ -126,7 +126,7 @@ func (s *Service) OrderSecret2(tx *api.BlockChainTX) (string, error) {
 		return "", errors.New("Invalid Processor")
 	}
 
-	finalPrivateKey, _, extension, err := s.Plugin.ProduceFinalSecret(keyseed, sikeSK, order, order, nodeID)
+	finalPrivateKey, finalPublicKey, extension, err := s.Plugin.ProduceFinalSecret(keyseed, sikeSK, order, order, nodeID)
 	if err != nil {
 		return "", err
 	}
@@ -143,6 +143,7 @@ func (s *Service) OrderSecret2(tx *api.BlockChainTX) (string, error) {
 		order.OrderPart4.Extension[key] = value
 	}
 	order.OrderPart4.Extension["FinalPrivateKey"] = finalPrivateKey
+	order.OrderPart4.Extension["FinalPublicKey"] = finalPublicKey
 
 	//Output Only to self for autoviewing
 	recipientList, err := common.BuildRecipientList(s.Tendermint, nodeID)
diff --git a/pkg/tendermint/fishhook/fishhook b/pkg/tendermint/fishhook/fishhook
index be3a244..24ad43f 100755
Binary files a/pkg/tendermint/fishhook/fishhook and b/pkg/tendermint/fishhook/fishhook differ
diff --git a/pkg/tendermint/fishhook/main.go b/pkg/tendermint/fishhook/main.go
index 3f4dd4c..9ad860d 100644
--- a/pkg/tendermint/fishhook/main.go
+++ b/pkg/tendermint/fishhook/main.go
@@ -41,13 +41,23 @@ func main() {
 		},
 	}
 	app.Copyright = "(c) 2019 Chris Morris"
-	app.UsageText = `fishhook configdir nodeurl query skip
-eg. fishhook /Users/john/.milagro 10.10,10,10:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 3
-
-configdir - the local directory where the DT-A configuration (eg. config.yaml, keys) are stored
-nodeurl   - the host:port of a member Node of the Tendermint Network
-query     - A query to filter the results by (enclosed query in double quotes and values in single quotes)
-skip      - number of matches to skip before showing match and terminating
+	app.UsageText = `USAGE:
+    fishhook configdir nodeurl query skip
+
+DESCRIPTION:
+    fishhook attaches to the specified Tendermint Node via web sockets, and waits for a
+    query to be matches skip times, oncer complete it uses the local keys stored in configdir
+    to decode the Transaction and dump it to stdout
+
+EXAMPLE:
+    fishhook /Users/john/.milagro 10.10,10,10:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 3
+
+PARAMETERS: (all mandatory)
+    configdir - the local directory where the DT-A configuration (eg. config.yaml, keys) are stored
+    nodeurl   - the host:port of a member Node of the Tendermint Network
+    query     - A query to filter the results by (enclosed query in double quotes and values in single quotes)
+              - if query is 'self', query auto generated to match itself as recipient.
+    skip      - number of matches to skip before showing match and terminating
 `
 	app.Usage = `retrieve and parse a transaction in the Qredo DT-A Format from a Tendermint Blockchain
 Note tags are case sensistive
@@ -59,23 +69,27 @@ Note tags are case sensistive
 		query := c.Args().Get(2)
 		skip, err := strconv.Atoi(c.Args().Get(3))
 
-		if err != nil {
-			print("Invalid skip value\n")
-			os.Exit(1)
-		}
-
 		if len(c.Args()) != 4 {
 			print(app.UsageText)
 			os.Exit(1)
 			return nil
 		}
 
+		if err != nil {
+			print("Invalid skip value\n")
+			os.Exit(1)
+		}
+
 		cfg, err := parseConfig(folder)
 		if err != nil {
 			print("Failed to open config")
 			os.Exit(1)
 		}
 
+		if query == "self" {
+			query = "tag.recipient='" + cfg.Node.NodeID + "'"
+		}
+
 		keyStore, err := keystore.NewFileStore(filepath.Join(folder, keysFile))
 		if err != nil {
 			print("Fail to open keystore")
@@ -116,12 +130,11 @@ Note tags are case sensistive
 		for {
 			select {
 			case result := <-out:
-				matchCount++
 				if matchCount != skip {
+					matchCount++
 					continue
 				}
 
-				print("result")
 				tx := result.Data.(tmtypes.EventDataTx).Tx
 				nodeID := cfg.Node.NodeID
 				payload := &api.BlockChainTX{}
diff --git a/pkg/tendermint/fishhook/run b/pkg/tendermint/fishhook/run
deleted file mode 100755
index 1e44661..0000000
--- a/pkg/tendermint/fishhook/run
+++ /dev/null
@@ -1,2 +0,0 @@
-./fishhook /Users/chris/.milagro 34.246.173.153:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 1
-


[incubator-milagro-dta] 02/06: Merge branch 'tendermint' into fishhook

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit 93c4966cfc816da6c984a56527d2ee19b4b59b34
Merge: bf75aaf 2932457
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 08:56:54 2019 +0100

    Merge branch 'tendermint' into fishhook

 pkg/api/client.go           | 117 ++++++++++++++++++++++++++++++++++++++++++++
 pkg/defaultservice/order.go |  10 ++--
 pkg/endpoints/endpoints.go  |  20 ++++----
 pkg/service/service.go      |   4 +-
 4 files changed, 133 insertions(+), 18 deletions(-)


[incubator-milagro-dta] 04/06: Update fishhook

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit 7e811ee9389319b58ac94b02a3bd1242e858c5d7
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 11:09:54 2019 +0100

    Update fishhook
---
 go.sum                                    |   9 ++
 p                                         |   4 +-
 pkg/endpoints/endpoints.go                |   2 +-
 pkg/tendermint/cmd/fishhook.go            | 111 -------------------
 pkg/tendermint/fishhook/build             |   2 +
 pkg/tendermint/{cmd => fishhook}/fishhook | Bin 24169060 -> 29288396 bytes
 pkg/tendermint/fishhook/main.go           | 173 ++++++++++++++++++++++++++++++
 pkg/tendermint/fishhook/run               |   2 +
 8 files changed, 189 insertions(+), 114 deletions(-)

diff --git a/go.sum b/go.sum
index 46b42dc..58723e7 100644
--- a/go.sum
+++ b/go.sum
@@ -61,6 +61,7 @@ github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3yg
 github.com/go-playground/universal-translator v0.16.0 h1:X++omBR/4cE2MNg91AoC3rmGrCjJ8eAeUP/K/EKx4DM=
 github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
 github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o=
 github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
@@ -122,10 +123,14 @@ github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg
 github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
 github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g=
 github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
+github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5 h1:l16XLUUJ34wIz+RIvLhSwGvLvKyy+W598b135bJN6mg=
 github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mr-tron/base58 v1.1.2 h1:ZEw4I2EgPKDJ2iEw0cNmLB3ROrEmkOtXIkaG7wZg+78=
 github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
+github.com/multiformats/go-multihash v0.0.5 h1:1wxmCvTXAifAepIMyF39vZinRw5sbqjPs/UIi93+uik=
 github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mwitkow/go-proto-validators v0.1.0 h1:2Org0/cGKUUUDzoLSRSsGJDqyLWrb5lG57o5+QdRr8M=
@@ -138,6 +143,7 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU=
 github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
@@ -170,6 +176,7 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
 github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
 github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
 github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
@@ -181,6 +188,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stumble/gorocksdb v0.0.3/go.mod h1:v6IHdFBXk5DJ1K4FZ0xi+eY737quiiBxYtSWXadLybY=
 github.com/syndtr/goleveldb v1.0.1-0.20190318030020-c3a204f8e965 h1:1oFLiOyVl+W7bnBzGhf7BbIv9loSFQcieWWYIjLqcAw=
@@ -269,6 +277,7 @@ gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/p b/p
index 4d94421..320be46 100755
--- a/p
+++ b/p
@@ -1,6 +1,6 @@
 #!/bin/bash
-export ref=$(curl -s -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
+export ref=$(curl -s -X POST "127.0.0.1:5556/v1/order" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
 sleep 4
-curl -X POST "127.0.0.1:5556/v1/order/secret1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":\"$1\"}"
+curl -X POST "127.0.0.1:5556/v1/order/secret" -H "accept: */*" -H "Content-Type: application/json" -d "{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":\"$1\"}"
 
 
diff --git a/pkg/endpoints/endpoints.go b/pkg/endpoints/endpoints.go
index e046d83..1465c56 100644
--- a/pkg/endpoints/endpoints.go
+++ b/pkg/endpoints/endpoints.go
@@ -238,7 +238,7 @@ func MakeStatusEndpoint(m service.Service, log *logger.Logger, nodeType string)
 
 func validateRequest(req interface{}) error {
 	validate := validator.New()
-	validate.RegisterAlias("hashID", "min=40,max=64")
+	validate.RegisterAlias("hashID", "min=0,max=64")
 	if err := validate.Struct(req); err != nil {
 		return errors.Wrap(transport.ErrInvalidRequest, err.Error())
 	}
diff --git a/pkg/tendermint/cmd/fishhook.go b/pkg/tendermint/cmd/fishhook.go
deleted file mode 100644
index b3344a1..0000000
--- a/pkg/tendermint/cmd/fishhook.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package main
-
-import (
-	"encoding/base64"
-	"encoding/hex"
-	"encoding/json"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"net/http"
-	"os"
-	"time"
-
-	"github.com/TylerBrock/colorjson"
-	"github.com/apache/incubator-milagro-dta/pkg/tendermint"
-	"github.com/urfave/cli"
-)
-
-func main() {
-	app := cli.NewApp()
-	app.Name = "tmget"
-	app.Version = "0.1.0"
-	app.Compiled = time.Now()
-	app.Authors = []cli.Author{
-		cli.Author{
-			Name:  "Chris Morris",
-			Email: "chris@morris.net",
-		},
-	}
-	app.Copyright = "(c) 2019 Chris Morris"
-	app.UsageText = `tmget tag search [url]
-eg. tmget tag.recipient=Nzw3127EaxPiiZahOH592sGhPnCPaYkzOSqEk 127.0.0.1:5556
-    tmget tx Nzw3127EaxPiiZahOH592sGhPnCPaYkzOSqEk`
-
-	app.Usage = `retrieve and parse a transaction in the Qredo DT-A Format from a Tendermint Blockchain
-Note tags are case sensistive
-Qredo DT-A uses:
-  tag.recipient
-  tag.senderid
-  tag.reference
-  tx
-
-`
-
-	app.ArgsUsage = "tx"
-
-	app.Action = func(c *cli.Context) error {
-		tag := c.Args().Get(0)
-		lookup := "'" + c.Args().Get(1) + "'"
-
-		url := c.Args().Get(2)
-		//curl "localhost:26657/tx_search?query=\"tag.name='matts'\"&prove=true"
-		if url == "" {
-			url = "localhost:26657"
-		}
-		// if len(c.Args()) == 0 {
-		// 	print(app.UsageText)
-		// 	return nil
-		// }
-
-		fullUrl := "http://" + url + "/tx_search?query=\"" + tag + "=" + lookup + "\""
-		print(fullUrl)
-
-		resp, err := http.Get(fullUrl)
-		if err != nil {
-			// handle error
-		}
-		defer resp.Body.Close()
-		body, err := ioutil.ReadAll(resp.Body)
-
-		txResponse, err := tendermint.UnmarshalFetchTxResponse([]byte(body))
-
-		txs := txResponse.TResult.Txs
-		for r1, v := range txs {
-			for r2, v1 := range v.TxResult.Events {
-				for r3, v2 := range v1.Attributes {
-					newkey, _ := base64.StdEncoding.DecodeString(v2.Key)
-					txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Key = string(newkey)
-					newval, _ := base64.StdEncoding.DecodeString(v2.Value)
-					txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = string(newval)
-
-					if string(newkey) == "key" {
-						txResponse.TResult.Txs[r1].TxResult.Events[r2].Attributes[r3].Value = hex.EncodeToString(newval)
-					}
-				}
-			}
-		}
-
-		x, err := txResponse.Marshal()
-
-		var obj map[string]interface{}
-		json.Unmarshal(x, &obj)
-
-		//print(string(x))
-
-		// Make a custom formatter with indent set
-		f := colorjson.NewFormatter()
-		f.Indent = 4
-
-		// Marshall the Colorized JSON
-		s, _ := f.Marshal(obj)
-		fmt.Println(string(s))
-
-		return nil
-	}
-
-	err := app.Run(os.Args)
-	if err != nil {
-		log.Fatal(err)
-	}
-}
diff --git a/pkg/tendermint/fishhook/build b/pkg/tendermint/fishhook/build
new file mode 100755
index 0000000..f590499
--- /dev/null
+++ b/pkg/tendermint/fishhook/build
@@ -0,0 +1,2 @@
+go build -o fishhook main.go
+
diff --git a/pkg/tendermint/cmd/fishhook b/pkg/tendermint/fishhook/fishhook
similarity index 67%
rename from pkg/tendermint/cmd/fishhook
rename to pkg/tendermint/fishhook/fishhook
index 854a652..be3a244 100755
Binary files a/pkg/tendermint/cmd/fishhook and b/pkg/tendermint/fishhook/fishhook differ
diff --git a/pkg/tendermint/fishhook/main.go b/pkg/tendermint/fishhook/main.go
new file mode 100644
index 0000000..3f4dd4c
--- /dev/null
+++ b/pkg/tendermint/fishhook/main.go
@@ -0,0 +1,173 @@
+package main
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"log"
+	"os"
+	"path/filepath"
+	"strconv"
+	"time"
+
+	"github.com/apache/incubator-milagro-dta/libs/documents"
+	"github.com/apache/incubator-milagro-dta/libs/keystore"
+	"github.com/apache/incubator-milagro-dta/pkg/api"
+	"github.com/apache/incubator-milagro-dta/pkg/config"
+	"github.com/apache/incubator-milagro-dta/pkg/identity"
+	"github.com/hokaccha/go-prettyjson"
+	tmclient "github.com/tendermint/tendermint/rpc/client"
+	tmtypes "github.com/tendermint/tendermint/types"
+	"github.com/urfave/cli"
+)
+
+const (
+	envMilagroHome = "MILAGRO_HOME"
+	keysFile       = "keys"
+
+	cmdInit   = "init"
+	cmdDaemon = "daemon"
+)
+
+func main() {
+	app := cli.NewApp()
+	app.Name = "tmget"
+	app.Version = "0.1.0"
+	app.Compiled = time.Now()
+	app.Authors = []cli.Author{
+		cli.Author{
+			Name:  "Chris Morris",
+			Email: "chris@morris.net",
+		},
+	}
+	app.Copyright = "(c) 2019 Chris Morris"
+	app.UsageText = `fishhook configdir nodeurl query skip
+eg. fishhook /Users/john/.milagro 10.10,10,10:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 3
+
+configdir - the local directory where the DT-A configuration (eg. config.yaml, keys) are stored
+nodeurl   - the host:port of a member Node of the Tendermint Network
+query     - A query to filter the results by (enclosed query in double quotes and values in single quotes)
+skip      - number of matches to skip before showing match and terminating
+`
+	app.Usage = `retrieve and parse a transaction in the Qredo DT-A Format from a Tendermint Blockchain
+Note tags are case sensistive
+`
+
+	app.Action = func(c *cli.Context) error {
+		folder := c.Args().Get(0)
+		host := c.Args().Get(1)
+		query := c.Args().Get(2)
+		skip, err := strconv.Atoi(c.Args().Get(3))
+
+		if err != nil {
+			print("Invalid skip value\n")
+			os.Exit(1)
+		}
+
+		if len(c.Args()) != 4 {
+			print(app.UsageText)
+			os.Exit(1)
+			return nil
+		}
+
+		cfg, err := parseConfig(folder)
+		if err != nil {
+			print("Failed to open config")
+			os.Exit(1)
+		}
+
+		keyStore, err := keystore.NewFileStore(filepath.Join(folder, keysFile))
+		if err != nil {
+			print("Fail to open keystore")
+			os.Exit(1)
+		}
+
+		keyseed, err := keyStore.Get("seed")
+		if err != nil {
+			print("Fail to retrieve keyseed")
+			os.Exit(1)
+		}
+
+		_, sikeSK, err := identity.GenerateSIKEKeys(keyseed)
+		if err != nil {
+			print("Fail to retrieve sikeSK")
+			os.Exit(1)
+		}
+		blsPk, _, err := identity.GenerateBLSKeys(keyseed)
+		if err != nil {
+			print("Fail to retrieve blsSK")
+			os.Exit(1)
+		}
+
+		//connect to Node
+		tmClient := tmclient.NewHTTP(fmt.Sprintf("tcp://%s", host), "/websocket")
+		if err := tmClient.Start(); err != nil {
+			print("Failed to open websocket")
+			os.Exit(1)
+		}
+
+		out, err := tmClient.Subscribe(context.Background(), "", query, 1000)
+		if err != nil {
+			print("Failed to subscribe to node")
+			os.Exit(1)
+		}
+
+		matchCount := 0
+		for {
+			select {
+			case result := <-out:
+				matchCount++
+				if matchCount != skip {
+					continue
+				}
+
+				print("result")
+				tx := result.Data.(tmtypes.EventDataTx).Tx
+				nodeID := cfg.Node.NodeID
+				payload := &api.BlockChainTX{}
+				err := json.Unmarshal(tx, payload)
+				if err != nil {
+					print("Invalid Transaction received")
+					os.Exit(1)
+				}
+
+				//dump
+				order := &documents.OrderDoc{}
+				err = documents.DecodeOrderDocument(payload.Payload, "", order, sikeSK, nodeID, blsPk)
+
+				pp, _ := prettyjson.Marshal(order)
+				fmt.Println(string(pp))
+				os.Exit(0)
+			}
+		}
+	}
+
+	err := app.Run(os.Args)
+	if err != nil {
+		log.Fatal(err)
+	}
+}
+
+func getEnv(name, defaultValue string) string {
+	v, ok := os.LookupEnv(name)
+	if !ok {
+		return defaultValue
+	}
+
+	return v
+}
+
+func parseConfig(folder string) (*config.Config, error) {
+	cfg, err := config.ParseConfig(folder)
+	if err != nil {
+		return nil, err
+	}
+	return cfg, nil
+}
+
+//Use - helper to remove warnings
+func Use(vals ...interface{}) {
+	for _, val := range vals {
+		_ = val
+	}
+}
diff --git a/pkg/tendermint/fishhook/run b/pkg/tendermint/fishhook/run
new file mode 100755
index 0000000..1e44661
--- /dev/null
+++ b/pkg/tendermint/fishhook/run
@@ -0,0 +1,2 @@
+./fishhook /Users/chris/.milagro 34.246.173.153:26657 "tag.recipient='Au1WipqVeTx9i2PV4UcCxmY6iQvA9RZXy88xJLRzafwc'" 1
+


[incubator-milagro-dta] 01/06: Add fishhook

Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch tendermint
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit bf75aaf87d4437594687e1766dd11d09c23f1076
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Wed Oct 9 08:55:54 2019 +0100

    Add fishhook
---
 go.sum                                       |   5 +++
 pkg/tendermint/cmd/{tmget.go => fishhook.go} |   0
 pkg/tendermint/cmd/tmget                     | Bin 0 -> 28468644 bytes
 pkg/tendermint/transactions.go               |  60 +++++++++++++++++++++++++++
 4 files changed, 65 insertions(+)

diff --git a/go.sum b/go.sum
index 2dc56bc..46b42dc 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,7 @@
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/TylerBrock/colorjson v0.0.0-20180527164720-95ec53f28296 h1:JYWTroLXcNzSCgu66NMgdjwoMHQRbv2SoOVNFb4kRkE=
 github.com/TylerBrock/colorjson v0.0.0-20180527164720-95ec53f28296/go.mod h1:VSw57q4QFiWDbRnjdX8Cb3Ow0SFncRw+bA/ofY6Q83w=
 github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
 github.com/Workiva/go-datastructures v1.0.50/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA=
@@ -32,6 +33,7 @@ github.com/coreos/go-oidc v2.0.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHo
 github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
+github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -160,7 +162,9 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
 github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 github.com/rs/zerolog v1.15.0 h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=
 github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
+github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4=
@@ -191,6 +195,7 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1
 github.com/tyler-smith/go-bip39 v1.0.0 h1:FOHg9gaQLeBBRbHE/QrTLfEiBHy5pQ/yXzf9JG5pYFM=
 github.com/tyler-smith/go-bip39 v1.0.0/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
+github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
diff --git a/pkg/tendermint/cmd/tmget.go b/pkg/tendermint/cmd/fishhook.go
similarity index 100%
rename from pkg/tendermint/cmd/tmget.go
rename to pkg/tendermint/cmd/fishhook.go
diff --git a/pkg/tendermint/cmd/tmget b/pkg/tendermint/cmd/tmget
new file mode 100755
index 0000000..27ede0c
Binary files /dev/null and b/pkg/tendermint/cmd/tmget differ
diff --git a/pkg/tendermint/transactions.go b/pkg/tendermint/transactions.go
new file mode 100644
index 0000000..c4d8233
--- /dev/null
+++ b/pkg/tendermint/transactions.go
@@ -0,0 +1,60 @@
+package tendermint
+
+import "encoding/json"
+
+func UnmarshalFetchTxResponse(data []byte) (FetchTxResponse, error) {
+	var r FetchTxResponse
+	err := json.Unmarshal(data, &r)
+	return r, err
+}
+
+func (r *FetchTxResponse) Marshal() ([]byte, error) {
+	return json.Marshal(r)
+}
+
+func UnmarshalAttribute(data []byte) (Attribute, error) {
+	var r Attribute
+	print("hello")
+	err := json.Unmarshal(data, &r)
+	return r, err
+}
+
+type FetchTxResponse struct {
+	ID      string  `json:"id"`
+	Jsonrpc string  `json:"jsonrpc"`
+	TResult TResult `json:"result"`
+}
+
+type TResult struct {
+	TotalCount string `json:"total_count"`
+	Txs        []Tx   `json:"txs"`
+}
+
+type Tx struct {
+	Hash     string   `json:"hash"`
+	Height   string   `json:"height"`
+	Index    int64    `json:"index"`
+	Tx       string   `json:"tx"`
+	TxResult TxResult `json:"tx_result"`
+}
+
+type TxResult struct {
+	Code      int64       `json:"code"`
+	Codespace string      `json:"codespace"`
+	Data      interface{} `json:"data"`
+	Events    []Event     `json:"events"`
+	GasUsed   string      `json:"gasUsed"`
+	GasWanted string      `json:"gasWanted"`
+	Info      string      `json:"info"`
+	Log       string      `json:"log"`
+}
+
+type Event struct {
+	Attributes []Attribute `json:"attributes"`
+	Type       string      `json:"type"`
+}
+
+type Attribute struct {
+	Key   string `json:"key"`
+	Value string `json:"value"`
+}