xermicus
dab29bc89b
bugfix missing byte swap for the create2 salt value ( #272 )
...
Found in https://github.com/paritytech/contract-issues/issues/45 , thanks
@albertov19 and @sekisamu
---------
Signed-off-by: xermicus <cyrill@parity.io >
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-04-03 15:20:22 +02:00
xermicus
4a9b651235
Support solc v0.8.29 ( #261 )
...
No observable changes w.r.t. YUL compilation.
- Mark solc v0.8.29 as the latest supported version
- Add integration test for solc v0.8.29 specific feature
- Use the latest version on CI
- Drive-by fix linter complaints and a two types in the CI yaml files
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
Signed-off-by: xermicus <cyrill@parity.io >
2025-03-18 13:01:15 +01:00
xermicus
93788e72e9
integration: additional mcopy test ( #245 )
...
Closes #237
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-02-27 11:39:31 +01:00
xermicus
296a226d0b
integration: add delegate call corner case test ( #243 )
...
Closes #235
---------
Signed-off-by: xermicus <cyrill@parity.io >
2025-02-27 11:10:00 +01:00
xermicus
84deb3a29d
integration: add function return type test ( #244 )
...
Closes #236
2025-02-27 10:37:37 +01:00
xermicus
a07968205b
llvm-context: modularize compiler builtin functions ( #234 )
...
- Add the revive runtime function interface to minimize boiler plate
code.
- Outline heavily repeated code into dedicated functions to bring down
code size.
- The code size tests builds optimized for size.
- Function attributes are passed as slices.
This significantly brings down the code size for all OpenZeppelin wizard
contracts (using all possible features) compiled against OpenZeppelin
`v5.0.0` with size optimizations.
|contract|| `-Oz` main | `-Oz` PR || `-O3` main | `-O3` PR |
|-|-|-|-|-|-|-|
|erc1155.sol||100K|67K||114K|147K|
|erc20.sol||120K|90K||160K|191K|
|erc721.sol||128K|101K||178K|214K|
|governor.sol||226K|165K||293K|349K|
|rwa.sol||116K|85K||154K|185K|
|stable.sol||116K|86K||155K|192K|
On the flip side this introduces a heavy penalty for cycle optimized
builds. Setting the no-inline attributes for cycle optimized builds
helps a lot but heavily penalizes runtime speed (LLVM does not yet
inline everything properly - to be investigated later on).
Next steps:
- Modularize more functions
- Refactor the YUL function arguments to use pointers instead of values
- Afterwards check if LLVM still has trouble inline-ing properly on O3
or set the no-inline attribute if it does not penalize runtime
performance too bad.
2025-02-25 16:47:01 +01:00
xermicus
cb268850a9
llvm-context: remove the linear memory pointer indirection ( #211 )
2025-02-13 13:21:43 +01:00
xermicus
374563bbe5
integration: add function pointer integration test ( #205 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-02-10 18:50:12 +01:00
xermicus
60fc09f787
llvm-context: disable call re-entrancy for send and transfer ( #196 )
2025-02-06 16:49:50 +01:00
xermicus
de3e7bf253
integration: add create2 test case with duplicate salt ( #188 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-02-04 14:04:14 +01:00
xermicus
bfda465c32
remove support for legacy evm assembly ( #186 )
2025-02-03 14:13:43 +01:00
xermicus
1a8a7926e9
implement the coinbase opcode ( #179 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2025-01-29 15:24:45 +01:00
Cyrill Leutwiler
d8752ec6b5
the basefee opcode ( #142 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-12-19 18:59:10 +01:00
Cyrill Leutwiler
22070a824d
the gas limit opcode ( #139 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-12-18 20:31:42 +01:00
Cyrill Leutwiler
14a598e840
implement the gas opcode ( #136 )
2024-12-18 17:19:32 +01:00
Cyrill Leutwiler
f0d9d44dce
Implement the gasprice opcode ( #127 )
2024-11-29 17:14:27 +01:00
Ermal Kaleci
01b5ed5ba3
Implement delegate_call ( #80 )
2024-11-23 18:05:21 +01:00
Cyrill Leutwiler
6a120463c2
implement the blockhash opcode ( #114 )
2024-11-15 13:11:04 +01:00
Cyrill Leutwiler
43d2ef3ce9
implement the code size opcodes ( #107 )
2024-10-31 11:46:47 +01:00
Cyrill Leutwiler
5b3b90db83
support the origin opcode ( #103 )
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-10-29 18:40:25 +01:00
Ermal Kaleci
ee83d28a51
Implement extcodehash ( #77 )
2024-10-21 10:13:50 +02:00
Ermal Kaleci
d9842b5427
Fix implementation for balance_of ( #79 )
...
The balance_of syscall is now available in pallet-revive.
- Fix balance_of implementation to use correct runtime api
- Add build_address_argument_store helper to be used for address arguments
2024-10-12 12:35:10 +02:00
Cyrill Leutwiler
705d1d7866
run signed_remainder test in differential mode ( #75 )
2024-10-10 19:26:04 +02:00
Cyrill Leutwiler
d5d419cefc
implement immutable variables codegen ( #70 )
2024-10-10 13:33:00 +02:00
xermicus
b344e0cff5
Revert "implement immutable variables codegen"
...
This reverts commit 0e6a6d12c3 .
2024-10-09 03:43:05 +02:00
xermicus
0e6a6d12c3
implement immutable variables codegen
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-10-09 03:37:56 +02:00
Cyrill Leutwiler
6585973e99
Updated call semantics ( #56 )
...
- Update pallet-revive dependency
- Implement calls according to pallet-revive call semantics
- Switch to the new return data API in pallet revive and get rid of return data buffer
- Remove a bunch of resulting dead code
2024-09-28 20:03:03 +02:00
Cyrill Leutwiler
2955f77772
implement self balance
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-09-09 09:40:24 +02:00
Cyrill Leutwiler
d47539159b
enable call context address tests
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-09-04 12:55:44 +02:00
Cyrill Leutwiler
393d90165e
pallet_revive: Account20 ( #41 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-09-04 12:42:41 +02:00
Cyrill Leutwiler
d2f76b645f
switch to pallet_revive runtime ( #40 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-09-03 17:18:22 +02:00
Cyrill Leutwiler
d763e30b8f
Simplify test case declaration ( #36 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-08-26 15:15:33 +02:00
Cyrill Leutwiler
7844bbb604
add runner crate ( #34 )
...
Signed-off-by: xermicus <cyrill@parity.io >
Co-authored-by: xermicus <cyrill@parity.io >
Co-authored-by: pgherveou <pgherveou@gmail.com >
2024-08-24 03:20:52 +02:00
xermicus
10c7045e15
Implement CODESIZE
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-06 15:10:21 +02:00
xermicus
39d78179d4
implement transient storage
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-05 17:34:17 +02:00
xermicus
d9a304d162
integration: cache contract blob artifacts after compilation
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-04 19:14:52 +02:00
xermicus
2d0a0e2e81
implement BYTE
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-04 18:45:06 +02:00
xermicus
354b1c8d79
do not byte swap storage values
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-03 17:16:49 +02:00
Cyrill Leutwiler
5ff17da695
Implement balance ( #20 )
2024-06-03 12:21:49 +02:00
Cyrill Leutwiler
1ba806be1f
Contract calls ( #19 )
2024-06-01 20:48:20 +02:00
Cyrill Leutwiler
532721f3be
Implement MCOPY ( #18 )
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-29 21:43:22 +02:00
xermicus
5138fe3d06
implement EXTCODESIZE
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-22 22:56:03 +02:00
Cyrill Leutwiler
06aa289d9b
Constructors and contract creation ( #11 )
...
Implement constructor logic and support create/create2 in the mock runtime
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-22 21:35:32 +02:00
Cyrill Leutwiler
d8be21f156
update PolkaVM
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-05-15 10:12:52 +02:00
xermicus
83bf9d6041
events
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-14 09:46:18 +02:00
xermicus
02055c73bb
extend mock runtime to allow executing constructors and cross contract calls
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-13 13:50:35 +02:00
xermicus
0e90317488
add contract name to integration to integration test cases
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-10 13:47:47 +02:00
xermicus
03a1918993
parallelize tests
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-10 10:54:01 +02:00
xermicus
6af889c1ff
implement division and remainder operations
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-08 23:21:16 +02:00
Cyrill Leutwiler
ea63991617
implement address and msg.sender
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-05-08 16:09:23 +02:00