Несмотря на строгость и простоту веб-калькулятора, в вывод результатов все же можно добавить немного порядка. Например, вывод результатов пересчета в листинге 7.17 лишен смысла, поскольку сумма в долларах США в нем выражена числом с четырьмя знаками после запятой, даже при том, что для отображения количества центов достаточно двух знаков. Правильнее было бы вывести 84,51 или округлить до 84,52. Эту ошибку в сценарии желательно исправить.
И еще, пока вы не отвлеклись, хорошо бы добавить в сценарий проверку сокращенных обозначений валют. Пригодилось бы и преобразование кодов валют в полные названия, например, чтобы можно было выяснить, что AWG — это арубанские флорины или что BTC — это Bitcoin (Биткоин).
№ 61. Извлечение информации об адресе Биткоин
Система Биткоин (Bitcoin) вихрем ворвалась в наш мир, и даже появились компании, полностью основанные на
Код
Листинг 7.18. Сценарий getbtcaddr
#!/bin/bash
# getbtcaddr — получая адрес Биткоин, возвращает полезную информацию.
if [$# −ne 1]; then
··echo "Usage: $0 "
··exit 1
fi
base_url="https://blockchain.info/q/"
balance=$(curl −s $base_url" addressbalance/"$1)
recv=$(curl −s $base_url" getreceivedbyaddress/"$1)
sent=$(curl −s $base_url" getsentbyaddress/"$1)
first_made=$(curl −s $base_url" addressfirstseen/"$1)
echo "Details for address $1"
echo −e "\tFirst seen: "$(date −d @$first_made)
echo −e "\tCurrent balance: "$balance
echo −e "\tSatoshis sent: "$sent
echo −e "\tSatoshis recv: "$recv
Как это работает
Сценарий несколько раз вызывает команду curl, чтобы извлечь ценные сведения из заданного адреса Биткоин. Соответствующая служба, доступная по адресу: http://blockchain.info/, дает простую возможность получить полную информацию об адресе Биткоин и цепочке блоков. Фактически, нам даже не потребовалось анализировать информацию, получаемую от службы, потому что она возвращает простые одиночные значения. Получив баланс для заданного адреса, сведения о количестве полученных и потраченных монет и о том, когда осуществлялись платежи, сценарий выводит эту информацию на экран.
Запуск сценария
Сценарий принимает единственный аргумент — адрес Биткоин, информацию о котором требуется получить. Следует отметить, что, если передать сценарию строку, не являющуюся действительным адресом Биткоин, он выведет нули в строках, сообщающих о балансе и полученных и потраченных суммах, а в качестве даты создания будет указан 1969 год. Любые ненулевые суммы указываются в
Результаты
Пользоваться сценарием getbtcaddr очень просто, как показано в листинге 7.19, так как он принимает единственный аргумент, адрес Биткоин, информацию о котором требуется получить.
Листинг 7.19. Запуск сценария getbtcaddr
$ getbtcaddr 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Details for address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
····First seen: Sat Jan 3 12:15:05 CST 2009
····Current balance: 6554034549
····Satoshis sent: 0
····Satoshis recv: 6554034549
$ getbtcaddr 1EzwoHtiXB4iFwedPr49iywjZn2nnekhoj
Details for address 1EzwoHtiXB4iFwedPr49iywjZn2nnekhoj
····First seen: Sun Mar 11 11:11:41 CDT 2012
····Current balance: 2000000
····Satoshis sent: 716369585974
····Satoshis recv: 716371585974
Усовершенствование сценария