Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
3 октября 2012, 4:03:15 AM   # 1
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я новичок в PHP, глядя, хотя много скриптов на сайте, и они, кажется, делают намного больше, чем мне нужно. Я просто пытаюсь получить объект JSON для вмененного адреса и получить массив сделок. И хранить эти данные на моем сайте.

Был дурачились с парой корзины и до сих пор пытаюсь понять, что делает все JSON-RPC PHP. Я думаю, что им будет гораздо дальше, то мне нужно сделать это.

Любые указатели или материалы, которые вы могли бы связывать мне было бы весьма признателен.
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin


Как заработать Биткоины?
Без вложений. Не майнинг.


3 октября 2012, 4:10:23 AM   # 2
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Получил 1806 Биткоинов
Реальная история.





если вы используете http://jsonrpcphp.org/ то это довольно легко позволяет сказать, что вы хотите, чтобы получить баланс,
вы могли бы сделать
Код:
$ Клиент = новый jsonRPCClient ( 'HTTP: // имя пользователя: password@blockchain.info: 80');
$ Баланс = $ client->getbalance ();

это так просто
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

3 октября 2012, 4:14:57 AM   # 3
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

эта страница также удобно: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 4:28:19 AM   # 4
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Выложены JSON RPC на сайте. Просто оставил его в папке

Идя хотя example.php

Должен ли я сделать новый класс говорят Сделки с этим примером?

или как только я получил jsonrpcphp папки в моем корневом каталоге я могу просто позвонить ему?

что-то вроде?

$ Клиент = новый jsonRPCClient (»http://blockchain.info/address/Формат $ bitcoin_address = JSON ');
$ TXS = $ client->gettxs ();
 ?>

WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 4:38:06 AM   # 5
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Выложены JSON RPC на сайте. Просто оставил его в папке

Идя хотя example.php

Должен ли я сделать новый класс говорят Сделки с этим примером?

или как только я получил jsonrpcphp папки в моем корневом каталоге я могу просто позвонить ему?

что-то вроде?

$ Клиент = новый jsonRPCClient (»http://blockchain.info/address/Формат $ bitcoin_address = JSON ');
$ TXS = $ client->gettxs ();
 ?>



не помещайте адрес URL blockchain.info там ... поставить URL, который указывает на bitcoind.

например. Http: // имя пользователя: password@127.0.0.1: 8332 / если вы работаете bitcoind на собственном сервере
или
Http: // имя пользователя: password@blockchain.info: 80
если вы используете API blockchain.info в

Вам не нужно, чтобы сделать новый класс.

просто вызовите jsonRPCClient с любой функцией вам нужно использовать.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 4:41:51 AM   # 6
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

ааа, я не даже работает bitcoind прямо сейчас. Я просто пытаюсь отслеживать адреса, связанные с автономному кошелька.

Ill начала читать на bitcoind.
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 4:44:03 AM   # 7
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

ааа, я не даже работает bitcoind прямо сейчас. Я просто пытаюсь отслеживать адреса, связанные с автономному кошелька.

Ill начала читать на bitcoind.

если вы просто только отслеживание адреса, вам даже не нужно использовать RPC ...

вы могли бы использовать Curl для чтения с выхода blockchain.info, а затем использовать функции РНР для декодирования, что выход JSON в объект или массив.

payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 4:44:46 AM   # 8
 
 
Сообщения: 476
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Ill начала читать на bitcoind.

Это круто, как ад.
Северьян сейчас офлайн Пожаловаться на Северьян   Ответить с цитированием Мультицитирование сообщения от Северьян Быстрый ответ на сообщение Северьян

3 октября 2012, 4:46:21 AM   # 9
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Вот код я сделал с помощью CURL:

Код:
        функция get_address_info($ адрес$ отлаживать знак равно ложный)
        {
                
$ URL знак равно 'Http://blockchain.info/address/' $ адрес ? = Формат JSON ';

                если (
$ отлаживать)
                {
                        эхо 
'Fetching URL:'.$ URL.'<бр />';
                }

                
$ ч знак равно curl_init();
                
curl_setopt($ чCURLOPT_URL$ URL);
                
curl_setopt($ чCURLOPT_RETURNTRANSFERправда);
                
curl_setopt($ чCURLOPT_TIMEOUT10);
                
$ ответ знак равно curl_exec($ ч);
                
curl_close($ ч);

                если (
$ отлаживать)
                {
                        эхо 
'<до>Curl Ответ: ';
                        
print_r($ ответ);
                        эхо 
'';
                }

                вернуть 
json_decode($ ответ);
        }

не требуется jsonRPCClient.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 4:48:05 AM   # 10
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

ааа, я не даже работает bitcoind прямо сейчас. Я просто пытаюсь отслеживать адреса, связанные с автономному кошелька.

Ill начала читать на bitcoind.

если вы просто только отслеживание адреса, вам даже не нужно использовать RPC ...

вы могли бы использовать Curl для чтения с выхода blockchain.info, а затем использовать функции РНР для декодирования, что выход JSON в объект или массив.



Awsome, я собираюсь попробовать и сделать это первым.

спасибо, им добавление кода. Ill доложите
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 4:48:57 AM   # 11
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Curl вещи или что просто опечатка? что бы что PHP выглядеть?>

это вещь. хотя я не помню, что «с» стоит.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 4:56:19 AM   # 12
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

        $ Адрес = '13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT';
      Функция get_address_info ($ адрес, $ отлаживать = ложь)
        {
                $ URL = 'http://blockchain.info/address/'. $ Адрес. '? = Формат JSON';

                если ($ отлаживать)
                {
                        эхо 'Получение URL:' $ URL «..<бр />«;
                }

                $ Ч = curl_init ();
                curl_setopt ($ ч, CURLOPT_URL, $ URL);
                curl_setopt ($ ч, CURLOPT_RETURNTRANSFER, правда);
                curl_setopt ($ ч, CURLOPT_TIMEOUT, 10);
                $ Ответ = curl_exec ($ ч);
                curl_close ($ ч);

                если ($ отлаживать)
                {
                        эхо "<до>Curl Ответ: «;
                        print_r ($ ответ);
                        эхо "«;
                }

                вернуться json_decode ($ ответ);
        }
      ?>

Определяется адрес
ничего не выводит, мастерить
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 4:59:28 AM   # 13
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Ваш основной код мал сформирован.

попробуй это:

$ Адрес = '13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT'; // устанавливает адрес
$ Address_info = get_address_info ($ адрес); // получает информацию об адресе в $ address_info
var_dump ($ address_info); // выводит содержимое $ address_info в браузере

(И включают в себя функцию get_address_info тоже)

Редактирование: на самом деле, чтобы начать с, используйте эту строку вместо строки 2 выше:
$ Address_info = get_address_info ($ адрес, правда); // получает информацию об адресе в $ address_info
таким образом, вы будете видеть некоторые под рукой информацию на экране, чтобы показать, что происходит.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 5:01:07 AM   # 14
 
 
Сообщений: 44
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

 Я желаю, чтобы кто будет осуществлять полный клиент в PHP. Несмотря на то, что много работы, конечно.
bitvientiane сейчас офлайн Пожаловаться на bitvientiane   Ответить с цитированием Мультицитирование сообщения от bitvientiane Быстрый ответ на сообщение bitvientiane

3 октября 2012, 5:04:57 AM   # 15
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Ваш основной код мал сформирован.

попробуй это:

$ Адрес = '13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT'; // устанавливает адрес
$ Address_info = get_address_info ($ адрес); // получает информацию об адресе в $ address_info
var_dump ($ address_info); // выводит содержимое $ address_info в браузере

(И включают в себя функцию get_address_info тоже)


ад да, попасть туда. выводимый данные без форматирования 
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 5:07:57 AM   # 16
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

ад да, попасть туда. выводимый данные без форматирования 

я обычно делаю это вместо var_dump:

эхо "<до>«;
print_r ($ угодно);
эхо "«;

делает для легкой визуализации структуры переменной.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc

3 октября 2012, 6:26:24 AM   # 17
 
 
Сообщения: 364
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Когда я использую blockchain.info listaccounts () звоните, я получаю массив со всеми Bitcoin противовесами, округленных до 3-х знаков после запятой. Это то, что я должен обращаться правильно? Как я могу заставить его идти до 8 знаков после запятой?
SuperP сейчас офлайн Пожаловаться на SuperP   Ответить с цитированием Мультицитирование сообщения от SuperP Быстрый ответ на сообщение SuperP

3 октября 2012, 6:38:36 AM   # 18
 
 
Сообщения: 102
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Когда я использую blockchain.info listaccounts () звоните, я получаю массив со всеми Bitcoin противовесами, округленных до 3-х знаков после запятой. Это то, что я должен обращаться правильно? Как я могу заставить его идти до 8 знаков после запятой?

им довольно уверен, что им получать Satoshi, в 3.75250000 Yup 8, и тонна другого дерьма. с var_dump

котировка
Объект (StdClass) # 1 ({["hash160"знак равно> Строка (40) "1f710da1e75db36e0d47eda896a3b50d9e6c9279" ["адрес"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["n_tx"знак равно> Int (2) ["n_unredeemed"знак равно> Int (0) ["total_received"знак равно> INT (375250000) ["total_sent"знак равно> INT (375250000) ["final_balance"знак равно> Int (0) ["TXS"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 2 (12) {["гашиш"знак равно> Строка (64) "9e7aa7fc7913cfd8ce899472e477451953827ffc9555ffb1bb7b540cadc8b92f" ["вер"знак равно> Int (1) ["vin_sz"знак равно> Int (1) ["vout_sz"знак равно> Int (2) ["размер"знак равно> INT (226) ["relayed_by"знак равно> Строка (14) "68.118.161.168" ["tx_index"знак равно> INT (19350109) ["результат"знак равно> Int (0) ["время"знак равно> INT (1347001988) ["block_height"знак равно> Int (197662) ["входные"знак равно> Массив (1) {
  • знак равно> Объект (StdClass) # 3 (1) {["prev_out"знак равно> Объект (StdClass) # 4 (5) {["тип"знак равно> Int (0) ["адр"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["стоимость"знак равно> INT (375250000) ["tx_index"знак равно> INT (19347253) ["N"знак равно> Int (0)}}} ["вне"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 5 (3) {["адр"знак равно> Строка (33) "1oxCcHwsiREsmBs59nDf88xxjYPLttSkv" ["стоимость"знак равно> INT (275200000) ["тип"знак равно> Int (0)} [1] => Объект (StdClass) # 6 (3) {["адр"знак равно> Строка (34) "1FEps6A6aAqyh4LmnnmuUdtGnfAq5JpgRK" ["стоимость"знак равно> INT (100000000) ["тип"знак равно> Int (0)}}} [1] => Объект (StdClass) # 7 (12) {["гашиш"знак равно> Строка (64) "68b82640a6a5ed8564a64d22f361fb36f4b226c79b47531253858402b28728bd" ["вер"знак равно> Int (1) ["vin_sz"знак равно> Int (1) ["vout_sz"знак равно> Int (2) ["размер"знак равно> INT (227) ["relayed_by"знак равно> Строка (14) "122.103.238.28" ["tx_index"знак равно> INT (19347253) ["результат"знак равно> Int (-375250000) ["время"знак равно> INT (1346999015) ["block_height"знак равно> Int (197653) ["входные"знак равно> Массив (1) {
  • знак равно> Объект (StdClass) # 8 (1) {["prev_out"знак равно> Объект (StdClass) # 9 (5) {["тип"знак равно> Int (0) ["адр"знак равно> Строка (34) "1MdYdRzAYzcsWHyuS15jdiwH5eEn4BQ6Ck" ["стоимость"знак равно> INT (875300000) ["tx_index"знак равно> INT (19343969) ["N"знак равно> Int (0)}}} ["вне"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 10 (3) {["адр"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["стоимость"знак равно> INT (375250000) ["тип"знак равно> Int (0)} [1] => Объект (StdClass) # 11 (3) {["адр"знак равно> Строка (34) "197AmScUheUZFjVoDPJCXUfEjN6cgZy5s9" ["стоимость"знак равно> INT (500000000) ["тип"знак равно> Int (0)}}}}}
Человек, что некрасиво. Я собираюсь копаться в I может найти способ вывести его на хороший чистый HTML, как на blockchain.info
WorldOfBitcoin сейчас офлайн Пожаловаться на WorldOfBitcoin   Ответить с цитированием Мультицитирование сообщения от WorldOfBitcoin Быстрый ответ на сообщение WorldOfBitcoin

3 октября 2012, 7:00:59 AM   # 19
 
 
Сообщения: 364
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

котировка
Объект (StdClass) # 1 ({["hash160"знак равно> Строка (40) "1f710da1e75db36e0d47eda896a3b50d9e6c9279" ["адрес"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["n_tx"знак равно> Int (2) ["n_unredeemed"знак равно> Int (0) ["total_received"знак равно> INT (375250000) ["total_sent"знак равно> INT (375250000) ["final_balance"знак равно> Int (0) ["TXS"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 2 (12) {["гашиш"знак равно> Строка (64) "9e7aa7fc7913cfd8ce899472e477451953827ffc9555ffb1bb7b540cadc8b92f" ["вер"знак равно> Int (1) ["vin_sz"знак равно> Int (1) ["vout_sz"знак равно> Int (2) ["размер"знак равно> INT (226) ["relayed_by"знак равно> Строка (14) "68.118.161.168" ["tx_index"знак равно> INT (19350109) ["результат"знак равно> Int (0) ["время"знак равно> INT (1347001988) ["block_height"знак равно> Int (197662) ["входные"знак равно> Массив (1) {
  • знак равно> Объект (StdClass) # 3 (1) {["prev_out"знак равно> Объект (StdClass) # 4 (5) {["тип"знак равно> Int (0) ["адр"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["стоимость"знак равно> INT (375250000) ["tx_index"знак равно> INT (19347253) ["N"знак равно> Int (0)}}} ["вне"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 5 (3) {["адр"знак равно> Строка (33) "1oxCcHwsiREsmBs59nDf88xxjYPLttSkv" ["стоимость"знак равно> INT (275200000) ["тип"знак равно> Int (0)} [1] => Объект (StdClass) # 6 (3) {["адр"знак равно> Строка (34) "1FEps6A6aAqyh4LmnnmuUdtGnfAq5JpgRK" ["стоимость"знак равно> INT (100000000) ["тип"знак равно> Int (0)}}} [1] => Объект (StdClass) # 7 (12) {["гашиш"знак равно> Строка (64) "68b82640a6a5ed8564a64d22f361fb36f4b226c79b47531253858402b28728bd" ["вер"знак равно> Int (1) ["vin_sz"знак равно> Int (1) ["vout_sz"знак равно> Int (2) ["размер"знак равно> INT (227) ["relayed_by"знак равно> Строка (14) "122.103.238.28" ["tx_index"знак равно> INT (19347253) ["результат"знак равно> Int (-375250000) ["время"знак равно> INT (1346999015) ["block_height"знак равно> Int (197653) ["входные"знак равно> Массив (1) {
  • знак равно> Объект (StdClass) # 8 (1) {["prev_out"знак равно> Объект (StdClass) # 9 (5) {["тип"знак равно> Int (0) ["адр"знак равно> Строка (34) "1MdYdRzAYzcsWHyuS15jdiwH5eEn4BQ6Ck" ["стоимость"знак равно> INT (875300000) ["tx_index"знак равно> INT (19343969) ["N"знак равно> Int (0)}}} ["вне"знак равно> Массив (2) {
  • знак равно> Объект (StdClass) # 10 (3) {["адр"знак равно> Строка (34) "13sFP2R1tENbxcxGtH72ceW7YCvFjdLJkT" ["стоимость"знак равно> INT (375250000) ["тип"знак равно> Int (0)} [1] => Объект (StdClass) # 11 (3) {["адр"знак равно> Строка (34) "197AmScUheUZFjVoDPJCXUfEjN6cgZy5s9" ["стоимость"знак равно> INT (500000000) ["тип"знак равно> Int (0)}}}}}
Это то, что bitcoind дает в качестве вывода для listaccounts ()?

Blockchain.info JSON-RPC API дает мне то, что выглядит как:
котировка

массив
(
    [1JzpGDthPGqfsdfeajN5iiVj2SLq4FKpL] => 0,002
    [1sadfweHkPTFL2TogQJz7LbpEsvpQJ1dxfa] => 1,534
    [1MCL86tPrhNCjEsdfwVcrqL7rAsRZZKrrq] => 0,003
)


Я предполагаю, что blockchain.info апи упрощается и более высокая точность не доступна?
SuperP сейчас офлайн Пожаловаться на SuperP   Ответить с цитированием Мультицитирование сообщения от SuperP Быстрый ответ на сообщение SuperP

3 октября 2012, 12:17:35 PM   # 20
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP скрипт JSON. вызова blockchains.info API

Человек, что некрасиво. Я собираюсь копаться в I может найти способ вывести его на хороший чистый HTML, как на blockchain.info

я обычно делаю это вместо var_dump:

эхо "<до>«;
print_r ($ угодно);
эхо "«;

делает для легкой визуализации структуры переменной.
payb.tc сейчас офлайн Пожаловаться на payb.tc   Ответить с цитированием Мультицитирование сообщения от payb.tc Быстрый ответ на сообщение payb.tc



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW