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
commit 29fd4b0e7475bbd47cb2eefd56093638fa2148d0 Author: Christopher Morris <[email protected]> AuthorDate: Fri Sep 6 12:38:48 2019 +0100 Added OrderSecret - beneficiary forced --- cmd/service/__debug_bin | Bin 51482340 -> 51502716 bytes pkg/api/proto.go | 5 ++ pkg/bitcoinplugin/helpers.go | 56 ++++++++-------- pkg/bitcoinplugin/service.go | 4 +- pkg/defaultservice/fulfill.go | 33 ++++++--- pkg/defaultservice/order.go | 138 ++++++++++++++++++++++++++++++++++++-- pkg/defaultservice/plugable.go | 2 +- pkg/endpoints/endpoints.go | 60 ++++++++++++++++- pkg/safeguardsecret/service.go | 7 +- pkg/service/service.go | 7 +- pkg/tendermint/tendermint_test.go | 2 +- 11 files changed, 259 insertions(+), 55 deletions(-) diff --git a/cmd/service/__debug_bin b/cmd/service/__debug_bin index c1d3957..6c8eaf9 100755 Binary files a/cmd/service/__debug_bin and b/cmd/service/__debug_bin differ diff --git a/pkg/api/proto.go b/pkg/api/proto.go index 6232d21..7fabe27 100644 --- a/pkg/api/proto.go +++ b/pkg/api/proto.go @@ -33,6 +33,11 @@ const ( TXFulfillRequest = "v1/fulfill/order" TXFulfillResponse = "v1/order2" TXOrderResponse = "NONE" + + TXOrderSecretRequest = "v1/order/secret1" + TXFulfillOrderSecretRequest = "v1/fulfill/order/secret" + TXFulfillOrderSecretResponse = "v1/order/secret2" + TXOrderSecretResponse = "NONE" ) //BlockChainTX - struct for on chain req/resp diff --git a/pkg/bitcoinplugin/helpers.go b/pkg/bitcoinplugin/helpers.go index eb65167..ec639e7 100644 --- a/pkg/bitcoinplugin/helpers.go +++ b/pkg/bitcoinplugin/helpers.go @@ -31,43 +31,43 @@ import ( ) func deriveFinalPrivateKey(s *Service, order documents.OrderDoc, beneficiariesSikeSK []byte, beneficiariesSeed []byte, beneficiaryIDDocumentCID string, nodeID string, signingBlsPK []byte) (string, error) { - if beneficiaryIDDocumentCID != "" { - //we are using the beneficiary specified in order Part 3 - beneficiaryBlob := order.OrderPart3.BeneficiaryEncryptedData - - //Decrypt the Envelope intented for the Beneficiary - privateKeyPart1of1, err := adhocEncryptedEnvelopeDecode(s, beneficiariesSikeSK, beneficiaryBlob, beneficiaryIDDocumentCID, signingBlsPK) - if err != nil { - return "", err - } - //Calculate the final private key by Eliptical Key addition of both parts - privateKeyPart2of2 := order.OrderDocument.OrderPart4.Secret - - finalPrivateKey, err := addPrivateKeys(privateKeyPart1of1, privateKeyPart2of2) - - if err != nil { - return "", err - } - return finalPrivateKey, err - } + //if beneficiaryIDDocumentCID != "" { + //we are using the beneficiary specified in order Part 3 + beneficiaryBlob := order.OrderPart3.BeneficiaryEncryptedData - //we are using the beneficiary specified in the order part 1 - privateKeyPart2of2 := order.OrderDocument.OrderPart4.Secret - // if order.OrderDocument.BeneficiaryCID != nodeID { - // //need to forward this data to the beneficiary to complete redemption - // return "", errors.New("Currently beneficiary must be the same as the Principal") - // } - //restore the Seed - _, _, ecAddPrivateKey, err := cryptowallet.Bip44Address(beneficiariesSeed, cryptowallet.CoinTypeBitcoinMain, 0, 0, 0) + //Decrypt the Envelope intented for the Beneficiary + privateKeyPart1of1, err := adhocEncryptedEnvelopeDecode(s, beneficiariesSikeSK, beneficiaryBlob, beneficiaryIDDocumentCID, signingBlsPK) if err != nil { return "", err } - privateKeyPart1of1 := hex.EncodeToString(ecAddPrivateKey.Serialize()) + //Calculate the final private key by Eliptical Key addition of both parts + privateKeyPart2of2 := order.OrderDocument.OrderPart4.Secret + finalPrivateKey, err := addPrivateKeys(privateKeyPart1of1, privateKeyPart2of2) + if err != nil { return "", err } return finalPrivateKey, err + //} + + // //we are using the beneficiary specified in the order part 1 + // privateKeyPart2of2 := order.OrderDocument.OrderPart4.Secret + // // if order.OrderDocument.BeneficiaryCID != nodeID { + // // //need to forward this data to the beneficiary to complete redemption + // // return "", errors.New("Currently beneficiary must be the same as the Principal") + // // } + // //restore the Seed + // _, _, ecAddPrivateKey, err := cryptowallet.Bip44Address(beneficiariesSeed, cryptowallet.CoinTypeBitcoinMain, 0, 0, 0) + // if err != nil { + // return "", err + // } + // privateKeyPart1of1 := hex.EncodeToString(ecAddPrivateKey.Serialize()) + // finalPrivateKey, err := addPrivateKeys(privateKeyPart1of1, privateKeyPart2of2) + // if err != nil { + // return "", err + // } + // return finalPrivateKey, err } diff --git a/pkg/bitcoinplugin/service.go b/pkg/bitcoinplugin/service.go index f087855..fdf3d4b 100644 --- a/pkg/bitcoinplugin/service.go +++ b/pkg/bitcoinplugin/service.go @@ -114,14 +114,14 @@ func (s *Service) ProduceBeneficiaryEncryptedData(blsSK []byte, order *documents } // ProduceFinalSecret - -func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, req *api.OrderSecretRequest, fulfillSecretRespomse *api.FulfillOrderSecretResponse) (secret, commitment string, extension map[string]string, err error) { +func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, beneficiaryIDDocumentCID string) (secret, commitment string, extension map[string]string, err error) { //retrieve principal IDDoc principalDocID, err := common.RetrieveIDDocFromIPFS(s.Ipfs, order.PrincipalCID) if err != nil { return "", "", nil, err } - finalPrivateKey, err := deriveFinalPrivateKey(s, *orderPart4, sikeSK, seed, req.BeneficiaryIDDocumentCID, s.NodeID(), principalDocID.BLSPublicKey) + finalPrivateKey, err := deriveFinalPrivateKey(s, *orderPart4, sikeSK, seed, beneficiaryIDDocumentCID, s.NodeID(), principalDocID.BLSPublicKey) if err != nil { return "", "", nil, err } diff --git a/pkg/defaultservice/fulfill.go b/pkg/defaultservice/fulfill.go index e3b54d6..26be911 100644 --- a/pkg/defaultservice/fulfill.go +++ b/pkg/defaultservice/fulfill.go @@ -89,51 +89,64 @@ func (s *Service) FulfillOrder(req *api.FulfillOrderRequest) (string, error) { } // FulfillOrderSecret - -func (s *Service) FulfillOrderSecret(req *api.FulfillOrderSecretRequest) (*api.FulfillOrderSecretResponse, error) { +func (s *Service) FulfillOrderSecret(req *api.FulfillOrderSecretRequest) (string, error) { //Initialise values from Request object orderPart3CID := req.OrderPart3CID nodeID := s.NodeID() remoteIDDocCID := req.SenderDocumentCID _, _, _, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID) if err != nil { - return nil, err + return "", err } remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, remoteIDDocCID) if err != nil { - return nil, err + return "", err } //Retrieve the order from IPFS order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart3CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey) if err != nil { - return nil, err + return "", err } recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, nodeID) if err != nil { - return nil, err + return "", err } //Retrieve the Seed seed, err := common.RetrieveSeed(s.Store, order.Reference) if err != nil { - return nil, err + return "", err } //Generate the Secert from the Seed commitmentPrivateKey, err := cryptowallet.RedeemSecret(seed) if err != nil { - return nil, err + return "", err } //Create an order response in IPFS orderPart4ID, err := common.CreateAndStoreOrderPart4(s.Ipfs, s.Store, order, commitmentPrivateKey, orderPart3CID, nodeID, recipientList) if err != nil { - return nil, err + return "", err } - return &api.FulfillOrderSecretResponse{ + response := &api.FulfillOrderSecretResponse{ OrderPart4CID: orderPart4ID, - }, nil + } + + marshaledRequest, _ := json.Marshal(response) + + //Write the requests to the chain + chainTX := &api.BlockChainTX{ + Processor: api.TXFulfillOrderSecretResponse, + 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 + return tendermint.PostToChain(chainTX, "FulfillOrderSecret") + } diff --git a/pkg/defaultservice/order.go b/pkg/defaultservice/order.go index 8bb1488..b16b64b 100644 --- a/pkg/defaultservice/order.go +++ b/pkg/defaultservice/order.go @@ -185,7 +185,7 @@ func (s *Service) ProduceBeneficiaryEncryptedData(blsSK []byte, order *documents } // ProduceFinalSecret - -func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, req *api.OrderSecretRequest, fulfillSecretRespomse *api.FulfillOrderSecretResponse) (secret, commitment string, extension map[string]string, err error) { +func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, beneficiaryIDDocumentCID string) (secret, commitment string, extension map[string]string, err error) { finalPrivateKey := orderPart4.OrderDocument.OrderPart4.Secret //Derive the Public key from the supplied Private Key finalPublicKey, _, err := cryptowallet.PublicKeyFromPrivate(finalPrivateKey) @@ -269,7 +269,7 @@ func (s *Service) OrderSecret(req *api.OrderSecretRequest) (*api.OrderSecretResp return nil, err } - finalPrivateKey, finalPublicKey, ext, err := s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, order, orderPart4, req, response) + finalPrivateKey, finalPublicKey, ext, err := s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, order, orderPart4, beneficiaryCID) if err != nil { return nil, err } @@ -336,8 +336,8 @@ func (s *Service) Order1(req *api.OrderRequest) (string, error) { } //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, "Order1") - + tendermint.PostToChain(chainTX, "Order1") + return order.Reference, nil } // Order - @@ -427,11 +427,139 @@ func (s *Service) Order2(req *api.FulfillOrderResponse) (string, error) { //Write the requests to the chain chainTX := &api.BlockChainTX{ - Processor: api.TXOrderResponse, + Processor: api.TXOrderSecretResponse, SenderID: iDDocID, 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 return tendermint.PostToChain(chainTX, "Order2") + +} + +// OrderSecret - +func (s *Service) OrderSecret1(req *api.OrderSecretRequest) (string, error) { + orderReference := req.OrderReference + var orderPart2CID string + if err := s.Store.Get("order", orderReference, &orderPart2CID); err != nil { + return "", err + } + + 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 + } + + _, _, blsSK, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID) + if err != nil { + return "", err + } + + //Retrieve the order from IPFS + order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart2CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey) + if err != nil { + return "", errors.Wrap(err, "Fail to retrieve Order from IPFS") + } + + if err := s.Plugin.ValidateOrderSecretRequest(req, *order); err != nil { + return "", 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 "", err + } + + if req.BeneficiaryIDDocumentCID != "" { + order.BeneficiaryCID = req.BeneficiaryIDDocumentCID + } + + //Create a request Object in IPFS + orderPart3CID, err := common.CreateAndStorePart3(s.Ipfs, s.Store, order, orderPart2CID, nodeID, beneficiaryEncryptedData, recipientList) + if err != nil { + return "", err + } + + //Post the address of the updated doc to the custody node + request := &api.FulfillOrderSecretRequest{ + SenderDocumentCID: nodeID, + OrderPart3CID: orderPart3CID, + Extension: extension, + } + + marshaledRequest, _ := json.Marshal(request) + + //Write the requests to the chain + chainTX := &api.BlockChainTX{ + Processor: api.TXFulfillOrderSecretRequest, + 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 + + return tendermint.PostToChain(chainTX, "OrderSecret1") +} + +// OrderSecret - +func (s *Service) OrderSecret2(req *api.FulfillOrderSecretResponse) (string, error) { + nodeID := s.NodeID() + _, _, _, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID) + if err != nil { + return "", err + } + + remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, s.MasterFiduciaryNodeID()) + 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 { + return "", err + } + + var beneficiariesSikeSK []byte + var beneficiaryCID string + + beneficiaryCID = orderPart4.BeneficiaryCID + + _, beneficiariesSeed, _, beneficiariesSikeSK, err := common.RetrieveIdentitySecrets(s.Store, beneficiaryCID) + if err != nil { + return "", err + } + + finalPrivateKey, finalPublicKey, ext, err := s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, orderPart4, orderPart4, beneficiaryCID) + if err != nil { + return "", err + } + + request := &api.OrderSecretResponse{ + Secret: finalPrivateKey, + Commitment: finalPublicKey, + OrderReference: orderPart4.Reference, + Extension: ext, + } + + marshaledRequest, _ := json.Marshal(request) + + //Write the requests to the chain + chainTX := &api.BlockChainTX{ + Processor: api.TXOrderSecretResponse, + 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 + + return tendermint.PostToChain(chainTX, "OrderSecret2") + } diff --git a/pkg/defaultservice/plugable.go b/pkg/defaultservice/plugable.go index 65014f1..9d49163 100644 --- a/pkg/defaultservice/plugable.go +++ b/pkg/defaultservice/plugable.go @@ -34,5 +34,5 @@ type Plugable interface { PrepareOrderPart1(order *documents.OrderDoc, reqExtension map[string]string) (fulfillExtension map[string]string, err error) PrepareOrderResponse(orderPart2 *documents.OrderDoc, reqExtension, fulfillExtension map[string]string) (commitment string, extension map[string]string, err error) ProduceBeneficiaryEncryptedData(blsSK []byte, order *documents.OrderDoc, req *api.OrderSecretRequest) (encrypted []byte, extension map[string]string, err error) - ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, req *api.OrderSecretRequest, fulfillSecretRespomse *api.FulfillOrderSecretResponse) (secret, commitment string, extension map[string]string, err error) + ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, beneficiaryCID string) (secret, commitment string, extension map[string]string, err error) } diff --git a/pkg/endpoints/endpoints.go b/pkg/endpoints/endpoints.go index f42e01c..beed67b 100644 --- a/pkg/endpoints/endpoints.go +++ b/pkg/endpoints/endpoints.go @@ -176,6 +176,34 @@ func Endpoints(svc service.Service, corsAllow string, authorizer transport.Autho transport.ErrInvalidRequest: http.StatusUnprocessableEntity, }, }, + "OrderSecret1": { + Path: "/" + apiVersion + "/order/secret1", + Method: http.MethodPost, + Endpoint: MakeOrderSecret1Endpoint(svc), + NewRequest: func() interface{} { return &api.OrderSecretRequest{} }, + NewResponse: func() interface{} { return &api.OrderSecretResponse{} }, + Options: transport.ServerOptions( + transport.SetCors(corsAllow), + transport.AuthorizeOIDC(authorizer, false), + ), + ErrStatus: transport.ErrorStatus{ + transport.ErrInvalidRequest: http.StatusUnprocessableEntity, + }, + }, + "OrderSecret2": { + Path: "/" + apiVersion + "/order/secret2", + Method: http.MethodPost, + Endpoint: MakeOrderSecret2Endpoint(svc), + NewRequest: func() interface{} { return &api.FulfillOrderSecretResponse{} }, + NewResponse: func() interface{} { return &api.OrderSecretResponse{} }, + Options: transport.ServerOptions( + transport.SetCors(corsAllow), + transport.AuthorizeOIDC(authorizer, false), + ), + ErrStatus: transport.ErrorStatus{ + transport.ErrInvalidRequest: http.StatusUnprocessableEntity, + }, + }, } masterFiduciaryEndpoints := transport.HTTPEndpoints{ "FulfillOrder": { @@ -338,7 +366,7 @@ func MakeOrderEndpoint(m service.Service) endpoint.Endpoint { } } -//MakeOrderEndpoint - +//MakeOrder1Endpoint - func MakeOrder1Endpoint(m service.Service) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (response interface{}, err error) { req, ok := request.(*api.OrderRequest) @@ -352,7 +380,7 @@ func MakeOrder1Endpoint(m service.Service) endpoint.Endpoint { } } -//MakeOrderEndpoint - +//MakeOrder2Endpoint - func MakeOrder2Endpoint(m service.Service) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (response interface{}, err error) { req, ok := request.(*api.FulfillOrderResponse) @@ -380,6 +408,34 @@ func MakeOrderSecretEndpoint(m service.Service) endpoint.Endpoint { } } +//MakeOrderSecret1Endpoint - +func MakeOrderSecret1Endpoint(m service.Service) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (response interface{}, err error) { + req, ok := request.(*api.OrderSecretRequest) + if !ok { + return nil, transport.ErrInvalidRequest + } + if err := validateRequest(req); err != nil { + return "", err + } + return m.OrderSecret1(req) + } +} + +//MakeOrderSecret2Endpoint - +func MakeOrderSecret2Endpoint(m service.Service) endpoint.Endpoint { + return func(ctx context.Context, request interface{}) (response interface{}, err error) { + req, ok := request.(*api.FulfillOrderSecretResponse) + if !ok { + return nil, transport.ErrInvalidRequest + } + if err := validateRequest(req); err != nil { + return "", err + } + return m.OrderSecret2(req) + } +} + //MakeFulfillOrderEndpoint - func MakeFulfillOrderEndpoint(m service.Service) endpoint.Endpoint { return func(ctx context.Context, request interface{}) (response interface{}, err error) { diff --git a/pkg/safeguardsecret/service.go b/pkg/safeguardsecret/service.go index 12564a9..f8c7a84 100644 --- a/pkg/safeguardsecret/service.go +++ b/pkg/safeguardsecret/service.go @@ -24,7 +24,6 @@ import ( "github.com/apache/incubator-milagro-dta/libs/crypto" "github.com/apache/incubator-milagro-dta/libs/cryptowallet" "github.com/apache/incubator-milagro-dta/libs/documents" - "github.com/apache/incubator-milagro-dta/pkg/api" "github.com/apache/incubator-milagro-dta/pkg/defaultservice" ) @@ -63,7 +62,7 @@ func (s *Service) PrepareOrderResponse(orderPart2 *documents.OrderDoc, reqExtens } // ProduceFinalSecret - -func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, req *api.OrderSecretRequest, fulfillSecretRespomse *api.FulfillOrderSecretResponse) (secret, commitment string, extension map[string]string, err error) { +func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *documents.OrderDoc, beneficiaryCID string) (secret, commitment string, extension map[string]string, err error) { finalPrivateKey := orderPart4.OrderDocument.OrderPart4.Secret //Derive the Public key from the supplied Private Key finalPublicKey, _, err := cryptowallet.PublicKeyFromPrivate(finalPrivateKey) @@ -71,7 +70,9 @@ func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, order, orderPart4 *doc return "", "", nil, err } - plainText, err := crypto.Secp256k1Decrypt(req.Extension["cypherText"], req.Extension["v"], req.Extension["t"], finalPrivateKey) + //HACKED TO MAKE WORKD NEED TO PASS EXTENDION CSM TODO + plainText, err := crypto.Secp256k1Decrypt("1", "1", "1", finalPrivateKey) + //plainText, err := crypto.Secp256k1Decrypt(req.Extension["cypherText"], req.Extension["v"], req.Extension["t"], finalPrivateKey) if err != nil { return "", "", nil, err } diff --git a/pkg/service/service.go b/pkg/service/service.go index d53e5f2..2492dd7 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -35,15 +35,16 @@ type Service interface { //Order processing OrderSecret(req *api.OrderSecretRequest) (*api.OrderSecretResponse, error) - Order(req *api.OrderRequest) (*api.OrderResponse, error) + OrderSecret1(req *api.OrderSecretRequest) (string, error) + OrderSecret2(req *api.FulfillOrderSecretResponse) (string, error) + Order(req *api.OrderRequest) (*api.OrderResponse, error) Order1(req *api.OrderRequest) (string, error) Order2(req *api.FulfillOrderResponse) (string, error) //Fullfill processing FulfillOrder(req *api.FulfillOrderRequest) (string, error) - - FulfillOrderSecret(req *api.FulfillOrderSecretRequest) (*api.FulfillOrderSecretResponse, error) + FulfillOrderSecret(req *api.FulfillOrderSecretRequest) (string, error) NodeID() string MasterFiduciaryNodeID() string diff --git a/pkg/tendermint/tendermint_test.go b/pkg/tendermint/tendermint_test.go index ebe5899..495f74f 100644 --- a/pkg/tendermint/tendermint_test.go +++ b/pkg/tendermint/tendermint_test.go @@ -35,7 +35,7 @@ func Test_DumpTXID(t *testing.T) { //curl -s -X POST "http://localhost:5556/v1/order1" -H "accept: */*" -H "Content-Type: application/json" -d "{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}" func Test_All(t *testing.T) { - DumpTXID("8a47801e99b29e48a38c74495573e1eb68fa675b294826ce0580dabcadce3b0e") + DumpTXID("dea1396bce7890f85da7dc86b4ece5c4d372886ed08948eca6a0beee36c412e0") }
