From 5ff3c63f27017a8f5d3c80e69164c84090341779 Mon Sep 17 00:00:00 2001 From: Ashwin Mangale Date: Mon, 2 Mar 2020 02:03:30 +0530 Subject: [PATCH 1/5] fix 2006 --- net/service/handlers.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/net/service/handlers.go b/net/service/handlers.go index 31bca6438a..e7b8c29454 100644 --- a/net/service/handlers.go +++ b/net/service/handlers.go @@ -1309,11 +1309,13 @@ func (service *OpenBazaarService) handleDisputeOpen(p peer.ID, pmes *pb.Message, log.Errorf("failed calc orderID") } - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_OPEN)), - orderID, pb.Message_DISPUTE_OPEN, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_OPEN), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_OPEN)), + orderID, pb.Message_DISPUTE_OPEN, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_OPEN), err) + } } // Verify signature From f764c611d3f0c7110ba18c2c1cd4d43b4719d79a Mon Sep 17 00:00:00 2001 From: Ashwin Mangale Date: Wed, 4 Mar 2020 12:48:12 +0530 Subject: [PATCH 2/5] check for empty orderID --- core/disputes.go | 4 ++++ net/service/handlers.go | 24 +++++++++++-------- qa/testdata/eth_listing.json | 2 +- .../OpenBazaar/go-ethwallet/wallet/wallet.go | 4 ++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/core/disputes.go b/core/disputes.go index 892db3b1a2..10c13137a5 100644 --- a/core/disputes.go +++ b/core/disputes.go @@ -172,6 +172,10 @@ func (n *OpenBazaarNode) verifyEscrowFundsAreDisputeable(contract *pb.RicardianC log.Errorf("Failed NewHashFromStr(%s): %s", r.Txid, err.Error()) return false } + if hash == nil { + log.Errorf("Nil NewHashFromStr(%s)", r.Txid) + return false + } actualConfirmations, _, err := wal.GetConfirmations(*hash) if err != nil { log.Errorf("Failed GetConfirmations(%s): %s", hash.String(), err.Error()) diff --git a/net/service/handlers.go b/net/service/handlers.go index e7b8c29454..34a4348770 100644 --- a/net/service/handlers.go +++ b/net/service/handlers.go @@ -1348,11 +1348,13 @@ func (service *OpenBazaarService) handleDisputeUpdate(p peer.ID, pmes *pb.Messag } orderID := update.OrderId - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_UPDATE)), - orderID, pb.Message_DISPUTE_UPDATE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_UPDATE), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_UPDATE)), + orderID, pb.Message_DISPUTE_UPDATE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_UPDATE), err) + } } dispute, err := service.node.Datastore.Cases().GetByCaseID(update.OrderId) @@ -1450,11 +1452,13 @@ func (service *OpenBazaarService) handleDisputeClose(p peer.ID, pmes *pb.Message } orderID := rc.DisputeResolution.OrderId - err = service.node.Datastore.Messages().Put( - fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_CLOSE)), - orderID, pb.Message_DISPUTE_CLOSE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) - if err != nil { - log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_CLOSE), err) + if orderID != "" { + err = service.node.Datastore.Messages().Put( + fmt.Sprintf("%s-%d", orderID, int(pb.Message_DISPUTE_CLOSE)), + orderID, pb.Message_DISPUTE_CLOSE, p.Pretty(), repo.Message{Msg: *pmes}, "", time.Now().UnixNano(), []byte(p)) + if err != nil { + log.Errorf("failed putting message (%s-%d): %v", orderID, int(pb.Message_DISPUTE_CLOSE), err) + } } // Load the order diff --git a/qa/testdata/eth_listing.json b/qa/testdata/eth_listing.json index acc032fdac..c731ae2dca 100644 --- a/qa/testdata/eth_listing.json +++ b/qa/testdata/eth_listing.json @@ -18,7 +18,7 @@ "name": "A", "currencyType": "A" }, - "bigPrice": "120000000000000", + "bigPrice": "4500000000000000", "tags": [ "tshirts", "clothing", diff --git a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go index 5b9691943d..bf09deed7c 100644 --- a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go +++ b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go @@ -1435,6 +1435,10 @@ func (wallet *EthereumWallet) GetConfirmations(txid chainhash.Hash) (confirms, a return 0, 0, errors.New("invalid txn hash") } + if s["message"] != nil { + return 0, 0, nil + } + result := s["result"].(map[string]interface{}) d, _ := strconv.ParseInt(result["blockNumber"].(string), 0, 64) From 63f08016c0d085a1c536f57d4302fbee3d545618 Mon Sep 17 00:00:00 2001 From: Ashwin Mangale Date: Thu, 5 Mar 2020 01:12:05 +0530 Subject: [PATCH 3/5] fix the payouts --- core/disputes.go | 2 +- .../github.com/OpenBazaar/go-ethwallet/wallet/wallet.go | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/disputes.go b/core/disputes.go index 64a385b579..c68da566d6 100644 --- a/core/disputes.go +++ b/core/disputes.go @@ -585,7 +585,7 @@ func (n *OpenBazaarNode) CloseDispute(orderID string, buyerPercentage, vendorPer if err != nil { return err } - if modValue.Cmp(big.NewInt(0)) > 0 { + if modValue.Cmp(big.NewInt(0)) >= 0 { out := wallet.TransactionOutput{ Address: modAddr, Value: *modValue, diff --git a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go index bf09deed7c..fe506fd529 100644 --- a/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go +++ b/vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go @@ -1074,10 +1074,12 @@ func (wallet *EthereumWallet) CreateMultisigSignature(ins []wi.TransactionInput, mbvAddresses := make([]string, 3) for i, out := range outs { - if out.Address.String() == rScript.Moderator.Hex() { + if out.Value.Cmp(new(big.Int)) > 0 { indx = append(indx, i) + } + if out.Address.String() == rScript.Moderator.Hex() { mbvAddresses[0] = out.Address.String() - } else if out.Address.String() == rScript.Buyer.Hex() { + } else if out.Address.String() == rScript.Buyer.Hex() && (out.Value.Cmp(new(big.Int)) > 0) { mbvAddresses[1] = out.Address.String() } else { mbvAddresses[2] = out.Address.String() @@ -1228,6 +1230,9 @@ func (wallet *EthereumWallet) Multisign(ins []wi.TransactionInput, outs []wi.Tra mbvAddresses := make([]string, 3) for i, out := range outs { + if out.Value.Cmp(new(big.Int)) > 0 { + indx = append(indx, i) + } if out.Address.String() == rScript.Moderator.Hex() { indx = append(indx, i) mbvAddresses[0] = out.Address.String() From c4385f6f585fadc8d9097a4871efcebe65f2f0bb Mon Sep 17 00:00:00 2001 From: Ashwin Mangale Date: Thu, 5 Mar 2020 01:31:20 +0530 Subject: [PATCH 4/5] dont collect zero value outputs --- core/disputes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/disputes.go b/core/disputes.go index c68da566d6..64a385b579 100644 --- a/core/disputes.go +++ b/core/disputes.go @@ -585,7 +585,7 @@ func (n *OpenBazaarNode) CloseDispute(orderID string, buyerPercentage, vendorPer if err != nil { return err } - if modValue.Cmp(big.NewInt(0)) >= 0 { + if modValue.Cmp(big.NewInt(0)) > 0 { out := wallet.TransactionOutput{ Address: modAddr, Value: *modValue, From d630f0974aee7dbc0ab0524046a616f8338e1eab Mon Sep 17 00:00:00 2001 From: Ashwin Mangale Date: Thu, 5 Mar 2020 01:32:55 +0530 Subject: [PATCH 5/5] gofmt-ed --- repo/db/sales.go | 2 +- .../OpenBazaar/multiwallet/client/blockbook/client.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/repo/db/sales.go b/repo/db/sales.go index 04633df54d..3ae28c8fa0 100644 --- a/repo/db/sales.go +++ b/repo/db/sales.go @@ -5,8 +5,8 @@ import ( "encoding/json" "errors" "fmt" - "strings" "math/big" + "strings" "sync" "time" diff --git a/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go b/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go index 151d649145..46a15a0e1d 100644 --- a/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go +++ b/vendor/github.com/OpenBazaar/multiwallet/client/blockbook/client.go @@ -15,7 +15,6 @@ import ( "sync" "time" - "github.com/cenkalti/backoff" gosocketio "github.com/OpenBazaar/golang-socketio" "github.com/OpenBazaar/golang-socketio/protocol" clientErr "github.com/OpenBazaar/multiwallet/client/errors" @@ -24,6 +23,7 @@ import ( "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcutil" + "github.com/cenkalti/backoff" "github.com/cpacia/bchutil" "github.com/op/go-logging" "golang.org/x/net/proxy" @@ -605,7 +605,7 @@ func (i *BlockBookClient) setupListeners() error { } return nil }, b) - if err != nil{ + if err != nil { Log.Fatalf("error after retrying: %v", err) } }