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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user