Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.09.2025
Сообщений: 9

RPC Monero

04.09.2025, 11:48. Показов 883. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Столкнулся с такой проблемой, синронизировал monerod.
Запустил демон
monerod --detach
Далее запускаю
monero-wallet-rpc
monero-wallet-rpc --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18083 --wallet-dir /root/monero-x86_64-linux-gnu-v0.18.4.2/mrxwallet --password "password" --daemon-host 127.0.0.1:18081 --trusted-daemon --rpc-login mrxwalletassword &
Использую библиотеку для HTTP запросов
composer require guzzlehttp/guzzle
Код PHP
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
ini_set("display_errors",1);
error_reporting(E_ALL); 
 
  require __DIR__ . '/vendor_monero/autoload.php';
 
        use GuzzleHttp\Client;
 
        $client = new Client([
            'base_uri' => 'http://127.0.0.1:18083/',  
            'timeout'  => 5.0,
        ]);
 
 
        $params = [
            'jsonrpc' => '2.0',
            'method' => 'get_balance',
            'params' => [
                
            ],
            'id' => 1,  
        ];
 
        try {
            $response = $client->post('', [
                'json' => $params,
                'auth' => ['mrxwallet', 'password']  
            ]);
 
            $data = json_decode($response->getBody(), true);
 
            if (isset($data['result']['available_balance'])) {
                echo "Доступный баланс: " . $data['result']['available_balance'] . "\n";
            } else {
                echo "Ошибка: " . ($data['error']['message'] ?? json_encode($data)) . "\n";
            }
 
        } catch (\Exception $e) {
            echo "Ошибка HTTP-запроса: " . $e->getMessage() . "\n";
        }
        ?>
Но при обращении по адресу ip/file.php получаю ошибку.
Ошибка HTTP-запроса: Client error: `POST http://127.0.0.1:18083/` resulted in a `401 Unauthorized` response:
Знающие люди, подскажите, пожалуйста, где моя ошибка. Почему не проходит авторизация? Если разместил не в том разделе, прошу модераторов перенести. Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2025, 11:48
Ответы с готовыми решениями:

проблема с установкой XML-RPC
Всем привет! Помогите разобраться с установкой и подключением класса XML-RPC в php5! 12 часов...

xmlrpc с библиотекой Keith Devens' XML-RPC Client/Server
Помогите найти ошибку в исходнике или может сейчас как то по другому надо делать? Есть реализация...

SOAP vs. XML-RPC
Привет всем) У меня (может и странный) вопрос. Можно ли работать с SOAP без создания *.wsdl файла?...

8
 Аватар для andrey_f
882 / 535 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
04.09.2025, 12:23
Лучший ответ Сообщение было отмечено NHN как решение

Решение

Цитата Сообщение от NHN Посмотреть сообщение
Ошибка HTTP-запроса: Client error: `POST http://127.0.0.1:18083/` resulted in a `401 Unauthorized` response:
эта ошибка авторизации, она либо в настройках RPC сервера не включена, либо вы передаете неправильные данные (логин/пароль). Попробуйте curl'ом:
Code
1
curl -u mrxwallet:password http://127.0.0.1:18083/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_balance"}'
1
0 / 0 / 0
Регистрация: 04.09.2025
Сообщений: 9
04.09.2025, 12:39  [ТС]
andrey_f, получаю ошибку
<html><head><title>Unauthorized Access</title></head><body><h1>401 Unauthorized<
0
 Аватар для andrey_f
882 / 535 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
04.09.2025, 12:51
В monero-wallet-rpc не включены ли ограничения доступа?
Что RPC действительно запущен и принимает соединения проверили?
0
0 / 0 / 0
Регистрация: 04.09.2025
Сообщений: 9
04.09.2025, 16:14  [ТС]
Данные так же перепроверил, указаны верно. Попробовал так:
curl -X POST 127.0.0.1:18083/json_rpc -d '{“jsonrpc”:”2.0”,”id”:”0”,”method”:”get balance”}' -H 'Content-Type: application/json'
Получаю аналогичную ошибку
<html><head><title>Unauthorized Access</title></head><body><h1>401 Unauthorized</h1></body></html>r
Добавлено через 1 минуту
Цитата Сообщение от andrey_f Посмотреть сообщение
В monero-wallet-rpc не включены ли ограничения доступа?
Запущен
monero-wallet-rpc --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18083 --wallet-dir /root/monero-x86_64-linux-gnu-v0.18.4.2/mrxwallet --password "password" --daemon-host 127.0.0.1:18081 --trusted-daemon &
Добавлено через 1 минуту
Не так прочитал, про какие ограничения Вы имеете ввиду? Все было установлено из "коробки"

Добавлено через 2 часа 5 минут
Запустив таким образом
monerod --config-file monero.txt --confirm-external-bind --restricted-rpc --prune-blockchain --detach
создав файл monero.txt и прописав в нем
rpc-bind-ip=0.0.0.0
rpc-bind-port=18081
rpc-login=mrxwalletassword
выполнив запуск monero-wallet-rpc
monero-wallet-rpc --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18083 --wallet-dir /root/monero-x86_64-linux-gnu-v0.18.4.2/mrxwallet --password "password" --daemon-host 127.0.0.1:18081 --trusted-daemon --disable-rpc-login &
пробую через курл, отключив аутентификацию
--disable-rpc-login
получаю ответ на
curl http://127.0.0.1:18083/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get _balance"}'
{
"error": {
"code": -13,
"message": "No wallet file"
},
"id": "0",
"jsonrpc": "2.0"
Но при запуске monero-wallet-rpc указан путь к кошельку. Где моя ошибка?

Добавлено через 24 минуты
Заработало, запустил таким образом:
monerod
затем
monero-wallet-rpc --rpc-bind-port 18083 --wallet-file mxrwallet --password "password" --disable-rpc-login &
И через курл
curl http://127.0.0.1:18083/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get _balance"}'
Вывод

{
"id": "0",
"jsonrpc": "2.0",
"result": {
"balance": 0,
"blocks_to_unlock": 0,
"multisig_import_needed": false,
"time_to_unlock": 0,
"unlocked_balance": 0
}
}
Но при обращении к скрипту PHP содержимое которого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
ini_set("display_errors",1);
error_reporting(E_ALL); 
 
  require __DIR__ . '/vendor_monero/autoload.php';
 
        use GuzzleHttp\Client;
 
        $client = new Client([
            'base_uri' => 'http://127.0.0.1:18083/',  
            'timeout'  => 5.0,
        ]);
 
 
        $params = [
            'jsonrpc' => '2.0',
            'method' => 'get_balance',
           
            'id' => 0,  
        ];
 
        try {
            $response = $client->post('', [
                'json' => $params 
            ]);
 
            $data = json_decode($response->getBody(), true);
 
            if (isset($data['result']['available_balance'])) {
                echo "Доступный баланс: " . $data['result']['available_balance'] . "\n";
            } else {
                echo "Ошибка: " . ($data['error']['message'] ?? json_encode($data)) . "\n";
            }
 
        } catch (\Exception $e) {
            echo "Ошибка HTTP-запроса: " . $e->getMessage() . "\n";
        }
        ?>
Получаю
Ошибка HTTP-запроса: Client error: `POST http://127.0.0.1:18083/` resulted in a `404 Not found` response
Добавлено через 50 минут
Через библиотеку не получилось почему-то запустить, все ошибки выдает, за-то реализовал по другому. Может кому пригодится.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'http://127.0.0.1:18083/json_rpc',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => 1,
   /* CURLOPT_POSTFIELDS => "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"create_address\", \"params\": {
    \"account_index\": 0,
    \"label\": \"test\",
    \"count\": 1
  }}", создание адреса
  */
  CURLOPT_POSTFIELDS => "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"get_balance\", \"params\": {
    \"account_index\": 0,
     \"address_indices\": [4] 
  }}", // check balance
    CURLOPT_CONNECTTIMEOUT => 15,
    CURLOPT_HTTP_VERSION   =>CURL_HTTP_VERSION_2_0
    ]);
 $result = json_decode(curl_exec($ch),true);
 //echo $result['result']['balance']; // balance
 print_r($result);
Если кто может дополнить, буду очень признателен. andrey_f, а Вам отдельная благодарность, благодаря Вам пришлось отказаться от библиотеки, т.к. это можно реализовать по средствам curl.
0
Заблокирован
04.09.2025, 17:14
Цитата Сообщение от NHN Посмотреть сообщение
CURLOPT_POSTFIELDS => '{"jsonrpc":"2.0","id":"0","method":"get _balance", "params": {
   "account_index": 0,
     "address_indices": [4]
 }}'
Слэши экранирования не запарился ставить? Почему бы не взять в одинарные скобки?
1
 Аватар для sad67man
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,774
04.09.2025, 17:33
Цитата Сообщение от Посмотреть сообщение
Слэши экранирования не запарился ставить? Почему бы не взять в одинарные скобки?
Еще можно json_encode использовать
1
0 / 0 / 0
Регистрация: 04.09.2025
Сообщений: 9
04.09.2025, 17:59  [ТС]
,
Цитата Сообщение от Посмотреть сообщение
Слэши экранирования не запарился ставить? Почему бы не взять в одинарные скобки?
есть такое
Цитата Сообщение от sad67man Посмотреть сообщение
Еще можно json_encode использовать
переписал.
0
Эксперт PHP
 Аватар для liris
4349 / 994 / 148
Регистрация: 16.01.2023
Сообщений: 2,448
04.09.2025, 20:14
Лучший ответ Сообщение было отмечено NHN как решение

Решение

Цитата Сообщение от NHN Посмотреть сообщение
есть такое
На будущее. Есть Heredoc и Nowdoc:
https://www.php.net/manual/ru/... ax.heredoc
https://www.php.net/manual/ru/... tax.nowdoc

Оба синтаксиса работают примерно одинаково, но разница в том, что Nowdoc аналогичен одинарным кавычкам, а Heredoc - двойным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2025, 20:14
Помогаю со студенческими работами здесь

XML RPC Web service
Добрый день уважаемые форумчане. Мне нужна Ваша помощь. Мною написан кусок кода на php (xmlrpc),...

JSON RPC PHP connection to bitcoin core, что же тут не так?
Уже несколько дней пытаюсь разобраться... Я прописал пароль, логин, порт в bitcoin.conf, но он всё...

PHP и json-rpc
Уважаемые программисты, подскажите, как мне сделать запрос на сервер с передачей json строки?

RPC в RPC и очередь выполнения
Крч... вот код: void OnConnectedToServer() { NetView.RPC(&quot;SendData&quot;, RPCMode.All,...

Monero CPU miner
Доброго времени суток, случилась беда у меня, а именно: установил Windows Server 2008 R2 на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru