-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[protocol spec] [ZIP 203] Clarify how transaction lock times are handled #539
Comments
The behaviour of |
Here are our mempool-related lock time questions, which are not as urgent:
|
Here's what
|
Here's what we found in the
Lock times are only enabled if there is at least one sequence number that is not So transactions with no transparent inputs are always accepted, regardless of the value of the lock time field. (This could be surprising behaviour for shielded transaction users.) Note that coinbase inputs are treated as a transparent input for the purposes of these checks.
Coinbase inputs have a sequence number. Coinbase transactions and coinbase inputs are checked just like any other transactions:
We couldn't find where this rule is implemented in
There isn't really any need for a table, because the rules are:
|
I think the rule is that lock times are only enabled if there is at least one sequence number that is not |
Thanks, I've edited that rule. I've also added two extra rules we've discovered while implementing. |
Merging #670 into this issue:
|
The current protocol specification doesn't seem to specify how transaction lock times are handled. The only references I could find were:
In the transaction encoding section: https://zips.z.cash/protocol/protocol.pdf#txnencoding
and in ZIP-203:
Zebra is starting to design how to implement the lock time validation (see ZcashFoundation/zebra#2389 for more info), and some questions were raised about what should be the correct behavior.
nExpiryHeight == 0
?a. if all input sequence numbers are
MAX_UINT
or if at least one is notb. if the lock is a height or a Unix timestamp
c. if the expiry height is zero on non-zero
d. if the transaction is a coinbase transaction or not
The text was updated successfully, but these errors were encountered: