Skip to content

Commit dc42394

Browse files
committed
Add explicit nonce validity conditions
1 parent 6d6200b commit dc42394

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

proposals/0082-relax-transaction-constraints.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,22 @@ transaction level are:
145145
- be executable
146146
- the owner account be owned by the native loader: `NativeLoader1111111111111111111111111111111`
147147
- the owner account must be executable
148+
16. Durable nonce transactions must:
149+
- use a recent blockhash value different from the durable nonce for the
150+
current bank
151+
- have at least one transaction instruction, the first of which is
152+
designated the nonce advance instruction which must:
153+
- invoke the system program `11111111111111111111111111111111`
154+
- have instruction data that deserializes to the
155+
`SystemInstruction::AdvanceNonceAccount` variant
156+
- have at least one account input, the first of which is designated the
157+
nonce address/account which must:
158+
- be loaded with a write-lock
159+
- be owned by the system program: `11111111111111111111111111111111`
160+
- be deserializable to non-legacy initialized nonce state
161+
- have a durable nonce hash equal to the transaction's recent
162+
blockhash field
163+
- be signed by the nonce authority deserialized from the nonce account
148164

149165
### Proposed Protocol-Violation Errors
150166

@@ -200,6 +216,22 @@ Specifically, the following constraints will remain as protocol violations:
200216
- be owned by the system program: `11111111111111111111111111111111`
201217
- have more lamports than the fee
202218
- have more lamports than the fee plus the minimum balance
219+
11. Durable nonce transactions must:
220+
- use a recent blockhash value different from the durable nonce for the
221+
current bank
222+
- have at least one transaction instruction, the first of which is
223+
designated the nonce advance instruction which must:
224+
- invoke the system program `11111111111111111111111111111111`
225+
- have instruction data that deserializes to the
226+
`SystemInstruction::AdvanceNonceAccount` variant
227+
- have at least one account input, the first of which is designated the
228+
nonce address/account which must:
229+
- be loaded with a write-lock
230+
- be owned by the system program: `11111111111111111111111111111111`
231+
- be deserializable to non-legacy initialized nonce state
232+
- have a durable nonce hash equal to the transaction's recent
233+
blockhash field
234+
- be signed by the nonce authority deserialized from the nonce account
203235

204236
### Proposed New Runtime Errors
205237

0 commit comments

Comments
 (0)