us
us copied to clipboard
RenewContract: ReadResponse: consensus conflict: provided transaction set is standalone and invalid: transaction cannot have an output or payout that has zero value
Many contract renewals fail with this error. Is this something we can avoid in renter-side?
Hmm. I believe this bug occurs when the host is asked to contribute 0 SC to the contract. Instead of doing nothing, the host adds an output worth 0 SC, which is invalid.
This should be mitigated here. The only thing I can think of is that MaxCollateral
could be zero, in which case the IsZero
branch wouldn't trigger (because it's an else-if). You'd end up getting an error in that case anyway, though, since your collateral would exceed MaxCollateral
.
Are multiple hosts returning this error, or just one?
Looks like it happens with only this host:
We get this error with other hosts:
- ed25519:9a6f3f7cf66637b53ff9027e48419f3f5f5b3c04495928ee0202ac187e8b7ad1
- ed25519:babd59be06b2055f68a6d6999746f3b20abd5836015d96342300c3c2faa6830e
Is there any way to solve it, or we cannot renew those contracts?
You could try running this patch (apply to both FormContract
and RenewContract
):
diff --git a/renter/proto/formcontract.go b/renter/proto/formcontract.go
index 0cbe034..9c53ada 100644
--- a/renter/proto/formcontract.go
+++ b/renter/proto/formcontract.go
@@ -78,7 +78,8 @@ func (s *Session) FormContract(w Wallet, tpool TransactionPool, key ed25519.Priv
// side bug) it can't be zero either.
if hostCollateral.Cmp(s.host.MaxCollateral) > 0 {
hostCollateral = s.host.MaxCollateral
- } else if hostCollateral.IsZero() {
+ }
+ if hostCollateral.IsZero() {
hostCollateral = types.NewCurrency64(1)
}
this should force the collateral to never be 0. My suspicion is that you will get a different error instead, but it's worth a try.
With the above patch, we get "RenewContract: ReadResponse: internal error: file contract proposal expects the host to pay more than the maximum allowed collateral".
ok, it's as I suspected -- the host's MaxCollateral
is set to 0.
I will submit a patch to fix the host bug, but until people upgrade, renewing the contract is impossible. (Actually, I guess if the host adds more funds to their wallet, their MaxCollateral
will increase and the contract will become renewable again.)
EDIT: https://gitlab.com/NebulousLabs/Sia/-/merge_requests/4825
Thanks for the MR. I hope that it will be merged and published soon.