@@ -495,9 +495,7 @@ evmc::result EVMHost::precompileIdentity(evmc_message const& _message) noexcept
495
495
evmc::result EVMHost::precompileModExp (evmc_message const &) noexcept
496
496
{
497
497
// TODO implement
498
- evmc::result result ({});
499
- result.status_code = EVMC_FAILURE;
500
- return result;
498
+ return resultWithFailure ();
501
499
}
502
500
503
501
evmc::result EVMHost::precompileALTBN128G1Add (evmc_message const & _message) noexcept
@@ -773,6 +771,11 @@ evmc::result EVMHost::precompileALTBN128G1Mul(evmc_message const& _message) noex
773
771
774
772
evmc::result EVMHost::precompileALTBN128PairingProduct (evmc_message const & _message) noexcept
775
773
{
774
+ // Input must be divisible by 192.
775
+ // TODO: validate points
776
+ if (_message.input_size % 192 )
777
+ return resultWithFailure ();
778
+
776
779
// This is a partial implementation - it always returns "success"
777
780
bytes static data = fromHex (" 0000000000000000000000000000000000000000000000000000000000000001" );
778
781
return resultWithGas (_message, data);
@@ -786,11 +789,14 @@ evmc::result EVMHost::precompileGeneric(
786
789
if (_inOut.count (input))
787
790
return resultWithGas (_message, _inOut.at (input));
788
791
else
789
- {
790
- evmc::result result ({});
791
- result.status_code = EVMC_FAILURE;
792
- return result;
793
- }
792
+ return resultWithFailure ();
793
+ }
794
+
795
+ evmc::result EVMHost::resultWithFailure () noexcept
796
+ {
797
+ evmc::result result ({});
798
+ result.status_code = EVMC_FAILURE;
799
+ return result;
794
800
}
795
801
796
802
evmc::result EVMHost::resultWithGas (
0 commit comments