forked from TrueCloudLab/neoneo-go
Merge pull request #2424 from nspcc-dev/fix-notary-size-caching
services: avoid changes in mempooled main notary tx
This commit is contained in:
commit
1cd1fd1a79
1 changed files with 10 additions and 1 deletions
|
@ -218,8 +218,15 @@ func (n *Notary) OnNewRequest(payload *payload.P2PNotaryRequest) {
|
||||||
r.minNotValidBefore = nvbFallback
|
r.minNotValidBefore = nvbFallback
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Avoid changes in main transaction witnesses got from notary request pool to
|
||||||
|
// keep the pooled tx valid. We will update its copy => the copy's size will be changed.
|
||||||
|
cp := *payload.MainTransaction
|
||||||
|
cp.Scripts = make([]transaction.Witness, len(payload.MainTransaction.Scripts))
|
||||||
|
for i, w := range payload.MainTransaction.Scripts {
|
||||||
|
cp.Scripts[i] = w
|
||||||
|
}
|
||||||
r = &request{
|
r = &request{
|
||||||
main: payload.MainTransaction,
|
main: &cp,
|
||||||
minNotValidBefore: nvbFallback,
|
minNotValidBefore: nvbFallback,
|
||||||
}
|
}
|
||||||
n.requests[payload.MainTransaction.Hash()] = r
|
n.requests[payload.MainTransaction.Hash()] = r
|
||||||
|
@ -227,6 +234,8 @@ func (n *Notary) OnNewRequest(payload *payload.P2PNotaryRequest) {
|
||||||
if r.witnessInfo == nil && validationErr == nil {
|
if r.witnessInfo == nil && validationErr == nil {
|
||||||
r.witnessInfo = newInfo
|
r.witnessInfo = newInfo
|
||||||
}
|
}
|
||||||
|
// Allow modification of fallback transaction got from notary request pool.
|
||||||
|
// It has dummy Notary witness attached => its size won't be changed.
|
||||||
r.fallbacks = append(r.fallbacks, payload.FallbackTransaction)
|
r.fallbacks = append(r.fallbacks, payload.FallbackTransaction)
|
||||||
if exists && r.isMainCompleted() || validationErr != nil {
|
if exists && r.isMainCompleted() || validationErr != nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue