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
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
60fc09f787
llvm-context: disable call re-entrancy for send and transfer ( #196 )
2025-02-06 16:49:50 +01:00
Ermal Kaleci
ee83d28a51
Implement extcodehash ( #77 )
2024-10-21 10:13:50 +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
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
2d0a0e2e81
implement BYTE
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-06-04 18:45:06 +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
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
xermicus
95ff85c6d1
implement block.number and block.timestamp
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-05-07 18:03:17 +02:00
xermicus
018d9f39fc
measure erc20 code size
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-04-26 15:51:14 +02:00
xermicus
3d44685168
measure flipper code size
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-04-26 10:51:41 +02:00
xermicus
44ae9e77d5
clippies
...
Signed-off-by: xermicus <cyrill@parity.io >
2024-04-26 10:39:56 +02:00
Cyrill Leutwiler
45d53f2ee4
test for codesizes
...
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2024-04-25 17:39:49 +02:00
Cyrill Leutwiler
df8ebb61ec
Integrate benchmarks and differential tests against an EVM interpreter ( #7 )
2024-04-24 18:51:19 +02:00