mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
More aggressive runtime code exclusion.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
function longdata(S memory) pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
|
||||
struct S {
|
||||
uint x;
|
||||
}
|
||||
|
||||
using { longdata } for S;
|
||||
|
||||
contract C {
|
||||
bytes data;
|
||||
constructor() {
|
||||
S memory x;
|
||||
data = x.longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,34 @@
|
||||
library L {
|
||||
function longdata() pure internal returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
contract C {
|
||||
bytes data;
|
||||
constructor() {
|
||||
data = L.longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function L.longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,31 @@
|
||||
library L {
|
||||
function longdata() pure internal returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C {
|
||||
bytes data;
|
||||
function () pure returns (bytes memory) f;
|
||||
constructor() {
|
||||
data = L.longdata();
|
||||
f = L.longdata;
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
return keccak256(data) == keccak256(f());
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,36 @@
|
||||
==== Source: mod.sol ====
|
||||
function longdata() pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
==== Source: main.sol ====
|
||||
import "mod.sol" as M;
|
||||
|
||||
contract C {
|
||||
bytes data;
|
||||
constructor() {
|
||||
data = M.longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,32 @@
|
||||
==== Source: mod.sol ====
|
||||
function longdata() pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
==== Source: main.sol ====
|
||||
import "mod.sol" as M;
|
||||
|
||||
contract C {
|
||||
bytes data;
|
||||
function () pure returns (bytes memory) f;
|
||||
constructor() {
|
||||
data = M.longdata();
|
||||
f = M.longdata;
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
return keccak256(data) == keccak256(f());
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,35 @@
|
||||
abstract contract S {
|
||||
function longdata() internal pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is S {
|
||||
bytes data;
|
||||
constructor() {
|
||||
data = S.longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
abstract contract S {
|
||||
function longdata() internal pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is S {
|
||||
bytes data;
|
||||
function () pure returns (bytes memory) f;
|
||||
constructor() {
|
||||
data = S.longdata();
|
||||
f = S.longdata;
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
return keccak256(data) == keccak256(f());
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,35 @@
|
||||
abstract contract S {
|
||||
function longdata() internal pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is S {
|
||||
bytes data;
|
||||
constructor() {
|
||||
data = super.longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,31 @@
|
||||
abstract contract S {
|
||||
function longdata() internal pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is S {
|
||||
bytes data;
|
||||
function () pure returns (bytes memory) f;
|
||||
constructor() {
|
||||
data = super.longdata();
|
||||
f = super.longdata;
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
return keccak256(data) == keccak256(f());
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,39 @@
|
||||
abstract contract S {
|
||||
function longdata() internal virtual pure returns (bytes memory);
|
||||
}
|
||||
|
||||
abstract contract X is S {
|
||||
function longdata() internal override pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is X {
|
||||
bytes data;
|
||||
constructor() {
|
||||
data = longdata();
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
// Tests that the function longdata is not
|
||||
// included in the runtime code.
|
||||
uint x;
|
||||
assembly {
|
||||
x := codesize()
|
||||
}
|
||||
return x < data.length;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
@@ -0,0 +1,35 @@
|
||||
abstract contract S {
|
||||
function longdata() internal virtual pure returns (bytes memory);
|
||||
}
|
||||
|
||||
abstract contract X is S {
|
||||
function longdata() internal override pure returns (bytes memory) {
|
||||
return
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
" .RPOKIDAS,.CKUMT.,ORKAD ,NOKIDHA .CGKIAD OVHAMS CUAOGT DAKN OIT"
|
||||
"xasopca.pngaibngidak.jbtnudak.cAP.BRRSMCPJAGPD KIAJDOMHUKR,SCPID"
|
||||
"M,SEYBDXCNTKIMNJGO;DUIAQBQUEHAKMPGIDSAJCOUKANJBCUEBKNA.GIAKMV.TI"
|
||||
"AJMO<KXBANJCPGUD ABKCJIDHA NKIMAJU,EKAMHSO;PYCAKUM,L.UCA MR;KITA"
|
||||
"apibakrpidbacnidkacjadtnpdkylca.,jda,r.kuadc,jdlkjd',c'dj, ncg d"
|
||||
"anosumantkudkc,djntudkantuadnc,ui,c.ud,.nujdncud,j.rsch'pkl.'pih";
|
||||
}
|
||||
}
|
||||
|
||||
contract C is X {
|
||||
bytes data;
|
||||
function () pure returns (bytes memory) f;
|
||||
constructor() {
|
||||
data = super.longdata();
|
||||
f = super.longdata;
|
||||
}
|
||||
function test() public view returns (bool) {
|
||||
return keccak256(data) == keccak256(f());
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
Reference in New Issue
Block a user