Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit 3dc8b6d

Browse files
hoffmabcplacer14
andcommitted
(#1919) Migrate to AddWatchedAddresses (#1920)
* Migrate to AddWatchedAddresses * Use variadic parameters * Vendored fixes * Re-watch addresses on socket restart * Convert Mutex to RWMutex * Protect with listenLock * Update to use bulk call * Eliminate redundant conversion * Move statements into the socketclient section * Remove duplicate lock * Refactored to be closer to it’s usage * DB Transaction for Putting PubKeys * Fix linter errors * Migrate to PutAll for watched scripts * Fix missing initialization of err * Interface check for implemented wallets * Handle errors from transaction; Report Rollback failures * Append to BlockBookClient.listenAddrs instead of replace * Fix race bug and remove redundant replay handling in c/b/client.go Co-authored-by: Mike Greenberg <mikeg@ob1.io>
1 parent 4dd12cc commit 3dc8b6d

File tree

21 files changed

+275
-238
lines changed

21 files changed

+275
-238
lines changed

core/images.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@ func (n *OpenBazaarNode) FetchImage(peerID string, imageType string, size string
168168
func (n *OpenBazaarNode) GetBase64Image(url string) (base64ImageData, filename string, err error) {
169169
var client *http.Client
170170
if n.TorDialer != nil {
171-
dial := n.TorDialer.Dial
172-
tbTransport := &http.Transport{Dial: dial}
171+
tbTransport := &http.Transport{Dial: n.TorDialer.Dial}
173172
client = &http.Client{Transport: tbTransport, Timeout: time.Second * 30}
174173
} else {
175174
client = &http.Client{Timeout: time.Second * 30}

core/order.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ func prepareModeratedOrderContract(data *repo.PurchaseData, n *OpenBazaarNode, c
278278
fee := wal.GetFeePerByte(wallet.NORMAL)
279279
contract.BuyerOrder.BigRefundFee = fee.String()
280280

281-
err = wal.AddWatchedAddress(addr)
281+
err = wal.AddWatchedAddresses(addr)
282282
if err != nil {
283283
return nil, err
284284
}
@@ -315,7 +315,7 @@ func processOnlineDirectOrder(resp *pb.Message, n *OpenBazaarNode, wal wallet.Wa
315315
if err != nil {
316316
return "", "", *big.NewInt(0), false, err
317317
}
318-
err = wal.AddWatchedAddress(addr)
318+
err = wal.AddWatchedAddresses(addr)
319319
if err != nil {
320320
return "", "", *big.NewInt(0), false, err
321321
}
@@ -374,7 +374,7 @@ func processOfflineDirectOrder(n *OpenBazaarNode, wal wallet.Wallet, contract *p
374374
payment.RedeemScript = hex.EncodeToString(redeemScript)
375375
payment.Chaincode = hex.EncodeToString(chaincode)
376376

377-
err = wal.AddWatchedAddress(addr)
377+
err = wal.AddWatchedAddresses(addr)
378378
if err != nil {
379379
return "", "", *big.NewInt(0), err
380380
}

net/retriever/retriever.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ type offlineMessage struct {
6969
func NewMessageRetriever(cfg MRConfig) *MessageRetriever {
7070
var client *http.Client
7171
if cfg.Dialer != nil {
72-
dial := cfg.Dialer.Dial
73-
tbTransport := &http.Transport{Dial: dial}
72+
tbTransport := &http.Transport{Dial: cfg.Dialer.Dial}
7473
client = &http.Client{Transport: tbTransport, Timeout: time.Second * 30}
7574
} else {
7675
client = &http.Client{Timeout: time.Second * 30}

repo/db/watched_scripts.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,37 @@ func NewWatchedScriptStore(db *sql.DB, lock *sync.Mutex, coinType wallet.CoinTyp
1919
return &WatchedScriptsDB{modelStore{db, lock}, coinType}
2020
}
2121

22+
func (w *WatchedScriptsDB) PutAll(scriptPubKeys [][]byte) error {
23+
w.lock.Lock()
24+
defer w.lock.Unlock()
25+
26+
tx, err := w.db.Begin()
27+
if err != nil {
28+
return err
29+
}
30+
31+
stmt, err := tx.Prepare("insert or replace into watchedscripts(coin, scriptPubKey) values(?,?)")
32+
if err != nil {
33+
if rErr := tx.Rollback(); rErr != nil {
34+
return fmt.Errorf("put AND rollback failed: %s (rollback error: %s)", err.Error(), rErr.Error())
35+
}
36+
return err
37+
}
38+
defer stmt.Close()
39+
40+
for _, scriptPubKey := range scriptPubKeys {
41+
_, err = stmt.Exec(w.coinType.CurrencyCode(), hex.EncodeToString(scriptPubKey))
42+
if err != nil {
43+
if rErr := tx.Rollback(); rErr != nil {
44+
return fmt.Errorf("put AND rollback failed: %s (rollback error: %s)", err.Error(), rErr.Error())
45+
}
46+
return err
47+
}
48+
}
49+
50+
return tx.Commit()
51+
}
52+
2253
func (w *WatchedScriptsDB) Put(scriptPubKey []byte) error {
2354
w.lock.Lock()
2455
defer w.lock.Unlock()

vendor/github.com/OpenBazaar/bitcoind-wallet/wallet.go

Lines changed: 0 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/OpenBazaar/go-ethwallet/wallet/erc20_wallet.go

Lines changed: 0 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/OpenBazaar/go-ethwallet/wallet/wallet.go

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/OpenBazaar/multiwallet/bitcoin/wallet.go

Lines changed: 37 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)