@@ -16,6 +16,16 @@ module WEB3
16
16
<chainID> $CHAINID:Int </chainID>
17
17
</blockchain>
18
18
<accountKeys> .Map </accountKeys>
19
+ <nextFilterSlot> 0 </nextFilterSlot>
20
+ <filters>
21
+ <filter multiplicity="*" type="Map">
22
+ <filterID> 0 </filterID>
23
+ <fromBlock> 0 </fromBlock>
24
+ <toBlock> 0 </toBlock>
25
+ <address> 0 </address>
26
+ <topics> .List </topics>
27
+ </filter>
28
+ </filters>
19
29
<snapshots> .List </snapshots>
20
30
<web3socket> $SOCK:Int </web3socket>
21
31
<web3shutdownable> $SHUTDOWNABLE:Bool </web3shutdownable>
@@ -177,6 +187,10 @@ module WEB3
177
187
<method> "evm_revert" </method>
178
188
rule <k> #runRPCCall => #evm_increaseTime ... </k>
179
189
<method> "evm_increaseTime" </method>
190
+ rule <k> #runRPCCall => #eth_newBlockFilter ... </k>
191
+ <method> "eth_newBlockFilter" </method>
192
+ rule <k> #runRPCCall => #eth_uninstallFilter ... </k>
193
+ <method> "eth_uninstallFilter" </method>
180
194
181
195
rule <k> #runRPCCall => #sendResponse( "error": {"code": -32601, "message": "Method not found"} ) ... </k> [owise]
182
196
@@ -308,5 +322,41 @@ module WEB3
308
322
rule <k> #evm_increaseTime => #sendResponse( "result" : Int2String(TS +Int DATA ) ) ... </k>
309
323
<params> [ DATA:Int, .JSONList ] </params>
310
324
<timestamp> ( TS:Int => ( TS +Int DATA ) ) </timestamp>
325
+
326
+ syntax KItem ::= "#eth_newBlockFilter"
327
+ // --------------------------------------
328
+ rule <k> #eth_newBlockFilter => #sendResponse ( "result": #unparseQuantity( FILTID )) ... </k>
329
+ <filters>
330
+ ( .Bag
331
+ => <filter>
332
+ <filterID> FILTID </filterID>
333
+ <fromBlock> BLOCKNUM </fromBlock>
334
+ ...
335
+ </filter>
336
+ )
337
+ ...
338
+ </filters>
339
+ <number> BLOCKNUM </number>
340
+ <nextFilterSlot> ( FILTID:Int => FILTID +Int 1 ) </nextFilterSlot>
341
+
342
+ syntax KItem ::= "#eth_uninstallFilter"
343
+ // ---------------------------------------
344
+ rule <k> #eth_uninstallFilter ... </k>
345
+ <params> [ (DATA => #parseHexWord(DATA)), .JSONList ] </params>
346
+
347
+ rule <k> #eth_uninstallFilter => #sendResponse ( "result": "true" ) ... </k>
348
+ <params> [ FILTID, .JSONList ] </params>
349
+ <filters>
350
+ ( <filter>
351
+ <filterID> FILTID </filterID>
352
+ ...
353
+ </filter>
354
+ => .Bag
355
+ )
356
+ ...
357
+ </filters>
358
+
359
+ rule <k> #eth_uninstallFilter => #sendResponse ( "result": false ) ... </k> [owise]
360
+
311
361
endmodule
312
362
```
0 commit comments