Nano Hash - криптовалюты, майнинг, программирование

Проверка подписанного сообщения Ethereum (Web3) в PHP

Как я могу проверить сообщение, подписанное Ethereum, с помощью PHP?

Сообщение подписывается с помощью функции web3.personal.sign в Web3.js, после чего подпись отправляется на сервер. Как я могу проверить это с помощью PHP?

Есть ли готовые пакеты (на Packagist) или мне нужно сделать это с нуля? Можно ли это сделать без какого-либо подключения к узлам RPC или цепочке (вне цепочки)?

Я уже нашел некоторый вопрос о это на Ethereum StackExchange, но оно очень сложное и немного старое, поэтому я хочу знать, есть ли более новое и лучшее решение.

Я также нашел какой-то пакет на GitHub, но не знаю, будет ли он работать с web3.personal.sign.

Некоторые ссылки, которые я нашел:


Ответы:


1

Проверка подписанного сообщения возможна с помощью пакета php-ecrecover.

Вы можете получить исходный адрес сообщения, используя этот пакет, а затем проверить, совпадает ли он с ожидаемым адресом.

Знак JS:

let message = 'Hello World!'
let address = web3.eth.coinbase

web3.personal.sign(web3.fromUtf8(message), address, console.log);

Проверка PHP:

$address = '0xe12Aa5FB5659bb0DB3f488e29701fE303bcBAf65';
$message = 'Hello World!';
$signed = '0x2cb6b41177a5e6690ebbc61f182758fcf8f54403edcb848fc1089a772227d55163804b4dc7fcf72d15f0d977d741f6dd6bcc4fc4c74916378afcad06be77b2101b';

if ($address == personal_ecRecover($message, $signed)) {
    echo 'Message verified';
} else {
    echo 'Message not verified';
}
18.11.2018
  • Обновление: также доступен более новый и поддерживаемый пакет, который поддерживает это. github.com/simplito/elliptic-php#verifying-ethereum-signature 14.12.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..