@@ -125,37 +125,43 @@ class MainBlockValidator(
125
125
126
126
fun checkReceiptsAndStates (): BlockValidateHandler = { block, _, _, new ->
127
127
block as MainBlock
128
- val blockStates = block.getPayload().delegateStates + block.getPayload().accountStates
128
+ val payload = block.getPayload()
129
+ val blockStates = payload.delegateStates + payload.accountStates
129
130
130
131
blockStates.forEach {
131
132
if (! stateManager.verify(it)) {
132
133
throw ValidationException (" Invalid block states in block: height #${block.height} , hash ${block.hash} " )
133
134
}
134
135
}
135
136
136
- block.getPayload() .receipts.forEach {
137
+ payload .receipts.forEach {
137
138
if (! receiptService.verify(it)) {
138
139
throw ValidationException (" Invalid block receipts in block: height #${block.height} , hash ${block.hash} " )
139
140
}
140
141
}
141
142
142
143
if (new) {
143
144
val delegateWallet = stateManager.getByAddress<DelegateState >(block.publicKey).walletAddress
144
- val transactions = block.getPayload(). delegateTransactions + block.getPayload() .transferTransactions +
145
- block.getPayload(). voteTransactions + block.getPayload() .rewardTransactions
145
+ val transactions = payload. delegateTransactions + payload .transferTransactions +
146
+ payload. voteTransactions + payload .rewardTransactions
146
147
val receipts = transactionManager.processTransactions(transactions, delegateWallet)
147
148
val states = statePool.getStates()
148
149
149
- if (block.getPayload() .receipts.size != receipts.size) {
150
+ if (payload .receipts.size != receipts.size) {
150
151
throw ValidationException (" Invalid count block receipts in block: height #${block.height} , hash ${block.hash} " )
151
152
}
152
153
154
+ if (! consensusProperties.emptyBlockProductionEnabled!! && ! payload.hasTransferTransactions() && ! payload.hasVoteTransactions()) {
155
+ throw ValidationException (" Block won't be created due to allow to create empty blocks: ${consensusProperties.emptyBlockProductionEnabled} " +
156
+ " has transfer transactions: ${payload.hasTransferTransactions()} has vote transactions: ${payload.hasVoteTransactions()} " )
157
+ }
158
+
153
159
if (blockStates.size != states.size) {
154
160
throw ValidationException (" Invalid count block states in block: height #${block.height} , hash ${block.hash} " )
155
161
}
156
162
157
163
receipts.forEach { r ->
158
- block.getPayload() .receipts.firstOrNull { it.hash == r.hash }
164
+ payload .receipts.firstOrNull { it.hash == r.hash }
159
165
? : throw ValidationException (" Invalid block receipts in block: height #${block.height} , hash ${block.hash} " )
160
166
}
161
167
0 commit comments