Як безпечно змінити RPC-ендпоінт

2026-09-03

Як безпечно змінити RPC-ендпоінт

Гаманець не зберігає копію ланцюга. Він питає вузол, і адреса, яку він питає, — це ендпоінт у ваших мережевих налаштуваннях. Зміна цієї адреси займає кілька секунд і змінює того, хто відповідає на кожне ваше запитання про власний баланс. Саме тому це варто робити свідомо, а не рефлекторно.

Як безпечно змінити RPC-ендпоінт: ключові моменти стисло

Що таке ендпоінт у мережевих налаштуваннях

Ендпоінт віддаленого виклику процедур — це вебадреса, на яку гаманець надсилає свої запитання. Чи є кошти на цій адресі, скільки зараз коштує транзакція, чи потрапила ця вже до блоку, передай, будь ласка, цей підписаний об'єкт мережі. Ендпоінт відповідає, і його відповідь — це те, що показує ваш екран.

Машина за цією адресою — це RPC-вузол, вузол, який додатково відкриває публічний інтерфейс, щоб гаманцям і застосункам не доводилося тримати власний. Далі це налаштування називаємо просто ендпоінтом.

З такого влаштування випливають дві речі, і вони тягнуть у протилежні боки. Ендпоінт не є частиною ланцюга, тож його заміна нічого не змінює у ваших ключах, вашій адресі чи балансі, записаному на ній. Ендпоінт водночас є єдиним, крізь що ви бачите ланцюг, тож його заміна змінює все, що вам показують.

Навіщо його взагалі міняти

Звичайна причина — той, що є, перестав добре відповідати. Вузол, який лежить, обмежує вас за частотою запитів або відстає від вершини ланцюга, нічого з цього не оголошує. Він видає застарілі баланси, підтверджену транзакцію, яка й далі показується як очікувана, або відправлення, що падає на з'єднанні, хоча з вашим рахунком усе гаразд.

Друга причина — покриття. Гаманець постачається з коротким списком мереж, а ланцюг поза цим списком доводиться додавати вручну, разом з ендпоінтом. Додати мережу і додати ендпоінт — це одна й та сама дія в одному й тому самому діалоговому вікні.

Третя причина — приватність. Кожен ваш запит проходить через одного оператора, тож цей оператор може пов'язати ваші адреси між собою та з IP-адресою. Перехід до іншого постачальника переміщує цю видимість, а не усуває її, тому сприймайте вибір як вибір того, хто дивиться, а не як спосіб сховатися.

Що ендпоінт може змінити, а що ні

Межа — це підпис. Гаманець збирає транзакцію локально й підписує її ключем, який ніколи не залишає пристрій, тож ендпоінт отримує готовий об'єкт, який не може відредагувати, не зробивши його недійсним. Він може відмовитися передавати його, затримати або переслати деінде, але не може змінити ані суму, ані отримувача всередині.

Що він може — це формувати ті дані, за якими ви ухвалюєте рішення. Баланси, списки токенів, оцінки комісії та статус підтвердження — усе це приходить через ендпоінт, і ворожий вільний повідомляти цифри, просто вигадані. Ось де справжня небезпека: не вкрадений ключ, а рішення, ухвалене за хибною картиною.

На що ви дивитесь Чи може ворожий ендпоінт це підробити Що це вирішує
Баланс і список токенів Так Прочитати ту саму адресу з другого джерела
Оцінка комісії Так Перевірити комісію, яку показує гаманець, перед підписом
Історія транзакцій Так Оглядач, який тримає власну інфраструктуру
Статус підтвердження Так Перевірити ще раз через інший ендпоінт
Вміст того, що ви підписали Ні Підпис покриває корисне навантаження
Ваш приватний ключ Ні Він нікуди не надсилається

Практичний наслідок такий: ендпоінт заслуговує на ту саму прискіпливість, що й сайт, до якого ви підключали б гаманець. Адреса, вставлена в чат підтримки або віддана пошуковою рекламою, лежить у тій самій шухляді, що й фальшивий криптосайт, і з тієї самої причини.

Ідентифікатор мережі — та перевірка, що ловить не ту мережу

Кожна мережа несе ідентифікатор, який живе всередині самої підписаної транзакції. EIP-155 запровадив його, щоб транзакція, підписана для одного ланцюга, не була дійсною в іншому, і працює це через вкладання ідентифікатора мережі в ті дані, які хешуються й підписуються. Підпис, зроблений під одним ідентифікатором мережі, нічого не означає в ланцюзі, що використовує інший.

Це дає вам перевірку, яка не вимагає нікому довіряти. Метод eth_chainId повертає ідентифікатор мережі, що використовується для підписання транзакцій із захистом від повторного відтворення, тож в ендпоінта можна прямо запитати, яку мережу він вважає своєю. Якщо ця відповідь розходиться з ідентифікатором мережі, який ваш гаманець зберігає для цього запису мережі, вони описують не той самий ланцюг.

EIP-3085, запропонований інтерфейс для програмного додавання ланцюга, вбудовує це саме порівняння в гаманець. Він вимагає відхилити запит, коли заявлений ідентифікатор мережі не збігається з тим, що повідомляють передані ендпоінти, і зазначає, що ці ендпоінти не можна вважати чесними, правильними чи навіть спрямованими на той самий ланцюг. З боку підписання його вказівка ще вужча: використовувати лише той ідентифікатор мережі, який гаманець уже має, і ніколи той, що отримано від ендпоінта.

Перевірте ендпоінт, перш ніж щось через нього пускати

Чотири перевірки, у порядку від найдешевшої. Спершу підтвердьте ідентифікатор мережі, бо це єдина відповідь, яка не є питанням міри. Далі порівняйте повідомлену висоту блоку з незалежним джерелом. Вузол, що далеко відстав від вершини, не ворожий, він застарілий, і застарілості достатньо, щоб усе інше, що він вам каже, було хибним.

Потім порівняйте те, що ви вже знаєте. Відкрийте одну адресу, баланс якої можете підтвердити деінде, і подивіться, чи збігаються два види. Розбіжність на цьому місці каже вам зупинитися, перш ніж щось підписувати, і ще не каже, у чому причина — у відставанні чи в злому намірі.

Нарешті, коли ендпоінт для вас новий, а суми ні, спершу надішліть маленьку транзакцію й подивіться, як вона підтверджується. Річ не в тому, як мало під загрозою; річ у тому, що повний оберт задіює і відправлення, і зчитування назад — дві половини, які поганий ендпоінт ламає окремо.

Як додати його вручну і не зламати гаманець

Додавайте, а не перезаписуйте. Там, де гаманець дозволяє тримати кілька записів для одного ланцюга, збережений робочий запис означає, що невдала зміна скасовується вибором попереднього запису, а не повторним набором URL, якої у вас уже немає. Називайте кожен запис за його оператором, щоб перемикач читався як список сторін, а не як список однакових назв мереж.

Решту запису заповнюйте з документації самої мережі, а не від того, хто дав вам ендпоінт. Ідентифікатор мережі, символ монети та оглядач блоків — усе це частина того, що гаманець показуватиме потім, і запис із правильним ендпоінтом та неправильним символом тихо позначить неправильною назвою кожну суму, на яку ви подивитесь.

Перевіряйте запис після збереження, а не до нього. Діалог перевіряє те, що ви набрали; важить те, що робить збережений запис. Перемкніться на нього, дайте балансам завантажитись і підтвердьте, що вони збігаються з тим, що показував попередній запис. Запис мережі, який не погоджується з попередником щодо вашого власного балансу, щось вам каже, і дізнатися це треба до підпису.

Коли зміна не допомагає

Новий ендпоінт змінює те, що ви можете бачити, тож він лагодить проблеми, зроблені з відсутньої або застарілої інформації. Він не дотягується до того, що вже сталося в ланцюзі. Розіслана транзакція лежить у мемпулі кожного вузла, який її отримав, і зміна вузла, з яким говорить ваш гаманець, її не відкликає.

Та сама межа стосується збою, який ланцюг уже записав. Транзакція, що виконалася і була відкочена, — це reverted, і цей результат вписано в квитанцію, яку будь-який чесний ендпоінт повідомляє однаково. Побачити його з двох незалежних ендпоінтів означає, що відповідь не в тому, щоб шукати третій.

Між цими двома випадками лежить клас помилок, який зміна справді знімає, бо він походить із закешованого вигляду, а не з ланцюга. Гаманець, що повідомляє завеликий nonce після зміни мережі або перевстановлення, порівнює власний лічильник із тим, що сказав йому ендпоінт, і підключення через справний вузол дає йому перечитати цей лічильник із джерела, яке не відстало.

Підсумок

Ендпоінт не є ані частиною ланцюга, ані частиною безпеки ключів вашого гаманця, але він — усе, що ви можете побачити, і рішення, ухвалене за вигаданими цифрами, коштує стільки ж, скільки й ухвалене після крадіжки ключа. Зміна ендпоінта — це буденне полагодження застарілої мережі або такої, що не відповідає, а дисципліна, яка робить це безпечним, невелика: знати, хто керує тим, який ви додаєте, підтвердити ідентифікатор мережі й зберегти запис, що вже працював.

Перевірка ідентифікатора мережі — найдешевша з чотирьох, і саме її треба робити першою. Запитайте в ендпоінта, який ланцюг він обслуговує, і порівняйте це з тим, що гаманець уже має, бо це одне порівняння ловить і чесну помилку додавання не тієї мережі, і нечесний випадок ендпоінта, який хоче, щоб ви вважали себе десь інде. Щоб продовжити вивчати основи, читайте інші матеріали Bitbase Academy.

Схожі матеріали

Інші матеріали Bitbase на цю тему:

- Максимальну комісію за транзакцію перевищено: що означає це попередження гаманця

- Перевищено ліміт запитів RPC і що з цим робити

- Що таке криптовалютний QR-код?

- Ордери fill or kill, immediate or cancel і all or none

- Чи корелює біткоїн з акціями, золотом або схильністю до ризику?

Застереження: Ця стаття є освітнім матеріалом Bitbase Academy і надається лише для інформації. Вона не є інвестиційною, торговою, податковою чи фінансовою порадою. Криптоактиви волатильні — оцінюйте ризики самостійно. Написано станом на вересень 2026 року; орієнтуйтеся на найновішу офіційну інформацію.

Джерела

[1] Ethereum Improvement Proposals, EIP-155: Simple replay attack protection, статус Final eips.ethereum.org

[2] Ethereum Improvement Proposals, EIP-3085: wallet_addEthereumChain RPC Method, статус Stagnant eips.ethereum.org

[3] Документація для розробників ethereum.org, JSON-RPC API, метод eth_chainId ethereum.org

Пов'язані статті

Більше