Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Feat/issue 944/implement txn data update handling the max nonce #987

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
504 commits
Select commit Hold shift + click to select a range
36b5e0f
feat(return): wip
OlivierBBB Jul 21, 2024
721dc9d
feat(return): implement mmu call invalid code prefix
letypequividelespoubelles Jul 22, 2024
962736e
feat(selfdestruct): review and complete will revert case
lorenzogentile404 Jul 22, 2024
2fe118f
feat(selfdestruct): added comments
lorenzogentile404 Jul 22, 2024
ea70c7d
ras
lorenzogentile404 Jul 22, 2024
15088ab
clean stuff
letypequividelespoubelles Jul 22, 2024
a6e2be9
feat(selfdestruct): started implementing self destruct map
lorenzogentile404 Jul 22, 2024
809ce42
feat(selfdestruct): rename components of the map
lorenzogentile404 Jul 22, 2024
5709e8a
feat(selfdestruct): implement resolvePostTransaction
lorenzogentile404 Jul 22, 2024
4b88891
ras
OlivierBBB Jul 22, 2024
f86f88f
feat(return): progress but some TODO's
OlivierBBB Jul 22, 2024
c811307
delete the failure signals, delete romLex signals, triggers romLex fo…
letypequividelespoubelles Jul 23, 2024
7e9840a
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 23, 2024
e4e9b4d
merge arith-dev
letypequividelespoubelles Jul 23, 2024
9bc9257
rm void file
letypequividelespoubelles Jul 23, 2024
99192b7
feat(selfdestruct): cleaned code
lorenzogentile404 Jul 23, 2024
48feb35
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 23, 2024
ce4101a
fix resolve defers after triggering module at endTx
letypequividelespoubelles Jul 23, 2024
39d1312
fix: need to do two rounds of defersPostTx
letypequividelespoubelles Jul 23, 2024
70c97fe
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 23, 2024
389aba6
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 23, 2024
938927a
extcodecopy triggers RomLex
letypequividelespoubelles Jul 23, 2024
c4156ec
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Jul 23, 2024
7027263
feat(selfdestruct): fixed resolvePostTransaction
lorenzogentile404 Jul 23, 2024
90d2df2
fix(return): triggers ROMLEX
letypequividelespoubelles Jul 23, 2024
a392785
fix(stuff): various
OlivierBBB Jul 23, 2024
f784b76
spotless + clean
letypequividelespoubelles Jul 23, 2024
4e1934a
feat(account fragment): implemented marked for selfdestruct
lorenzogentile404 Jul 23, 2024
34c55b4
fix(self destruct time): renaming
lorenzogentile404 Jul 23, 2024
4edce05
fix(account fragment): fix account fragment resolve post transaction
lorenzogentile404 Jul 23, 2024
c719e09
feat: implement the refund business
letypequividelespoubelles Jul 23, 2024
67edb68
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Jul 23, 2024
7458e4b
feat(selfdestruct): added draft of contracts for testing
lorenzogentile404 Jul 23, 2024
e1c47b9
fix(OOB:RDC): typo in StackArg
letypequividelespoubelles Jul 24, 2024
3cb9c42
typo
letypequividelespoubelles Jul 24, 2024
98ee095
feat(selfdestruct): fixed contracts for testing using 0.8.0+commit.c7…
lorenzogentile404 Jul 24, 2024
9e368e7
fix(hub): return data + halting instruction fixes and refactoring
letypequividelespoubelles Jul 24, 2024
d35f414
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Jul 24, 2024
d6047e0
getting rid as much as possible of one of the DomSubStampsFragment.st…
OlivierBBB Jul 23, 2024
b377a85
fix(defers): ChildContextEntryDefers + other
OlivierBBB Jul 24, 2024
b9dac47
fix(constraints): new hub constraints and columns + CALL scenarios
OlivierBBB Jul 25, 2024
e0b07f0
feat(CALL): wip
letypequividelespoubelles Jul 25, 2024
02a4cb1
feat(CALL): done with exceptionnal
letypequividelespoubelles Jul 25, 2024
b1fabb8
feat(aborted calls): DONE !!!!!1!
OlivierBBB Jul 25, 2024
ad68df2
fix: added missing files ...
OlivierBBB Jul 25, 2024
aba8cda
feat(EOA CALL): DONE !
letypequividelespoubelles Jul 25, 2024
555fbac
perf(CALL): specify max nb of fragment
letypequividelespoubelles Jul 25, 2024
04a09d6
add conversions + fix Trace.java issue
letypequividelespoubelles Jul 25, 2024
ed90dd2
feat(call): were they both decemented?
lorenzogentile404 Jul 25, 2024
b75ee2a
feat: add ContextExitDefers registers
letypequividelespoubelles Jul 25, 2024
9d27051
CallFrame is better
letypequividelespoubelles Jul 25, 2024
335e978
feat(call): added ContextExitDefer interface
lorenzogentile404 Jul 25, 2024
d2285a6
refactoring name of schedule defers
letypequividelespoubelles Jul 25, 2024
da44c91
feat: trigger resolving ContextExitDefers
letypequividelespoubelles Jul 25, 2024
9af8698
feat(call): implement ContextExitDefer
lorenzogentile404 Jul 25, 2024
0790dd8
ras
lorenzogentile404 Jul 25, 2024
3af609a
docs(hub): added comment for traceEndTransaction
lorenzogentile404 Jul 25, 2024
8aecf61
add reverStamp shortcut
letypequividelespoubelles Jul 26, 2024
831d209
fix(call): wip for SMC
OlivierBBB Jul 26, 2024
6b7d531
refactor ras
letypequividelespoubelles Jul 26, 2024
771d70e
ras
OlivierBBB Jul 26, 2024
dc6f19b
fix(call): various
OlivierBBB Jul 26, 2024
a818d70
clean-up
letypequividelespoubelles Jul 26, 2024
27438f2
feat(precompiles): first commit
OlivierBBB Jul 26, 2024
d78ab16
bye bye old call ;(
letypequividelespoubelles Jul 26, 2024
b4a45e9
feat(precompiles): precompile subsection work + the ADDRESS_TO_PRECOM…
letypequividelespoubelles Jul 26, 2024
a3f1a38
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 27, 2024
804da01
tracing of precompile scenario fragment + cleaning scenario package
letypequividelespoubelles Jul 27, 2024
0fc3361
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Jul 27, 2024
14570a2
ras
letypequividelespoubelles Jul 27, 2024
17563d3
ras
letypequividelespoubelles Jul 27, 2024
2fb751a
feat(precompile subsection): generic methods wip
OlivierBBB Jul 27, 2024
0fbc0c6
fix(mmuCall): split the SHA2/RIPEMD mmu calls in 3
OlivierBBB Jul 27, 2024
d745a82
feat(test): simple test to track the triggering of Besu's tracer inte…
OlivierBBB Jul 27, 2024
af9cc19
finish all common CALL, finish common Precompile, systematically add …
letypequividelespoubelles Jul 27, 2024
0cdd2e4
wip change how we trigger the MMU
letypequividelespoubelles Jul 27, 2024
895edb3
fix(MmuCall): various
OlivierBBB Jul 27, 2024
9db1e79
fix(accountSection): fixed it
OlivierBBB Jul 27, 2024
dc8f1da
fix(AccountSection): missed stuff
OlivierBBB Jul 27, 2024
af41afe
fix(ExtCodeCopySection): fixed it AFAICT
OlivierBBB Jul 27, 2024
ba69139
TRM is trigger by hand for instructions
letypequividelespoubelles Jul 28, 2024
11f1099
ras, clean & spotless
letypequividelespoubelles Jul 28, 2024
555a97f
rasw
OlivierBBB Jul 28, 2024
b3fcdc6
ras
OlivierBBB Jul 28, 2024
0638fd5
fix(oob): OobCall slight redesign + SHA2 processing wip
OlivierBBB Jul 28, 2024
31a2b48
feat(sha2): first precompile down :)
OlivierBBB Jul 28, 2024
be8d7c7
spotless
OlivierBBB Jul 28, 2024
e157de3
feat(PRC): inverse logic where the prc limits are triggered by the ca…
letypequividelespoubelles Jul 29, 2024
3efcb79
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 30, 2024
e5674b6
implement keccak count
letypequividelespoubelles Jul 30, 2024
21274e5
feat: trigger SHAKIRA for SHA3
letypequividelespoubelles Jul 30, 2024
77ae95d
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Jul 30, 2024
99449f4
fix(CREATE): trigger SHAKIRA and make it as the CALLs
letypequividelespoubelles Jul 31, 2024
92fdcf1
fix: debug java issues : no MessageFrame given when entering Context
letypequividelespoubelles Jul 31, 2024
efdb63a
fix java issues about initiamizing frame
letypequividelespoubelles Aug 1, 2024
b2d512a
fix create failure case
letypequividelespoubelles Aug 1, 2024
919c743
feat add identity prc subsection
letypequividelespoubelles Aug 1, 2024
2aac0c5
feat modexp PRC subsection
letypequividelespoubelles Aug 1, 2024
c5b005d
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 1, 2024
b6e9176
fix: reject tx when arg byte size > 512
letypequividelespoubelles Aug 1, 2024
93710b0
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Aug 1, 2024
35ffb68
feat(precompiles): wip for ECDATA precompiles
OlivierBBB Aug 2, 2024
afcb18a
make it compile again + trivial bug fixes
letypequividelespoubelles Aug 2, 2024
65f0521
fix modexp prc subsection (ugly), fixed OOB
letypequividelespoubelles Aug 2, 2024
1d4eb5c
fix: don't trigger resolveRollback at every context ReEntry !
letypequividelespoubelles Aug 2, 2024
a01ba1f
fix(modexpsubsection): use modexp oob calls instead of common precomp…
lorenzogentile404 Aug 2, 2024
1053cb8
add check
letypequividelespoubelles Aug 2, 2024
c98f08c
minor cleaning
letypequividelespoubelles Aug 2, 2024
0494ac6
ras
OlivierBBB Aug 2, 2024
87a379f
fix(modexp): FAILURE_KNOWN_TO_RAM is the only failure mode for MODEXP
OlivierBBB Aug 3, 2024
4973ebe
feat(tests): trivial tests for for ECRECOVER and MODEXP
OlivierBBB Aug 3, 2024
e886c07
fix(account snapthots): amended the canonical method to handle accoun…
OlivierBBB Aug 3, 2024
1cdb6f1
feat(EC precompiles): done ? + various other minor changes
OlivierBBB Aug 3, 2024
dc3a4fb
fix(oob): partial (?) fix for callGas in OobOperation's populateColum…
OlivierBBB Aug 4, 2024
9c50526
fix(oob): just some refactoring and removing of fields
OlivierBBB Aug 5, 2024
60213d5
feat(blake): implemented BLAKE precompile
OlivierBBB Aug 6, 2024
57bdf4a
fix(postRollbackDefers): fixed nullpointer exception when resolving p…
OlivierBBB Aug 9, 2024
d09b61c
TODO: failing JumpiTest because
OlivierBBB Aug 9, 2024
fc44852
test(jumpi): fixed test cases
lorenzogentile404 Aug 9, 2024
051abb9
fix(CallSection): fixed null pointer exception + spotless
OlivierBBB Aug 9, 2024
38f3562
fix(call stack pattern): fixed wrong stack stamp offset
OlivierBBB Aug 9, 2024
5c1aa7f
fix(tracing): fixed bug with CallScenarioFragment tracing
OlivierBBB Aug 9, 2024
43ae850
fix(call): success bit of CALL's fix ?
OlivierBBB Aug 9, 2024
2e92e67
feat(test): added simple test for STP triggered by CALL instruction
OlivierBBB Aug 9, 2024
1cd599b
fix(misc/STP): sign shenanigans when setting the STP instruction
OlivierBBB Aug 10, 2024
b7c5109
fix(stpCall): STP_GAS_MXP tracing
OlivierBBB Aug 10, 2024
fd6dc17
ras
OlivierBBB Aug 12, 2024
9282126
ras: cleaning
letypequividelespoubelles Aug 12, 2024
d714f60
fix unlatching stack mechanism for CALLs and CREATEs
letypequividelespoubelles Aug 13, 2024
eefc6c9
fix casting java issues
letypequividelespoubelles Aug 13, 2024
7775aa2
fix java issues
letypequividelespoubelles Aug 13, 2024
9b9c42b
fix missing account snapshot for EOA reverted successfull call
letypequividelespoubelles Aug 13, 2024
d956eef
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 13, 2024
8fb4af6
docs(storage): add comment
lorenzogentile404 Aug 13, 2024
c5b2da5
feat: MessageFrame tests and generalised ByteCodeRunner to add additi…
lorenzogentile404 Aug 13, 2024
ccc2d06
fix(prc): missing last context rows
letypequividelespoubelles Aug 14, 2024
4434ac2
fix returnData for successfull ecrecover can be empty
letypequividelespoubelles Aug 14, 2024
7246b38
fix: need to give ram snapshot to MMU
letypequividelespoubelles Aug 14, 2024
7c9f854
cleaning
letypequividelespoubelles Aug 15, 2024
fc1addf
fix: add seen storage keys in sstore and sload section + add trivial …
letypequividelespoubelles Aug 15, 2024
ad009ee
fix: resolve exit & rollback defers before exitint the calldrame
letypequividelespoubelles Aug 15, 2024
22c11cd
feat(exp): update
lorenzogentile404 Aug 15, 2024
13bdf9d
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
lorenzogentile404 Aug 15, 2024
dfa0d64
fix: missing call to ROMLEX for CREATEs
letypequividelespoubelles Aug 15, 2024
83710fe
add TODOs for @Lorenzo
letypequividelespoubelles Aug 15, 2024
88e7607
feat(ecdata): update trigger using callEcData instead tracePreOpCode
lorenzogentile404 Aug 15, 2024
36c044b
fix(ecdata): remove tracePreOpCode completely
lorenzogentile404 Aug 15, 2024
a6e66e0
fix: move the triggering of ecdata after the check that the call is s…
letypequividelespoubelles Aug 16, 2024
54de55f
fix: delete ecdata from signals
letypequividelespoubelles Aug 16, 2024
3acb978
fix deployment status for CREATE's in RomLex
letypequividelespoubelles Aug 16, 2024
301d323
fix(mmu/prprc/anyToRamWithPadding): need at row 3 results of rows 5 & 6
letypequividelespoubelles Aug 16, 2024
1d68ab7
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 16, 2024
bc6d6fa
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 16, 2024
f2c8633
fix(stp): trace all columns
letypequividelespoubelles Aug 16, 2024
9d70247
initialize preOpcodeCreateeSnapshot before checking aborts as it's re…
FlorianHuc Aug 19, 2024
46c79fa
fix: mix between CREATE and CREATE2 in stack rows, thank you Florian
letypequividelespoubelles Aug 19, 2024
6e0a4fb
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 19, 2024
fe53da9
feat(oob): add MAX_NONCE business
lorenzogentile404 Aug 19, 2024
d72c37d
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 19, 2024
e25b2ab
fix toy account storage check.
FlorianHuc Aug 20, 2024
08c9f10
fix(mmu): any to ram with padding constraints (and tracing) fixes
letypequividelespoubelles Aug 20, 2024
57c4ea9
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Aug 20, 2024
ad8980a
revert toy account storage check.
FlorianHuc Aug 20, 2024
61c4479
fix(modexp sub section): call OOB at preOpcode, not contextReEntry
letypequividelespoubelles Aug 20, 2024
80b3030
Merge remote-tracking branch 'origin/feat/issue-746/linea-transaction…
FlorianHuc Aug 20, 2024
43bafcd
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Aug 20, 2024
7937b5a
fix: it's adding the oob call to the imc fragment that triggers OOB
letypequividelespoubelles Aug 20, 2024
68ba4ca
fix keccak calling twice SHAKIRA + no need to reorder SHAKIRA op
letypequividelespoubelles Aug 20, 2024
ec82e47
fix(blake): trigger blakeModexp for Blake2f
letypequividelespoubelles Aug 20, 2024
172e8b9
fix(selfdestruct): ensure contracts are compatible with London EVM
lorenzogentile404 Aug 20, 2024
837c4ee
fix(selfdestruct): update bytecode for tests
lorenzogentile404 Aug 20, 2024
9d998b7
use a more realistic gas price.
FlorianHuc Aug 20, 2024
1cf89d2
use a more realistic gas limit.
FlorianHuc Aug 20, 2024
032a3ee
fix recipient account in init phase for deployement tx
letypequividelespoubelles Aug 21, 2024
2cdcae3
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 21, 2024
f4a9fe0
test: more gas available
letypequividelespoubelles Aug 21, 2024
26a4240
fix ras
letypequividelespoubelles Aug 21, 2024
3ae2f98
fix extcodecopying empty account
letypequividelespoubelles Aug 21, 2024
dc6aae7
clean: delete duplicate when creating section
letypequividelespoubelles Aug 21, 2024
40b88e5
Fix NPE + class cast exception
FlorianHuc Aug 21, 2024
92510c4
ugly fix for root callDataCopy in a root context with empty payload
letypequividelespoubelles Aug 21, 2024
2de7a1d
fix: create fictious CN even for empty call data
letypequividelespoubelles Aug 21, 2024
bfa5cf2
fix getting CFI for empty extCodeCopy
letypequividelespoubelles Aug 21, 2024
b3ce0ac
fix(oob): debug basicModexpTest
lorenzogentile404 Aug 21, 2024
6f1c3bf
docs(oob): remove TODO
lorenzogentile404 Aug 21, 2024
f82042d
docs(oob): modexp lead
lorenzogentile404 Aug 21, 2024
33820cc
fix identity prc mmuCall
letypequividelespoubelles Aug 21, 2024
a4575a5
Merge branch 'feat/issue-746/linea-transaction-class' of github.com:C…
letypequividelespoubelles Aug 21, 2024
c1f401d
fix(ModexpMetadata): rawLeadingWord fix
OlivierBBB Aug 21, 2024
44b467d
fix: fixed right zero padding + renaming to "ModexpMetaData"
OlivierBBB Aug 21, 2024
8e2f104
fix(testModexpLogSingleCase): made test pass
OlivierBBB Aug 21, 2024
6ab6e8d
fix: get "testMxpRandomAdvanced" working again
OlivierBBB Aug 21, 2024
e7685c2
fix(testSeveralKeccaks): test passes now
OlivierBBB Aug 21, 2024
2b379a9
feat: new "is the beef dead yet ?" tests for KECCAK
OlivierBBB Aug 22, 2024
1b5489d
fix(rawLeadingWord): simplified the rawLeadingWord() method
OlivierBBB Aug 22, 2024
350d6b0
spotless + manually update shakira Trace.java + constraint update
letypequividelespoubelles Aug 22, 2024
8b6009e
constraint update
letypequividelespoubelles Aug 22, 2024
c6d8ef4
fix converting stack item to long
letypequividelespoubelles Aug 22, 2024
acca913
fix(hubStamp): update stamp when creating a section
letypequividelespoubelles Aug 22, 2024
78d1f96
fix set returner info while returning from a precompile call
letypequividelespoubelles Aug 22, 2024
8bf9161
feat(trm): a new trimming test for the HUB
OlivierBBB Aug 22, 2024
b3af824
fix: invalid code prefix MMU instruction patch
powerslider Aug 22, 2024
38f11ae
fix(constraints): update to fix failing oob tests--no-verify
lorenzogentile404 Aug 22, 2024
13c5793
feat(gas): update ACDC
lorenzogentile404 Aug 22, 2024
37ea558
feat(modexp): new tests for MODEXP
OlivierBBB Aug 22, 2024
989a82d
style: spotless
letypequividelespoubelles Aug 23, 2024
b465ac4
feat(constraints): update
lorenzogentile404 Aug 23, 2024
da9f8b0
feat(constraints): update
lorenzogentile404 Aug 23, 2024
c217789
fix: inverted logic of triggering of mmu in callDataLoad
letypequividelespoubelles Aug 23, 2024
71b6dd3
fix(gas): move gas in trace-files.gradle
lorenzogentile404 Aug 23, 2024
f01ffde
fix(gas): update implementation after Trace.java update
lorenzogentile404 Aug 23, 2024
6f9e783
docs(gas): add comment
lorenzogentile404 Aug 23, 2024
725e377
fix(ecdata): fill success bit correctly
lorenzogentile404 Aug 23, 2024
5e19d07
change runner name
FlorianHuc Aug 23, 2024
e919292
Merge remote-tracking branch 'origin/feat/issue-746/linea-transaction…
FlorianHuc Aug 23, 2024
8bf2be7
fix(MARKED_FOR_SELFDESTRUCT): fixed typo
OlivierBBB Aug 23, 2024
59ff899
fix(modexp): use safe slice method to extract bbs, ebs and mbs
OlivierBBB Aug 23, 2024
ebdb8e3
fix(modexp): extract the correct "rawLeadingWord"
OlivierBBB Aug 23, 2024
e17d6e0
ras
OlivierBBB Aug 23, 2024
acff532
spotless
OlivierBBB Aug 23, 2024
5408f92
fix(oob): typo
OlivierBBB Aug 23, 2024
ddfe116
fix(rollback): REVERT now also triggers the rollback mechanism
OlivierBBB Aug 23, 2024
f249e99
fix(mmu): we only commit those MmuOperations that say "traceMe()"
OlivierBBB Aug 23, 2024
96d6566
test(mmu): added tests for MMU
OlivierBBB Aug 23, 2024
7cdec09
fix(mmu): line count now discards operations that don't get traced
OlivierBBB Aug 23, 2024
bd27888
feat(mxp): some extra tests
OlivierBBB Aug 23, 2024
49ed5c8
feat: traceMe() method for MmuOperation
OlivierBBB Aug 23, 2024
9658d93
spotless + fix untraced MMU op in mmio
letypequividelespoubelles Aug 24, 2024
b5f8f40
Merge branch 'arith-dev' into feat/issue-746/linea-transaction-class
letypequividelespoubelles Aug 26, 2024
029cdbc
fix make it build
letypequividelespoubelles Aug 26, 2024
acafb72
fix successBit in invalidCodePrefix MmuCall
letypequividelespoubelles Aug 26, 2024
d917467
fix: aborting calls defers at childContextEntry
letypequividelespoubelles Aug 26, 2024
889a04e
fix postOpcode acc snapshot for aborting calls
letypequividelespoubelles Aug 26, 2024
4e5f9ab
cleanup
letypequividelespoubelles Aug 26, 2024
88088f8
docs(hub): add comment related to creator nonce
lorenzogentile404 Aug 26, 2024
e6f91fb
fix(ecdata): partial fix
lorenzogentile404 Aug 26, 2024
707d5c4
fix(ecdata): call data has to be right padded + 100% valid padded cal…
OlivierBBB Aug 26, 2024
1069e3f
fix(ecdata): ensure that EcData has nonempty call data + renaming
OlivierBBB Aug 26, 2024
e8aea36
spotless
lorenzogentile404 Aug 26, 2024
3fe62a8
feat(ecrecover): ultra simple failing test
OlivierBBB Aug 26, 2024
99f62a3
fix(ecdata): re-enable tracing and line counting disregarding success…
lorenzogentile404 Aug 26, 2024
9581e56
spotless
lorenzogentile404 Aug 26, 2024
89fabc4
feat(txndata): inmplement EIP2681
letypequividelespoubelles Aug 26, 2024
734fa21
Merge branch 'feat/issue-746/linea-transaction-class' into 944-implem…
letypequividelespoubelles Aug 26, 2024
115326d
Merge branch 'arith-dev' into 944-implement-txn_data-update-handling-…
letypequividelespoubelles Aug 26, 2024
8a1abd5
fix(txndata): trivial fix
letypequividelespoubelles Aug 26, 2024
95d3dc3
Merge branch 'arith-dev' into 944-implement-txn_data-update-handling-…
letypequividelespoubelles Aug 26, 2024
8668d70
fix: wrong data cost calculation that contains the deployement cost
letypequividelespoubelles Aug 27, 2024
26e0adf
Merge branch '944-implement-txn_data-update-handling-the-max_nonce' o…
letypequividelespoubelles Aug 27, 2024
906efde
Merge branch 'arith-dev' into 944-implement-txn_data-update-handling-…
letypequividelespoubelles Aug 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@
public class GlobalConstants {
public static final int BLOCKHASH_MAX_HISTORY = 0x100;
public static final int CREATE2_SHIFT = 0xff;
public static final long EIP2681_MAX_NONCE = 0xffffffffffffffffL;
public static final int EIP_3541_MARKER = 0xef;
public static final BigInteger EMPTY_KECCAK_HI =
new BigInteger("262949717399590921288928019264691438528");
public static final BigInteger EMPTY_KECCAK_LO =
new BigInteger("304396909071904405792975023732328604784");
public static final long EMPTY_RIPEMD_HI = 0x9c1185a5L;
public static final int EMPTY_RIPEMD_HI = 0x9c1185a5;
public static final BigInteger EMPTY_RIPEMD_LO =
new BigInteger("263072838190121256777638892741499129137");
public static final BigInteger EMPTY_SHA2_HI =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public class Trace {
public static final int COMMON_RLP_TXN_PHASE_NUMBER_4 = 0xa;
public static final int COMMON_RLP_TXN_PHASE_NUMBER_5 = 0x7;
public static final int CREATE2_SHIFT = 0xff;
public static final long EIP2681_MAX_NONCE = 0xffffffffffffffffL;
public static final int EIP_3541_MARKER = 0xef;
public static final BigInteger EMPTY_KECCAK_HI =
new BigInteger("262949717399590921288928019264691438528");
Expand Down Expand Up @@ -287,9 +288,9 @@ public class Trace {
public static final int MMU_INST_RAM_TO_EXO_WITH_PADDING = 0xfe20;
public static final int MMU_INST_RAM_TO_RAM_SANS_PADDING = 0xfe40;
public static final int MMU_INST_RIGHT_PADDED_WORD_EXTRACTION = 0xfe10;
public static final int NB_ROWS_TYPE_0 = 0x7;
public static final int NB_ROWS_TYPE_1 = 0x8;
public static final int NB_ROWS_TYPE_2 = 0x8;
public static final int NB_ROWS_TYPE_0 = 0x8;
public static final int NB_ROWS_TYPE_1 = 0x9;
public static final int NB_ROWS_TYPE_2 = 0x9;
public static final int OOB_INST_BLAKE_CDS = 0xfa09;
public static final int OOB_INST_BLAKE_PARAMS = 0xfb09;
public static final int OOB_INST_CALL = 0xca;
Expand Down Expand Up @@ -375,6 +376,15 @@ public class Trace {
public static final int WCP_INST_LEQ = 0xf;
public static final int WORD_SIZE = 0x20;
public static final int WORD_SIZE_MO = 0x1f;
public static final int comparaison___computing_effective_gas_price_row_offset = 0x8;
public static final int comparaison___detecting_empty_call_data_row_offset = 0x5;
public static final int comparaison___effective_refund_row_offset = 0x4;
public static final int comparaison___initial_balance_row_offset = 0x1;
public static final int comparaison___max_fee_and_basefee_row_offset = 0x6;
public static final int comparaison___maxfee_and_max_priority_fee_row_offset = 0x7;
public static final int comparaison___nonce_row_offset = 0x0;
public static final int comparaison___sufficient_gas_row_offset = 0x2;
public static final int comparaison___upper_limit_refunds_row_offset = 0x3;

private final BitSet filled = new BitSet();
private int currentLine = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import static net.consensys.linea.zktracer.module.txndata.Trace.COMMON_RLP_TXN_PHASE_NUMBER_3;
import static net.consensys.linea.zktracer.module.txndata.Trace.COMMON_RLP_TXN_PHASE_NUMBER_4;
import static net.consensys.linea.zktracer.module.txndata.Trace.COMMON_RLP_TXN_PHASE_NUMBER_5;
import static net.consensys.linea.zktracer.module.txndata.Trace.EIP2681_MAX_NONCE;
import static net.consensys.linea.zktracer.module.txndata.Trace.MAX_REFUND_QUOTIENT;
import static net.consensys.linea.zktracer.module.txndata.Trace.NB_ROWS_TYPE_0;
import static net.consensys.linea.zktracer.module.txndata.Trace.NB_ROWS_TYPE_1;
Expand Down Expand Up @@ -57,8 +58,10 @@ public class TxndataOperation extends ModuleOperation {
private final Euc euc;
@Getter public final TransactionProcessingMetadata tx;

private static final Bytes EIP_2681_MAX_NONCE = Bytes.minimalBytes(EIP2681_MAX_NONCE);
private static final int N_ROWS_TX_MAX =
Math.max(Math.max(NB_ROWS_TYPE_0, NB_ROWS_TYPE_1), NB_ROWS_TYPE_2);
private static final int NB_WCP_EUC_ROWS_FRONTIER_ACCESS_LIST = 6;
private final List<TxnDataComparisonRecord> callsToEucAndWcp = new ArrayList<>(N_ROWS_TX_MAX);
private final ArrayList<RlptxnOutgoing> valuesToRlptxn = new ArrayList<>(N_ROWS_TX_MAX);
private final ArrayList<RlptxrcptOutgoing> valuesToRlpTxrcpt = new ArrayList<>(N_ROWS_TX_MAX);
Expand All @@ -72,68 +75,73 @@ public TxndataOperation(Wcp wcp, Euc euc, TransactionProcessingMetadata tx) {
}

private void setCallsToEucAndWcp() {
// i+0
final Bytes row0arg1 = bigIntegerToBytes(tx.getInitialBalance());
// i + nonce_row_offset
final Bytes nonce = Bytes.minimalBytes(tx.getBesuTransaction().getNonce());
wcp.callLT(nonce, EIP_2681_MAX_NONCE);
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(nonce, EIP_2681_MAX_NONCE, true));

// i + initial_balance_row_offset
final Bytes initBalance = bigIntegerToBytes(tx.getInitialBalance());
final BigInteger value = tx.getBesuTransaction().getValue().getAsBigInteger();
final Bytes row0arg2 =
bigIntegerToBytes(
value.add(
outgoingLowRow6()
.multiply(BigInteger.valueOf(tx.getBesuTransaction().getGasLimit()))));
wcp.callLT(row0arg1, row0arg2);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(row0arg1, row0arg2, false));
wcp.callLT(initBalance, row0arg2);
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(initBalance, row0arg2, false));

// i+1
// i + sufficient_gas_row_offset
final Bytes row1arg1 = Bytes.minimalBytes(tx.getBesuTransaction().getGasLimit());
final Bytes row1arg2 = Bytes.minimalBytes(tx.getUpfrontGasCost());
wcp.callLT(row1arg1, row1arg2);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(row1arg1, row1arg2, false));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(row1arg1, row1arg2, false));

// i+2
// i + upper_limit_refunds_row_offset
final Bytes row2arg1 =
Bytes.minimalBytes(tx.getBesuTransaction().getGasLimit() - tx.getLeftoverGas());
final Bytes row2arg2 = Bytes.of(MAX_REFUND_QUOTIENT);
final Bytes refundLimit = euc.callEUC(row2arg1, row2arg2).quotient();
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToEuc(row2arg1, row2arg2, refundLimit));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToEuc(row2arg1, row2arg2, refundLimit));

// i+3
// i + effective_refund_row_offset
final Bytes refundCounterMax = Bytes.minimalBytes(tx.getRefundCounterMax());
final boolean getFullRefund = wcp.callLT(refundCounterMax, refundLimit);
this.callsToEucAndWcp.add(
callsToEucAndWcp.add(
TxnDataComparisonRecord.callToLt(refundCounterMax, refundLimit, getFullRefund));

// i+4
// i + detecting_empty_call_data_row_offset
final Bytes row4arg1 = Bytes.minimalBytes(tx.getBesuTransaction().getPayload().size());
final boolean nonZeroDataSize = wcp.callISZERO(row4arg1);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToIsZero(row4arg1, nonZeroDataSize));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToIsZero(row4arg1, nonZeroDataSize));

switch (tx.getBesuTransaction().getType()) {
case FRONTIER -> {
for (int i = 5; i < NB_ROWS_TYPE_0; i++) {
this.callsToEucAndWcp.add(TxnDataComparisonRecord.empty());
for (int i = NB_WCP_EUC_ROWS_FRONTIER_ACCESS_LIST; i < NB_ROWS_TYPE_0; i++) {
callsToEucAndWcp.add(TxnDataComparisonRecord.empty());
}
}
case ACCESS_LIST -> {
for (int i = 5; i < NB_ROWS_TYPE_1; i++) {
this.callsToEucAndWcp.add(TxnDataComparisonRecord.empty());
for (int i = NB_WCP_EUC_ROWS_FRONTIER_ACCESS_LIST; i < NB_ROWS_TYPE_1; i++) {
callsToEucAndWcp.add(TxnDataComparisonRecord.empty());
}
}
case EIP1559 -> {
// i+5
// i + max_fee_and_basefee_row_offset
final Bytes maxFee =
bigIntegerToBytes(tx.getBesuTransaction().getMaxFeePerGas().get().getAsBigInteger());
final Bytes row5arg2 = Bytes.minimalBytes(tx.getBaseFee());
wcp.callLT(maxFee, row5arg2);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row5arg2, false));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row5arg2, false));

// i+6
// i + maxfee_and_max_priority_fee_row_offset
final Bytes row6arg2 =
bigIntegerToBytes(
tx.getBesuTransaction().getMaxPriorityFeePerGas().get().getAsBigInteger());
wcp.callLT(maxFee, row6arg2);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row6arg2, false));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row6arg2, false));

// i+7
// i + computing_effective_gas_price_row_offset
final Bytes row7arg2 =
bigIntegerToBytes(
tx.getBesuTransaction()
Expand All @@ -142,7 +150,7 @@ private void setCallsToEucAndWcp() {
.getAsBigInteger()
.add(BigInteger.valueOf(tx.getBaseFee())));
final boolean result = wcp.callLT(maxFee, row7arg2);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row7arg2, result));
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLt(maxFee, row7arg2, result));
}
}
}
Expand All @@ -161,41 +169,41 @@ protected int computeLineCount() {

private void setRlptxnValues() {
// i+0
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_0,
Bytes.EMPTY,
Bytes.ofUnsignedInt(getTxTypeAsInt(tx.getBesuTransaction().getType()))));
// i+1
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_1,
tx.isDeployment() ? Bytes.EMPTY : tx.getEffectiveTo().slice(0, 4),
tx.isDeployment() ? Bytes.EMPTY : lowPart(tx.getEffectiveTo())));

// i+2
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_2,
Bytes.EMPTY,
Bytes.ofUnsignedLong(tx.getBesuTransaction().getNonce())));

// i+3
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_3,
tx.isDeployment() ? Bytes.of(1) : Bytes.EMPTY,
bigIntegerToBytes(tx.getBesuTransaction().getValue().getAsBigInteger())));

// i+4
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_4,
Bytes.ofUnsignedLong(tx.getDataCost()),
Bytes.ofUnsignedLong(tx.getBesuTransaction().getPayload().size())));

// i+5
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) COMMON_RLP_TXN_PHASE_NUMBER_5,
Bytes.EMPTY,
Expand All @@ -204,53 +212,53 @@ private void setRlptxnValues() {
switch (tx.getBesuTransaction().getType()) {
case FRONTIER -> {
// i+6
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) TYPE_0_RLP_TXN_PHASE_NUMBER_6,
Bytes.EMPTY,
Bytes.minimalBytes(tx.getEffectiveGasPrice())));
for (int i = 7; i < NB_ROWS_TYPE_0 + 1; i++) {
this.valuesToRlptxn.add(RlptxnOutgoing.empty());
valuesToRlptxn.add(RlptxnOutgoing.empty());
}
}
case ACCESS_LIST -> {
// i+6
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) TYPE_1_RLP_TXN_PHASE_NUMBER_6,
Bytes.EMPTY,
Bytes.minimalBytes(tx.getEffectiveGasPrice())));

// i+7
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) TYPE_1_RLP_TXN_PHASE_NUMBER_7,
Bytes.ofUnsignedInt(tx.numberWarmedKey()),
Bytes.ofUnsignedInt(tx.numberWarmedAddress())));

for (int i = 8; i < NB_ROWS_TYPE_1 + 1; i++) {
this.valuesToRlptxn.add(RlptxnOutgoing.empty());
valuesToRlptxn.add(RlptxnOutgoing.empty());
}
}

case EIP1559 -> {
// i+6
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) TYPE_2_RLP_TXN_PHASE_NUMBER_6,
bigIntegerToBytes(
tx.getBesuTransaction().getMaxPriorityFeePerGas().get().getAsBigInteger()),
bigIntegerToBytes(outgoingLowRow6())));

// i+7
this.valuesToRlptxn.add(
valuesToRlptxn.add(
RlptxnOutgoing.set(
(short) TYPE_2_RLP_TXN_PHASE_NUMBER_7,
Bytes.ofUnsignedInt(tx.numberWarmedKey()),
Bytes.ofUnsignedInt(tx.numberWarmedAddress())));

for (int i = 8; i < NB_ROWS_TYPE_2 + 1; i++) {
this.valuesToRlptxn.add(RlptxnOutgoing.empty());
valuesToRlptxn.add(RlptxnOutgoing.empty());
}
}
}
Expand All @@ -277,8 +285,8 @@ public void setRlptxrcptValues() {

public void setCallWcpLastTxOfBlock(final Bytes blockGasLimit) {
final Bytes arg1 = Bytes.minimalBytes(tx.getAccumulatedGasUsedInBlock());
this.wcp.callLEQ(arg1, blockGasLimit);
this.callsToEucAndWcp.add(TxnDataComparisonRecord.callToLeq(arg1, blockGasLimit, true));
wcp.callLEQ(arg1, blockGasLimit);
callsToEucAndWcp.add(TxnDataComparisonRecord.callToLeq(arg1, blockGasLimit, true));
}

private BigInteger outgoingLowRow6() {
Expand All @@ -298,8 +306,8 @@ public void traceTx(Trace trace, BlockSnapshot block, int absTxNumMax) {
final boolean isLastTxOfTheBlock =
tx.getRelativeTransactionNumber() == block.getNbOfTxsInBlock();
if (isLastTxOfTheBlock) {
this.valuesToRlptxn.add(RlptxnOutgoing.empty());
this.valuesToRlpTxrcpt.add(RlptxrcptOutgoing.emptyValue());
valuesToRlptxn.add(RlptxnOutgoing.empty());
valuesToRlpTxrcpt.add(RlptxrcptOutgoing.emptyValue());
}

final long fromHi = highPart(tx.getSender());
Expand Down Expand Up @@ -363,17 +371,17 @@ public void traceTx(Trace trace, BlockSnapshot block, int absTxNumMax) {
.gasCumulative(cumulativeGas)
.statusCode(tx.statusCode())
.codeFragmentIndex(tx.getCodeFragmentIndex())
.phaseRlpTxn(UnsignedByte.of(this.valuesToRlptxn.get(ct).phase()))
.outgoingHi(this.valuesToRlptxn.get(ct).outGoingHi())
.outgoingLo(this.valuesToRlptxn.get(ct).outGoingLo())
.eucFlag(this.callsToEucAndWcp.get(ct).eucFlag())
.wcpFlag(this.callsToEucAndWcp.get(ct).wcpFlag())
.inst(UnsignedByte.of(this.callsToEucAndWcp.get(ct).instruction()))
.argOneLo(this.callsToEucAndWcp.get(ct).arg1())
.argTwoLo(this.callsToEucAndWcp.get(ct).arg2())
.res(this.callsToEucAndWcp.get(ct).result())
.phaseRlpTxnrcpt(UnsignedByte.of(this.valuesToRlpTxrcpt.get(ct).phase()))
.outgoingRlpTxnrcpt(Bytes.ofUnsignedLong(this.valuesToRlpTxrcpt.get(ct).outgoing()))
.phaseRlpTxn(UnsignedByte.of(valuesToRlptxn.get(ct).phase()))
.outgoingHi(valuesToRlptxn.get(ct).outGoingHi())
.outgoingLo(valuesToRlptxn.get(ct).outGoingLo())
.eucFlag(callsToEucAndWcp.get(ct).eucFlag())
.wcpFlag(callsToEucAndWcp.get(ct).wcpFlag())
.inst(UnsignedByte.of(callsToEucAndWcp.get(ct).instruction()))
.argOneLo(callsToEucAndWcp.get(ct).arg1())
.argTwoLo(callsToEucAndWcp.get(ct).arg2())
.res(callsToEucAndWcp.get(ct).result())
.phaseRlpTxnrcpt(UnsignedByte.of(valuesToRlpTxrcpt.get(ct).phase()))
.outgoingRlpTxnrcpt(Bytes.ofUnsignedLong(valuesToRlpTxrcpt.get(ct).outgoing()))
.validateRow();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,11 @@ public TransactionProcessingMetadata(

this.initialBalance = getInitialBalance(world);

// Note: Besu's dataCost computation contains the 21_000 transaction cost
// Note: Besu's dataCost computation contains
// - the 21_000 transaction cost (we deduce it)
// - the contract creation cost in case of deployment (we set deployment to false to not add it)
this.dataCost =
ZkTracer.gasCalculator.transactionIntrinsicGasCost(
besuTransaction.getPayload(), isDeployment)
ZkTracer.gasCalculator.transactionIntrinsicGasCost(besuTransaction.getPayload(), false)
- GAS_CONST_G_TRANSACTION;
this.accessListCost =
besuTransaction.getAccessList().map(ZkTracer.gasCalculator::accessListGasCost).orElse(0L);
Expand Down
2 changes: 1 addition & 1 deletion gradle/trace-files.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ tasks.register('binreftable', TraceFilesTask) {
['txndata'].each {moduleName ->
tasks.register(moduleName, TraceFilesTask) {
group "Trace files generation"
dependsOn corsetExists
// dependsOn corsetExists

module = moduleName
files = ["${moduleName}/columns.lisp", "constants/constants.lisp", "${moduleName}/constants.lisp"]
Expand Down
2 changes: 1 addition & 1 deletion zkevm-constraints
Loading