fix UTXO waiting logic

This commit is contained in:
Niko Storni 2019-06-25 20:45:27 -04:00
parent b5c9806dd0
commit a8551bc9ee
3 changed files with 17 additions and 11 deletions

2
go.mod
View file

@ -15,7 +15,7 @@ require (
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/kr/pretty v0.1.0 // indirect github.com/kr/pretty v0.1.0 // indirect
github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c
github.com/lbryio/lbry.go v1.0.14 github.com/lbryio/lbry.go v1.0.15
github.com/lusis/slack-test v0.0.0-20190408224659-6cf59653add2 // indirect github.com/lusis/slack-test v0.0.0-20190408224659-6cf59653add2 // indirect
github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936 github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936
github.com/mitchellh/mapstructure v1.1.2 // indirect github.com/mitchellh/mapstructure v1.1.2 // indirect

4
go.sum
View file

@ -129,8 +129,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c h1:BhdcWGsuKif/XoSZnqVGNqJ1iEmH0czWR5upj+AuR8M= github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c h1:BhdcWGsuKif/XoSZnqVGNqJ1iEmH0czWR5upj+AuR8M=
github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c/go.mod h1:muH7wpUqE8hRA3OrYYosw9+Sl681BF9cwcjzE+OCNK8= github.com/lbryio/errors.go v0.0.0-20180223142025-ad03d3cc6a5c/go.mod h1:muH7wpUqE8hRA3OrYYosw9+Sl681BF9cwcjzE+OCNK8=
github.com/lbryio/lbry.go v1.0.14 h1:lpaO96YyP3d2RJzgl1WFkcyS15/ROd04OV3S1E5Av8E= github.com/lbryio/lbry.go v1.0.15 h1:vp4pkcM4jGDaPF0aPtLCvOBfe1ajogtyJPjkMUzLWsU=
github.com/lbryio/lbry.go v1.0.14/go.mod h1:JtyI30bU51rm0LZ/po3mQuzf++14OWb6kR/6mMRAmKU= github.com/lbryio/lbry.go v1.0.15/go.mod h1:JtyI30bU51rm0LZ/po3mQuzf++14OWb6kR/6mMRAmKU=
github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002 h1:urfYK5ElpUrAv90auPLldoVC60LwiGAcY0OE6HJB9KI= github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002 h1:urfYK5ElpUrAv90auPLldoVC60LwiGAcY0OE6HJB9KI=
github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002/go.mod h1:dAzPCBj3CKKWBGYBZxK6tKBP5SCgY2tqd9SnQd/OyKo= github.com/lbryio/lbryschema.go v0.0.0-20190428231007-c54836bca002/go.mod h1:dAzPCBj3CKKWBGYBZxK6tKBP5SCgY2tqd9SnQd/OyKo=
github.com/lbryio/ozzo-validation v0.0.0-20170323141101-d1008ad1fd04 h1:Nze+C2HbeKvhjI/kVn+9Poj/UuEW5sOQxcsxqO7L3GI= github.com/lbryio/ozzo-validation v0.0.0-20170323141101-d1008ad1fd04 h1:Nze+C2HbeKvhjI/kVn+9Poj/UuEW5sOQxcsxqO7L3GI=

View file

@ -166,14 +166,19 @@ func (s *Sync) ensureEnoughUTXOs() error {
target := 40 target := 40
slack := int(float32(0.1) * float32(target)) slack := int(float32(0.1) * float32(target))
count := 0 count := 0
confirmedCount := 0
for _, utxo := range *utxolist { for _, utxo := range *utxolist {
amount, _ := strconv.ParseFloat(utxo.Amount, 64) amount, _ := strconv.ParseFloat(utxo.Amount, 64)
if !utxo.IsClaim && !utxo.IsSupport && !utxo.IsUpdate && amount > 0.001 { if !utxo.IsMine && utxo.Type == "payment" && amount > 0.001 {
if utxo.Confirmations > 0 {
confirmedCount++
}
count++ count++
} }
} }
log.Infof("utxo count: %d", count) log.Infof("utxo count: %d (%d confirmed)", count, confirmedCount)
UTXOWaitThreshold := 16
if count < target-slack { if count < target-slack {
balance, err := s.daemon.AccountBalance(&defaultAccount) balance, err := s.daemon.AccountBalance(&defaultAccount)
if err != nil { if err != nil {
@ -200,12 +205,13 @@ func (s *Sync) ensureEnoughUTXOs() error {
} else if prefillTx == nil { } else if prefillTx == nil {
return errors.Err("no response") return errors.Err("no response")
} }
if confirmedCount < UTXOWaitThreshold {
err = s.waitForNewBlock() err = s.waitForNewBlock()
if err != nil { if err != nil {
return err return err
} }
} else if !allUTXOsConfirmed(utxolist) { }
} else if confirmedCount < UTXOWaitThreshold {
log.Println("Waiting for previous txns to confirm") log.Println("Waiting for previous txns to confirm")
err := s.waitForNewBlock() err := s.waitForNewBlock()
if err != nil { if err != nil {
@ -400,7 +406,7 @@ func allUTXOsConfirmed(utxolist *jsonrpc.UTXOListResponse) bool {
} }
for _, utxo := range *utxolist { for _, utxo := range *utxolist {
if utxo.Height == 0 { if utxo.Confirmations < 0 {
return false return false
} }
} }