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

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


The following commit(s) were added to refs/heads/splitroles-blockchain by this 
push:
     new ff784bb  Tidy up beneficiary
ff784bb is described below

commit ff784bb6dbcdb4a82b9fb014feb6ef69a41e78d1
Author: Christopher Morris <[email protected]>
AuthorDate: Fri Sep 27 09:51:58 2019 +0100

    Tidy up beneficiary
---
 !notes                           |  11 ++-
 cmd/service/main.go              |  11 +--
 cmd/servicetester/tendertest1.sh |   8 ++
 pkg/bitcoinplugin/helpers.go     |   5 +-
 pkg/defaultservice/fulfill.go    |   2 +
 pkg/defaultservice/order.go      | 188 +++------------------------------------
 pkg/tendermint/config.go         |   3 +-
 pkg/tendermint/tendermint.go     |   4 +-
 pkg/tendermint/websockets.go     |  12 ++-
 9 files changed, 53 insertions(+), 191 deletions(-)

diff --git a/!notes b/!notes
index 25596f0..63605f8 100644
--- a/!notes
+++ b/!notes
@@ -1,2 +1,9 @@
-curl -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H "Content-Type: 
application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}"
-curl -X POST "127.0.0.1:5556/v1/order/secret1" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"orderReference\":\"1daef6ba-df9e-11e9-b3b8-acde48001122\",\"beneficiaryIDDocumentCID\":\"QmcyJqEMqNEEYHrNSyUY83CQCNwZ5yVan3SgaQ4NchsqsC\"}"
\ No newline at end of file
+
+Empty:
+ref=$(curl -s -X POST "127.0.0.1:5556/v1/order1" -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\":\"QmcyJqEMqNEEYHrNSyUY83CQCNwZ5yVan3SgaQ4NchsqsC\"}"
+
+
+Define at start:
+ref=$(curl -s -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"QmcyJqEMqNEEYHrNSyUY83CQCNwZ5yVan3SgaQ4NchsqsC\",\"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\":\"\"}"
+
+
diff --git a/cmd/service/main.go b/cmd/service/main.go
index 944d373..9548f0a 100644
--- a/cmd/service/main.go
+++ b/cmd/service/main.go
@@ -146,11 +146,6 @@ func startDaemon(args []string) error {
                return errors.Wrap(err, "init logger")
        }
 
-       go tendermint.Subscribe(logger, cfg.Node.NodeID, cfg.HTTP.ListenAddr)
-       if err != nil {
-               return errors.Wrap(err, "init Tendermint Blockchain")
-       }
-
        // Create KV store
        logger.Info("Datastore type: %s", cfg.Node.Datastore)
        store, err := initDataStore(cfg.Node.Datastore)
@@ -158,6 +153,12 @@ func startDaemon(args []string) error {
                return errors.Wrap(err, "init datastore")
        }
 
+       //Connect to Blockchain - Tendermint
+       go tendermint.Subscribe(store, logger, cfg.Node.NodeID, 
cfg.HTTP.ListenAddr)
+       if err != nil {
+               return errors.Wrap(err, "init Tendermint Blockchain")
+       }
+
        logger.Info("IPFS connector type: %s", cfg.IPFS.Connector)
        var ipfsConnector ipfs.Connector
        switch cfg.IPFS.Connector {
diff --git a/cmd/servicetester/tendertest1.sh b/cmd/servicetester/tendertest1.sh
new file mode 100755
index 0000000..64fc139
--- /dev/null
+++ b/cmd/servicetester/tendertest1.sh
@@ -0,0 +1,8 @@
+ref=$(curl -s -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
+
+#sleep long enough for blockchain to catch up
+sleep 4
+
+curl -X POST "127.0.0.1:5556/v1/order/secret1" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"orderReference\":$ref,\"beneficiaryIDDocumentCID\":\"QmcyJqEMqNEEYHrNSyUY83CQCNwZ5yVan3SgaQ4NchsqsC\"}"
+
+
diff --git a/pkg/bitcoinplugin/helpers.go b/pkg/bitcoinplugin/helpers.go
index b1a15f2..310d833 100644
--- a/pkg/bitcoinplugin/helpers.go
+++ b/pkg/bitcoinplugin/helpers.go
@@ -125,7 +125,7 @@ func generateFinalPubKey(s *Service, pubKeyPart2of2 string, 
order documents.Orde
        coinType := order.Coin
        var pubKeyPart1of2 string
 
-       if beneficiaryIDDocumentCID == "" {
+       if order.BeneficiaryType == 
documents.OrderDocument_Beneficiary_Unknown_at_Start {
                //There is no beneficiary ID so we do it all locally based on
                //Retrieve the Local Seed
                seedHex, err := common.RetrieveSeed(s.Store, order.Reference)
@@ -148,7 +148,7 @@ func generateFinalPubKey(s *Service, pubKeyPart2of2 string, 
order documents.Orde
                }
        }
 
-       if beneficiaryIDDocumentCID != "" {
+       if order.BeneficiaryType == 
documents.OrderDocument_Beneficiary_Known_at_start {
                //There is a BeneficiaryID use it to generate the key
                //Get beneficiary's identity out of IPFS
                id := &documents.IDDoc{}
@@ -173,7 +173,6 @@ func generateFinalPubKey(s *Service, pubKeyPart2of2 string, 
order documents.Orde
                return "", "", err
        }
        return finalPublicKey, addressForPublicKey, nil
-
 }
 
 //AddPrivateKeys Perform eliptical key additon on 2 privates keys
diff --git a/pkg/defaultservice/fulfill.go b/pkg/defaultservice/fulfill.go
index 4a8c827..6f457c8 100644
--- a/pkg/defaultservice/fulfill.go
+++ b/pkg/defaultservice/fulfill.go
@@ -82,6 +82,7 @@ func (s *Service) FulfillOrder(req *api.FulfillOrderRequest) 
(string, error) {
                SenderID:    nodeID,
                RecipientID: []string{order.PrincipalCID, nodeID},
                Payload:     marshaledRequest,
+               Tags:        map[string]string{"reference": order.Reference},
        }
        return tendermint.PostToChain(chainTX, "FulfillOrder")
 
@@ -144,6 +145,7 @@ func (s *Service) FulfillOrderSecret(req 
*api.FulfillOrderSecretRequest) (string
                SenderID:    nodeID,
                RecipientID: []string{s.MasterFiduciaryNodeID(), 
order.BeneficiaryCID},
                Payload:     marshaledRequest,
+               Tags:        map[string]string{"reference": order.Reference},
        }
        return tendermint.PostToChain(chainTX, "FulfillOrderSecret")
 }
diff --git a/pkg/defaultservice/order.go b/pkg/defaultservice/order.go
index 95d8697..778189d 100644
--- a/pkg/defaultservice/order.go
+++ b/pkg/defaultservice/order.go
@@ -121,97 +121,6 @@ func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, 
order, orderPart4 *doc
        return finalPrivateKey, finalPublicKey, nil, err
 }
 
-// OrderSecret -
-//func (s *Service) OrderSecret(req *api.OrderSecretRequest) 
(*api.OrderSecretResponse, error) {
-// orderReference := req.OrderReference
-// var orderPart2CID string
-// if err := s.Store.Get("order", orderReference, &orderPart2CID); err != nil {
-//     return nil, err
-// }
-
-// nodeID := s.NodeID()
-// recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, 
s.MasterFiduciaryNodeID())
-// if err != nil {
-//     return nil, err
-// }
-// remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, 
s.MasterFiduciaryNodeID())
-// if err != nil {
-//     return nil, err
-// }
-
-// _, _, blsSK, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID)
-// if err != nil {
-//     return nil, err
-// }
-
-// //Retrieve the order from IPFS
-
-// order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart2CID, sikeSK, 
nodeID, remoteIDDoc.BLSPublicKey)
-// if err != nil {
-//     return nil, errors.Wrap(err, "Fail to retrieve Order from IPFS")
-// }
-
-// if err := s.Plugin.ValidateOrderSecretRequest(req, *order); err != nil {
-//     return nil, err
-// }
-
-// var beneficiariesSikeSK []byte
-// var beneficiaryCID string
-
-// if req.BeneficiaryIDDocumentCID != "" {
-//     beneficiaryCID = req.BeneficiaryIDDocumentCID
-// } else {
-//     beneficiaryCID = order.BeneficiaryCID
-// }
-
-// _, beneficiariesSeed, _, beneficiariesSikeSK, err := 
common.RetrieveIdentitySecrets(s.Store, beneficiaryCID)
-// if err != nil {
-//     return nil, err
-// }
-
-// //Create a piece of data that is destined for the beneficiary, passed via 
the Master Fiduciary
-
-// beneficiaryEncryptedData, extension, err := 
s.Plugin.ProduceBeneficiaryEncryptedData(blsSK, order, req)
-// if err != nil {
-//     return nil, err
-// }
-
-// //Create a request Object in IPFS
-// orderPart3CID, err := common.CreateAndStorePart3(s.Ipfs, s.Store, order, 
orderPart2CID, nodeID, beneficiaryEncryptedData, recipientList)
-// if err != nil {
-//     return nil, err
-// }
-
-// //Post the address of the updated doc to the custody node
-// request := &api.FulfillOrderSecretRequest{
-//     SenderDocumentCID: nodeID,
-//     OrderPart3CID:     orderPart3CID,
-//     Extension:         extension,
-// }
-// response, err := s.MasterFiduciaryServer.FulfillOrderSecret(request)
-// if err != nil {
-//     return nil, err
-// }
-
-// //Retrieve the response Order from IPFS
-// orderPart4, err := common.RetrieveOrderFromIPFS(s.Ipfs, 
response.OrderPart4CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
-// if err != nil {
-//     return nil, err
-// }
-
-// finalPrivateKey, finalPublicKey, ext, err := 
s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, order, 
orderPart4, beneficiaryCID)
-// if err != nil {
-//     return nil, err
-// }
-
-// return &api.OrderSecretResponse{
-//     Secret:         finalPrivateKey,
-//     Commitment:     finalPublicKey,
-//     OrderReference: order.Reference,
-//     Extension:      ext,
-// }, nil
-//}
-
 // Order1 -
 func (s *Service) Order1(req *api.OrderRequest) (string, error) {
        if err := s.Plugin.ValidateOrderRequest(req); err != nil {
@@ -226,11 +135,6 @@ func (s *Service) Order1(req *api.OrderRequest) (string, 
error) {
                return "", err
        }
 
-       // remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, 
s.MasterFiduciaryNodeID())
-       // if err != nil {
-       //      return "", err
-       // }
-
        //Create Order
        order, err := common.CreateNewDepositOrder(beneficiaryIDDocumentCID, 
nodeID)
        if err != nil {
@@ -263,74 +167,21 @@ func (s *Service) Order1(req *api.OrderRequest) (string, 
error) {
                SenderID:    nodeID,
                RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
                Payload:     marshaledRequest,
+               Tags:        map[string]string{"reference": order.Reference},
        }
-       //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
-
        tendermint.PostToChain(chainTX, "Order1")
        return order.Reference, nil
 }
 
 // Order2 -
 func (s *Service) Order2(req *api.FulfillOrderResponse) (string, error) {
-       // if err := s.Plugin.ValidateOrderRequest(req); err != nil {
-       //      return "", err
-       // }
-
-       // //Initialise values from Request object
-       // beneficiaryIDDocumentCID := req.BeneficiaryIDDocumentCID
        nodeID := s.NodeID()
-       // recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, 
s.MasterFiduciaryNodeID())
-       // if err != nil {
-       //      return "", err
-       // }
 
        remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, 
s.MasterFiduciaryNodeID())
        if err != nil {
                return "", err
        }
 
-       // //Create Order
-       // order, err := common.CreateNewDepositOrder(beneficiaryIDDocumentCID, 
nodeID)
-       // if err != nil {
-       //      return "", err
-       // }
-
-       // fulfillExtension, err := s.Plugin.PrepareOrderPart1(order, 
req.Extension)
-       // if err != nil {
-       //      return "", err
-       // }
-
-       // //Write Order to IPFS
-       // orderPart1CID, err := common.WriteOrderToIPFS(nodeID, s.Ipfs, 
s.Store, nodeID, order, recipientList)
-       // if err != nil {
-       //      return "", err
-       // }
-
-       // //Fullfill the order on the remote Server
-       // request := &api.FulfillOrderRequest{
-       //      DocumentCID:   nodeID,
-       //      OrderPart1CID: orderPart1CID,
-       //      Extension:     fulfillExtension,
-       // }
-
-       // marshaledRequest, _ := json.Marshal(request)
-
-       // //Write the requests to the chain
-       // chainTX := &api.BlockChainTX{
-       //      Type:        api.TXFullfullRequest,
-       //      SenderID:    nodeID,
-       //      RecipientID: s.MasterFiduciaryNodeID(),
-       //      Payload:     marshaledRequest,
-       // }
-       // //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
-
-       // tendermint.PostToChain(chainTX)
-
-       //  response, err := s.MasterFiduciaryServer.FulfillOrder(request)
-       //  if err != nil {
-       //      return "", errors.Wrap(err, "Contacting Fiduciary")
-       //  }
-
        //Get the updated order out of IPFS
        _, _, _, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID)
        if err != nil {
@@ -365,7 +216,7 @@ func (s *Service) Order2(req *api.FulfillOrderResponse) 
(string, error) {
        //Write the requests to the chain
        chainTX := &api.BlockChainTX{
                Processor:   api.TXOrderSecretResponse,
-               SenderID:    nodeID,
+               SenderID:    "",
                RecipientID: []string{s.MasterFiduciaryNodeID(), nodeID},
                Payload:     marshaledRequest,
                Tags:        map[string]string{"reference": 
updatedOrder.Reference},
@@ -416,12 +267,11 @@ func (s *Service) OrderSecret1(req 
*api.OrderSecretRequest) (string, error) {
                return "", err
        }
 
-       //Create a piece of data that is destined for the beneficiary, passed 
via the Master Fiduciary
-
        if req.BeneficiaryIDDocumentCID != "" {
                order.BeneficiaryCID = req.BeneficiaryIDDocumentCID
        }
 
+       //Create a piece of data that is destined for the beneficiary, passed 
via the Master Fiduciary
        beneficiaryEncryptedData, extension, err := 
s.Plugin.ProduceBeneficiaryEncryptedData(blsSK, order, req)
        if err != nil {
                return "", err
@@ -448,9 +298,8 @@ func (s *Service) OrderSecret1(req *api.OrderSecretRequest) 
(string, error) {
                SenderID:    nodeID,
                RecipientID: []string{s.MasterFiduciaryNodeID()},
                Payload:     marshaledRequest,
+               Tags:        map[string]string{"reference": order.Reference},
        }
-       //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
-
        return tendermint.PostToChain(chainTX, "OrderSecret1")
 }
 
@@ -467,32 +316,19 @@ func (s *Service) OrderSecret2(req 
*api.FulfillOrderSecretResponse) (string, err
                return "", err
        }
 
-       // localIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, s.NodeID())
-       // if err != nil {
-       //      return "", err
-       // }
-
        //Retrieve the response Order from IPFS
        orderPart4, err := common.RetrieveOrderFromIPFS(s.Ipfs, 
req.OrderPart4CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
-       // if err != nil {
-       //      //check if we are re-trying the call, so the OrderDoc is 
locally signed
-       //      orderPart4, err = common.RetrieveOrderFromIPFS(s.Ipfs, 
req.OrderPart4CID, sikeSK, nodeID, localIDDoc.BLSPublicKey)
-       //      if err != nil {
-       //              return "", errors.Wrap(err, "Fail to retrieve Order 
from IPFS")
-       //      }
-       // }
-
-       var beneficiariesSikeSK []byte
-       var beneficiaryCID string
 
-       beneficiaryCID = orderPart4.BeneficiaryCID
+       if orderPart4.BeneficiaryCID != nodeID {
+               return "", errors.New("Invalid Processor")
+       }
 
-       _, beneficiariesSeed, _, beneficiariesSikeSK, err := 
common.RetrieveIdentitySecrets(s.Store, beneficiaryCID)
+       _, seed, _, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, 
nodeID)
        if err != nil {
                return "", err
        }
 
-       finalPrivateKey, finalPublicKey, ext, err := 
s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, orderPart4, 
orderPart4, beneficiaryCID)
+       finalPrivateKey, finalPublicKey, ext, err := 
s.Plugin.ProduceFinalSecret(seed, sikeSK, orderPart4, orderPart4, nodeID)
        if err != nil {
                return "", err
        }
@@ -510,11 +346,9 @@ func (s *Service) OrderSecret2(req 
*api.FulfillOrderSecretResponse) (string, err
        chainTX := &api.BlockChainTX{
                Processor:   api.TXOrderSecretResponse, //NONE
                SenderID:    "",                        // so we can view it
-               RecipientID: []string{beneficiaryCID},
+               RecipientID: []string{nodeID},          //don't send this to 
chain, seed compromise becomes fatal, sent just debugging
                Payload:     marshaledRequest,
+               Tags:        map[string]string{"reference": 
orderPart4.Reference, "part": "4"},
        }
-       //curl --data-binary 
'{"jsonrpc":"2.0","id":"anything","method":"broadcast_tx_commit","params": 
{"tx": "YWFhcT1hYWFxCg=="}}' -H 'content-type:text/plain;' 
http://localhost:26657
-
        return tendermint.PostToChain(chainTX, "OrderSecret2")
-
 }
diff --git a/pkg/tendermint/config.go b/pkg/tendermint/config.go
index 6d20001..510189d 100644
--- a/pkg/tendermint/config.go
+++ b/pkg/tendermint/config.go
@@ -1,5 +1,6 @@
 package tendermint
 
 const (
-       node = "127.0.0.1:26657"
+       //node = "127.0.0.1:26657"
+       node = "34.246.173.153:26657"
 )
diff --git a/pkg/tendermint/tendermint.go b/pkg/tendermint/tendermint.go
index ab162bf..1e46497 100644
--- a/pkg/tendermint/tendermint.go
+++ b/pkg/tendermint/tendermint.go
@@ -54,7 +54,9 @@ func PostToChain(tx *api.BlockChainTX, method string) 
(string, error) {
        base64EncodedTX := base64.StdEncoding.EncodeToString(serializedTX)
 
        body := 
strings.NewReader("{\"jsonrpc\":\"2.0\",\"id\":\"anything\",\"method\":\"broadcast_tx_commit\",\"params\":
 {\"tx\": \"" + base64EncodedTX + "\"}}")
-       req, err := http.NewRequest("POST", "http://"+node+"";, body)
+       url := "http://"; + node + ""
+
+       req, err := http.NewRequest("POST", url, body)
        if err != nil {
                print("Error posting to Blockchain")
                return "", err
diff --git a/pkg/tendermint/websockets.go b/pkg/tendermint/websockets.go
index 1e21a12..aba13de 100644
--- a/pkg/tendermint/websockets.go
+++ b/pkg/tendermint/websockets.go
@@ -8,16 +8,23 @@ import (
        "os/signal"
        "syscall"
 
+       "github.com/apache/incubator-milagro-dta/libs/datastore"
        "github.com/apache/incubator-milagro-dta/libs/logger"
        "github.com/apache/incubator-milagro-dta/pkg/api"
        tmclient "github.com/tendermint/tendermint/rpc/client"
        tmtypes "github.com/tendermint/tendermint/types"
 )
 
+func catchUp(store *datastore.Store, logger *logger.Logger, nodeID string, 
listenPort string) error {
+
+       return nil
+}
+
 //Subscribe - Connect to the Tendermint websocket to collect events
-func Subscribe(logger *logger.Logger, nodeID string, listenPort string) error {
+func Subscribe(store *datastore.Store, logger *logger.Logger, nodeID string, 
listenPort string) error {
 
-       //tmlogger := log2.NewTMLogger(log.NewSyncWriter(os.Stdout))
+       //first catch up to Tip of chain
+       //catchUp(store, logger, nodeID, listenPort)
 
        client := tmclient.NewHTTP("tcp://"+node+"", "/websocket")
        //client.SetLogger(tmlogger)
@@ -28,6 +35,7 @@ func Subscribe(logger *logger.Logger, nodeID string, 
listenPort string) error {
        }
        defer client.Stop()
 
+       //curl 
"34.246.173.153:26657/tx_search?query=\"tag.part=4%20AND%20tag.reference='579a2864-e100-11e9-aaf4-acde48001122'\""
        query := "tag.recipient='" + nodeID + "'"
        //query := "tm.event = 'Tx'"
 

Reply via email to