fix(intrinsics): переместить assert_recover_key_account в конец таблиц — ABI compat

Вставка нового intrinsic в середину intrinsic_mapping/genesis_intrinsics/eos-vm
регистраций сдвинула индексы всех последующих host functions на 1. Старые wasm
(включая eosio.system, скомпилированный до v5.2.0) по импортам "env.X" попадают
на новые индексы, и context-aware вызов из onblock приземляется на
context-free-only assert_recover_key_account → REJECT каждого блока с
"this API may only be called from context_free apply".

Перенос в конец всех трёх таблиц восстанавливает порядок индексов для ранее
существовавших intrinsics. Сам метод остаётся доступным с новым (большим)
индексом — будущие wasm-сборки увидят его как обычно.
This commit is contained in:
coopops
2026-05-11 07:53:19 +00:00
parent 68339a64f5
commit 5bb051f9ad
3 changed files with 6 additions and 6 deletions
+2 -2
View File
@@ -119,7 +119,6 @@ const std::vector<const char*> genesis_intrinsics = {
"db_end_i64",
"assert_recover_key",
"recover_key",
"assert_recover_key_account",
"assert_sha256",
"assert_sha1",
"assert_sha512",
@@ -172,7 +171,8 @@ const std::vector<const char*> genesis_intrinsics = {
"memcpy",
"memmove",
"memcmp",
"memset"
"memset",
"assert_recover_key_account"
};
} } // namespace eosio::chain
@@ -142,7 +142,6 @@ inline constexpr auto get_intrinsic_table() {
"env.db_idx256_previous",
"env.assert_recover_key",
"env.recover_key",
"env.assert_recover_key_account",
"env.assert_sha256",
"env.assert_sha1",
"env.assert_sha512",
@@ -279,7 +278,8 @@ inline constexpr auto get_intrinsic_table() {
"env.bls_g2_map",
"env.bls_fp_mod",
"env.bls_fp_mul",
"env.bls_fp_exp"
"env.bls_fp_exp",
"env.assert_recover_key_account"
);
}
inline constexpr std::size_t find_intrinsic_index(std::string_view hf) {
@@ -433,7 +433,6 @@ REGISTER_LEGACY_HOST_FUNCTION(get_active_producers);
// crypto api
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_recover_key);
REGISTER_LEGACY_CF_HOST_FUNCTION(recover_key);
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_recover_key_account);
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_sha256);
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_sha1);
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_sha512);
@@ -649,7 +648,8 @@ REGISTER_CF_HOST_FUNCTION( bls_g1_map );
REGISTER_CF_HOST_FUNCTION( bls_g2_map );
REGISTER_CF_HOST_FUNCTION( bls_fp_mod );
REGISTER_CF_HOST_FUNCTION( bls_fp_mul );
REGISTER_CF_HOST_FUNCTION( bls_fp_exp );
REGISTER_CF_HOST_FUNCTION( bls_fp_exp );
REGISTER_LEGACY_CF_HOST_FUNCTION(assert_recover_key_account);
} // namespace webassembly
} // namespace chain