@@ -114,6 +114,35 @@ Account size for programs owned by LoaderV4 is left undefined. This SIMD should
114
114
be amended to define the required semantics before LoaderV4 is enabled on any
115
115
network.
116
116
117
+ ### Sidebar: Program ID and Loader Validation
118
+
119
+ After all accounts are loaded, if the transaction's size comes at or under its
120
+ loaded accounts data size limit, the program IDs of each instruction, along with
121
+ their program owners, are validated. This process is unrelated to the rest of
122
+ this SIMD, but is not defined elsewhere, so we define it here.
123
+
124
+ The process is as follows; for each instruction's program ID:
125
+
126
+ * Verify the account exists.
127
+ * If [ SIMD-0162] (
128
+ https://github.com/solana-foundation/solana-improvement-documents/pull/162 )
129
+ has not been activated, verify the program account is marked executable. When
130
+ SIMD-0162 is active, skip this step.
131
+ * Verfiy the program account's owner is one of:
132
+ - ` NativeLoader1111111111111111111111111111111 `
133
+ - ` BPFLoader1111111111111111111111111111111111 `
134
+ - ` BPFLoader2111111111111111111111111111111111 `
135
+ - ` BPFLoaderUpgradeab1e11111111111111111111111 `
136
+ - ` LoaderV411111111111111111111111111111111111 `
137
+
138
+ If any of these conditions are violated, loading is aborted and the transaction
139
+ pays fees.
140
+
141
+ Previously, these checks were skipped if the program ID was
142
+ ` NativeLoader1111111111111111111111111111111 ` itself. This special case has been
143
+ removed, and ` NativeLoader1111111111111111111111111111111 ` behaves like any
144
+ other account.
145
+
117
146
## Alternatives Considered
118
147
119
148
* Transaction data size accounting is already enabled, so the null option is to
0 commit comments