>> (p.1)
    Author Topic: bittranshelperawk  (Read 2271 times)
    yurm (OP)
    Full Member
    ***
    Offline Offline

    Activity: 216
    Merit: 100


    View Profile
    January 29, 2014, 08:14:01 PM
     #1

    Создал тут скрипт для упрощения переводов с/на мультисигнатурные адреса и для модификации nlocktime. Пока неполнофункциональный (планируются также вариации на тему sighash).
    Просьба за парсинг транзакций сильно ногами не бить Smiley Он пока реализован через вызов bitcoind decoderawtransaction и парсинг JSON-ответа грубо-велосипедным способом, в дальнейшем планируется самостоятельный разбор hex-encoded транзакции.
    Замена sequence number осуществляется простым текстовым поиском-заменой (а-ля sed 's/00ffffffff/00<new nseq>/'), поэтому теоретически возможны ложные срабатывания (с вероятностью в районе 1/2^40, около одной триллионной). Запилю самостоятельный разбор транзакции — исключу и эту вероятность.
    Скрипт ничего не отправляет в сеть — только формирует и подписывает транзакцию. Перед её опубликованием (bitcoind sendrawtransaction) категорически рекомендуется её проверить (bitcoind decoderawtransaction).
    Описания использования и use cases на английском пока нет (задача на ближайшее будущее), поэтому выложу здесь — см. следующие посты.

    Инсталляция: Linux (*nix?) only. Просто скачайте скрипты *.awk, *.sh и установите их, например, вusr/local/bin
    Зависимости: bitcoind, awk, bc (+ sh, sed, date, имеющиеся практически в каждом Linux-дистрибутиве).
    Использование:
    Quote
    bittransacthelperawk.awk filename
    filename — файл с описанием генерируемой транзакции, формат файла см. ниже. Для упрощения формирования списка входов можно воспользоваться командой
    Quote
    bitcoind-unspent.sh >> filename

    Правила безопасности:
    1. Не оставляйте скрипты в домашнем каталоге после скачивания, перенесите их вusr/local/bin (или, скажем,opt/bin) и поменяйте владельца на root:root. В противном случае, если, допустим, в браузере обнаружится уязвимость, позволяющая злоумышленнику получить доступ к файловой системе (пусть и с правами простого пользователя, не root), то он сможет пропатчить скрипт, добавив туда перевод биткоинов с вашего кошелька на свой адрес.
    2. Заведите отдельный пользовательский аккаунт только для работы кошелька (вместе с этим скриптом). Не запускайте браузер (и вообще любые другие программы) из этого аккаунта. Т.е., для торговли на бирже используйте другой аккаунт. Желательно тоже отдельный.
    Следование этому правилу не отменяет необходимости предыдущего.
    3. При подписи транзакции в скрипте используется (почти) полная форма команды signrawtransaction, т.е. приватные ключи передаются как параметры командной строки при вызове bitcoind. И, соответственно, при определённом везении могут быть перехвачены, например, командой «ps aux» (запущенной из-под любого пользователя — параметры вызова, как правило, в Linux не скрываются; впрочем, нужно точно подгадать момент — bitcoind signrawtransaction выполняется быстро). Обойти эту уязвимость можно выделением отдельной виртуальной системы только для кошелька со скриптом, однако см. следующее правило.
    Надо будет попробовать предложить разработчикам официального клиента патч, позволяющий указывать адреса или публичные ключи вместо приватных.
    4. Хотя при правильной настройке отдельная виртуальная система для кошелька будет безопаснее, чем просто отдельный пользовательский аккаунт, при неправильном подходе эта система будет более уязвима (вплоть до полной иллюзорности безопасности). Виртуальная система должна быть именно отдельной (т.е., ваша повседневная активность должна проходить в другой гостевой виртуальной системе, но не на самом хосте!), а хост-система должна иметь лишь самый минимум ПО (желательно ограничиться максимум роутингом, особые умельцы могут и его перенести в виртуалку с пробросом туда сетевого интерфейса, а хосту оставить только функциональность свитча). Также нужно тщательно изучить вопрос качества генерируемого рандома — например, haveged (генератор энтропии на базе нестабильности работы процессора) в некоторых виртуальных окружениях выдаёт предсказуемые данные, что может привести к тому, что ваши случайные приватные ключи будут не столь случайными.
    Впрочем, для решения проблемы из предыдущего правила, думаю, будет достаточно Linux Containers (LXC); скорее всего, эмуляции rdtsc там нет и качество haveged-энтропии в виртуалке не ухудшится.

    to be continued...

    BTC donation:1DPUVJWeN2CNgJvRx5MtbsYWnFsKHxXWrc
Page 1
Viewing Page: 1