nip13: move Generate() to deprecated.go

This commit is contained in:
fiatjaf 2024-08-21 16:54:02 -03:00
parent 2fc34e0de8
commit 75e6befdd0
2 changed files with 32 additions and 25 deletions

32
nip13/deprecated.go Normal file
View File

@ -0,0 +1,32 @@
package nip13
import (
"strconv"
"time"
"github.com/nbd-wtf/go-nostr"
)
// Deprecated: use DoWork()
func Generate(event *nostr.Event, targetDifficulty int, timeout time.Duration) (*nostr.Event, error) {
if event.PubKey == "" {
return nil, ErrMissingPubKey
}
tag := nostr.Tag{"nonce", "", strconv.Itoa(targetDifficulty)}
event.Tags = append(event.Tags, tag)
var nonce uint64
start := time.Now()
for {
nonce++
tag[1] = strconv.FormatUint(nonce, 10)
if Difficulty(event.GetID()) >= targetDifficulty {
return event, nil
}
// benchmarks show one iteration is approx 3000ns on i7-8565U @ 1.8GHz.
// so, check every 30ms; arbitrary
if nonce%10000 == 0 && time.Since(start) > timeout {
return nil, ErrGenerateTimeout
}
}
}

View File

@ -7,7 +7,6 @@ import (
"math/bits"
"runtime"
"strconv"
"time"
nostr "github.com/nbd-wtf/go-nostr"
)
@ -65,30 +64,6 @@ func Check(id string, minDifficulty int) error {
return nil
}
// Deprecated: use DoWork()
func Generate(event *nostr.Event, targetDifficulty int, timeout time.Duration) (*nostr.Event, error) {
if event.PubKey == "" {
return nil, ErrMissingPubKey
}
tag := nostr.Tag{"nonce", "", strconv.Itoa(targetDifficulty)}
event.Tags = append(event.Tags, tag)
var nonce uint64
start := time.Now()
for {
nonce++
tag[1] = strconv.FormatUint(nonce, 10)
if Difficulty(event.GetID()) >= targetDifficulty {
return event, nil
}
// benchmarks show one iteration is approx 3000ns on i7-8565U @ 1.8GHz.
// so, check every 30ms; arbitrary
if nonce%10000 == 0 && time.Since(start) > timeout {
return nil, ErrGenerateTimeout
}
}
}
// DoWork() performs work in multiple threads (given by runtime.NumCPU()) and returns the first
// nonce (as a nostr.Tag) that yields the required work.
// Returns an error if the context expires before that.