Как кодировать входные данные на etherscan при запуске смарт-контракта без открытого исходного кода?

Я развернул смарт-контракт на Ethereum. Когда я его запускал, имя функции и параметры отображались на etherscan. Как я могу скрыть эту информацию? введите здесь описание изображения


person kasuki    schedule 25.04.2021    source источник
comment
Скрыть данные в публичном блокчейне невозможно, потому что по определению публичного все публично.   -  person Mikko Ohtamaa    schedule 26.04.2021


Ответы (1)


Etherscan использует словарь, который переводит сигнатуру функции в имя функции (в вашем случае с 0x38ed1739 на swapExactTokensForTokens(uint256,uint256,address[],address,uint256)).

Если вы не хотите, чтобы они переводили имя функции, вам нужно переименовать ваши контрактные функции (это определение и все места, которые их вызывают) на какую-нибудь тарабарщину, например kdjgklfdjiwefw(uint256,uint256,address[],address,uint256).

Имейте в виду, что внешние контракты могут захотеть вызвать ваши функции по ожидаемому имени (например, swapExactTokensForTokens), и они не смогут этого сделать, если функция с таким именем не существует.

Если вы хотите запретить Etherscan показывать переводы, но НЕ переименовывать свои функции - в настоящее время это невозможно сделать.

person Petr Hejda    schedule 25.04.2021
comment
Словарь общедоступен? - person hliu; 04.06.2021
comment
@hliu Конкретный словарь, который использует Etherscan - вероятно, нет. Но вы можете сделать свой собственный, сканируя ABI (или исходные коды) различных контрактов. - person Petr Hejda; 04.06.2021
comment
Спасибо за ответ. Сканирование исходного кода всех контрактов кажется трудоемким :) Означает ли это, что иногда могут быть некоторые вновь созданные контракты, которые Etherscan не может сопоставить с именем функции, потому что не сканировал вовремя? - person hliu; 04.06.2021
comment
У меня нет данных, чтобы проверить это, но это похоже на возможность. - person Petr Hejda; 04.06.2021