Подпишись на канал фаундера и разработчика экосистемы tonpie
Можно ли изменить развернутый смарт-контракт на TON?
- 
							
							
							
							
Блокчейны считаются "доступными только для добавления" и неизменяемыми. Но я слышал, что в мире TON смарт-контракты могут изменять свой собственный код. Итак, возможно ли изменить код контракта после его развертывания и как это работает? 
 Этот вопрос был импортирован из чата Telegram: <***Скрыто*** click to show
 
- 
							
							
							
							
Да, можно изменить код контракта в TON. Просто реализуйте это внутри своего смарт-контракта, который будет обновлять код контракта с помощью функции стандартной библиотеки FunC (stdlib.fc): () set_code(cell new_code) impure asm "SETCODE";Простая реализация внутри recv_internal:#include "stdlib.fc"; global slice ctx_owner; () recv_internal(int my_balance, int msg_value, cell in_msg_full, slice in_msg_body) impure { slice cs = in_msg_full.begin_parse(); int flags = cs~load_uint(4); if (flags & 1) { ;; ignore all bounced messages return (); } ;; Admin methods ;; if the in_msg_body is empty, then it is a simple money transfer if (equal_slice_bits(sender_addr, ctx_owner) & (~ in_msg_body.slice_empty?())) { int op = in_msg_body~load_uint(32); if (op == "op::update_code"c) { set_code(in_msg_body~load_ref()); } } }Кроме того, вы можете найти спецификацию set_codeздесь: https://ton.org/docs/develop/func/stdlib/#set_code