epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 25, 2013, 02:35:13 PM |
|
Смотрю описание стандартного API и не могу понять: как (и можно ли) получить от bitcoind список n последних транзакций с адресами корреспондентов? Функция listtransactions возвращает данные с собственными адресами, причем не с теми, которые реально являются одним из from address или to address транзакции. А где же адрес отправителя/получателя с другой стороны? Функция gettransaction тоже возвращает только свой адрес. Функция getrawtransaction говорит: "No information available about transaction" - и это по транзакции, с которой мне пришли реальные деньги и детали которой можно посмотреть на blockexplorer.com... Не понимаю я логики этого продукта...
|
|
|
|
icreator
Legendary
Offline
Activity: 1554
Merit: 1008
|
|
December 25, 2013, 02:36:43 PM |
|
getrawtransaction
|
Erachain Blockchain is fully ready for use Digital Ecosystem based on blockchain technology for business and government with low transaction costs, identification and built-in functions. +Decentralized exchange of tokens in Erachain
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 25, 2013, 02:37:45 PM |
|
getrawtransaction Почему же она мне говорит, что не знает этой транзакции?
|
|
|
|
icreator
Legendary
Offline
Activity: 1554
Merit: 1008
|
|
December 25, 2013, 03:34:36 PM |
|
надо пересобрать базу данных - с ключом переиндексации
если рав-транз пишет ошибку - мол нету такой - надо переиндексировать: "C:\Program Files (x86)\CopperLark\CopperLark.exe" -reindex -txindex
|
Erachain Blockchain is fully ready for use Digital Ecosystem based on blockchain technology for business and government with low transaction costs, identification and built-in functions. +Decentralized exchange of tokens in Erachain
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 25, 2013, 03:38:50 PM |
|
надо пересобрать базу данных - с ключом переиндексации
если рав-транз пишет ошибку - мол нету такой - надо переиндексировать: "C:\Program Files (x86)\CopperLark\CopperLark.exe" -reindex -txindex
Что такое за CopperLark? У меня демон bitcoind под линуксом, запущен был как раз с ключом -reindex. Процесс "реиндекса" (или чего-то там ещё - до тех пор, пока счётчик блоков не достигнет текущих значений) занимает не меньше суток
|
|
|
|
icreator
Legendary
Offline
Activity: 1554
Merit: 1008
|
|
December 25, 2013, 03:46:18 PM |
|
да это крипта русская хилая укажи свой биткоин там - только 2 ключа разом давай как написано
|
Erachain Blockchain is fully ready for use Digital Ecosystem based on blockchain technology for business and government with low transaction costs, identification and built-in functions. +Decentralized exchange of tokens in Erachain
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 25, 2013, 06:25:45 PM |
|
да это крипта русская хилая укажи свой биткоин там - только 2 ключа разом давай как написано Не понял. Я с биткоином работаю. А это, вроде, другая сеть?
|
|
|
|
Valle
|
|
December 25, 2013, 08:16:23 PM |
|
Для корректной работы getrawtransaction bitcoin-qt нужно запустить с параметром '-txindex 1'
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 26, 2013, 03:53:11 PM |
|
Для корректной работы getrawtransaction bitcoin-qt нужно запустить с параметром '-txindex 1' ОК, я запустил демона с ключом -txindex и получил ответ на getrawtransaction, декодировал его. В разделе "vin" заполнен txid исходной транзакции и "scriptSig". А где адрес отправителя денег-то взять?
|
|
|
|
Valle
|
|
December 26, 2013, 04:31:13 PM |
|
в этой транзакции берешь индекс выхода предыдущей транзакции - в этом выходе в скрипте записан получатель, т.е. отправитель для первой транзакции.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 26, 2013, 04:50:21 PM |
|
в этой транзакции берешь индекс выхода предыдущей транзакции - в этом выходе в скрипте записан получатель, т.е. отправитель для первой транзакции. Мда-аа... А что, без всех этих операций по вырезанию аппендицита через задний проход, т.е. просто запросить и получить от биткоина в ответ адрес отправителя денег - никак нельзя?
|
|
|
|
Valle
|
|
December 26, 2013, 04:55:39 PM |
|
Можно. Только для этого нужно придумать свой коин, в котором в каждой транзакции будет записан адрес отправителя. Эта информация, правда, будет избыточна.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 26, 2013, 05:09:23 PM |
|
Можно. Только для этого нужно придумать свой коин, в котором в каждой транзакции будет записан адрес отправителя. Эта информация, правда, будет избыточна. Идея системы, когда можно иметь 500 адресов и отправить деньги по копейке сразу с них со всех, конечно, весьма любопытна. Кто-то, видно с перепою, решил, что таким образом якобы обеспечивается какая-то "анонимность". Хотя на самом деле все цепочки транзакций выложены в открытой сети и легко прослеживаются. А вот, если что не так, то на какой из этих адресов мне деньги возвращать? Вот в чём вопрос...
|
|
|
|
Valle
|
|
December 26, 2013, 05:58:03 PM |
|
Штука в том, что отправитель может быть не адрес, а, к примеру, скрипт или вообще аноним.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
December 27, 2013, 08:43:52 AM |
|
Штука в том, что отправитель может быть не адрес, а, к примеру, скрипт или вообще аноним.
Что это значит? Что в той транзакции, которая указана в vin, в соответствующем vout вообще не будет указан никакой адрес?
|
|
|
|
Valle
|
|
December 27, 2013, 05:31:53 PM |
|
ну да, там может быть какой-нибудь другой ребус (скрипт) или это может быть новые коины, тогда входов вообще не будет. Могут быть выходы, которые может потратить вообще кто-угодно. Перевод с адреса на адрес требуя подпись этого адреса - это всего-лишь одна возможность использования.
|
|
|
|
roleg
Newbie
Offline
Activity: 40
Merit: 0
|
|
December 27, 2013, 06:05:05 PM |
|
берешь с txid asm вторую часть после пробела, это будет public key и... function get_address($publickey) { // step 1
$step1=hexStringToByteString($publickey);
// step 2
$step2=hash("sha256",$step1);
// step 3
$step3=hash('ripemd160',hexStringToByteString($step2));
// step 4
$step4="00".$step3;
// step 5
$step5=hash("sha256",hexStringToByteString($step4));
// step 6
$step6=hash("sha256",hexStringToByteString($step5));
// step 7
$checksum=substr($step6,0,8);
// step 8
$step8=$step4.$checksum;
// step 9 // base conversion is from hex to base58 via decimal. // Leading hex zero converts to 1 in base58 but it is dropped // in the intermediate decimal stage. Simply added back manually.
$step9=bc_base58_encode(bc_hexdec($step8)); return $step9; }
function hexStringToByteString($hexString){ $len=strlen($hexString);
$byteString=""; for ($i=0;$i<$len;$i=$i+2){ $charnum=hexdec(substr($hexString,$i,2)); $byteString.=chr($charnum); }
return $byteString; }
// BCmath version for huge numbers function bc_arb_encode($num, $basestr) { if( ! function_exists('bcadd') ) { Throw new Exception('You need the BCmath extension.'); }
$base = strlen($basestr); $rep = '';
while( true ){ if( strlen($num) < 2 ) { if( intval($num) <= 0 ) { break; } } $rem = bcmod($num, $base); $rep = $basestr[intval($rem)] . $rep; $num = bcdiv(bcsub($num, $rem), $base); } return $rep; }
function bc_arb_decode($num, $basestr) { if( ! function_exists('bcadd') ) { Throw new Exception('You need the BCmath extension.'); }
$base = strlen($basestr); $dec = '0';
$num_arr = str_split((string)$num); $cnt = strlen($num); for($i=0; $i < $cnt; $i++) { $pos = strpos($basestr, $num_arr[$i]); if( $pos === false ) { Throw new Exception(sprintf('Unknown character %s at offset %d', $num_arr[$i], $i)); } $dec = bcadd(bcmul($dec, $base), $pos); } return $dec; }
// base 58 alias function bc_base58_encode($num) { return bc_arb_encode($num, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'); } function bc_base58_decode($num) { return bc_arb_decode($num, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'); }
//hexdec with BCmath function bc_hexdec($num) { return bc_arb_decode(strtolower($num), '0123456789abcdef'); } function bc_dechex($num) { return bc_arb_encode($num, '0123456789abcdef'); }
|
|
|
|
Valle
|
|
December 28, 2013, 06:31:39 AM |
|
кстати да )
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
January 03, 2014, 08:11:48 AM |
|
это может быть новые коины, тогда входов вообще не будет. Ну, полагаю, что если я не участвую в майнинге, то этот вариант мне не грозит. ну да, там может быть какой-нибудь другой ребус (скрипт) Вот это интересный вариант. Как это так: какой-то "скрипт" в том месте, где должен быть адрес? Могут быть выходы, которые может потратить вообще кто-угодно. Перевод с адреса на адрес требуя подпись этого адреса - это всего-лишь одна возможность использования.
Это тоже вариант инетересный. Разве в алгоритме предусмотрена возможность оправить деньги "любому получателю"? Где бы про это почитать подробнее?
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
January 03, 2014, 08:17:26 AM |
|
roleg, спасибо. Наверное этот вариант - самый правильный. Но я уже реализовал вариант с доставанием первого адреса из соответствующего vout транзакции, указанной в первом vin...
|
|
|
|
|