Bitcoin Forum
May 22, 2024, 06:33:55 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Как получить спис. транз. с адресами?  (Read 2057 times)
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
December 25, 2013, 02:35:13 PM
 #1

Смотрю описание стандартного API и не могу понять: как (и можно ли) получить от bitcoind список n последних транзакций с адресами корреспондентов? Функция  listtransactions возвращает данные с собственными адресами, причем не с теми, которые реально являются одним из from address или to address транзакции. А где же адрес отправителя/получателя с другой стороны? Функция gettransaction тоже возвращает только свой адрес. Функция getrawtransaction говорит: "No information available about transaction" - и это по транзакции, с которой мне пришли реальные деньги и детали которой можно посмотреть на blockexplorer.com...

Не понимаю я логики этого продукта...
icreator
Legendary
*
Offline Offline

Activity: 1554
Merit: 1008



View Profile WWW
December 25, 2013, 02:36:43 PM
 #2

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 Offline

Activity: 45
Merit: 0


View Profile
December 25, 2013, 02:37:45 PM
 #3

getrawtransaction
Почему же она мне говорит, что не знает этой транзакции?
icreator
Legendary
*
Offline Offline

Activity: 1554
Merit: 1008



View Profile WWW
December 25, 2013, 03:34:36 PM
 #4

надо пересобрать базу данных - с ключом переиндексации

если рав-транз пишет ошибку - мол нету такой - надо переиндексировать:
"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 Offline

Activity: 45
Merit: 0


View Profile
December 25, 2013, 03:38:50 PM
 #5

надо пересобрать базу данных - с ключом переиндексации

если рав-транз пишет ошибку - мол нету такой - надо переиндексировать:
"C:\Program Files (x86)\CopperLark\CopperLark.exe"  -reindex -txindex

Что такое за CopperLark? У меня демон bitcoind под линуксом, запущен был как раз с ключом -reindex. Процесс "реиндекса" (или чего-то там ещё - до тех пор, пока счётчик блоков не достигнет текущих значений) занимает не меньше суток Sad
icreator
Legendary
*
Offline Offline

Activity: 1554
Merit: 1008



View Profile WWW
December 25, 2013, 03:46:18 PM
 #6

да это крипта русская хилая
укажи свой биткоин там - только 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 Offline

Activity: 45
Merit: 0


View Profile
December 25, 2013, 06:25:45 PM
 #7

да это крипта русская хилая
укажи свой биткоин там - только 2 ключа разом давай как написано
Не понял. Я с биткоином работаю. А это, вроде, другая сеть?
Valle
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 25, 2013, 08:16:23 PM
 #8

Для корректной работы getrawtransaction bitcoin-qt нужно запустить с параметром '-txindex 1'
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
December 26, 2013, 03:53:11 PM
 #9

Для корректной работы getrawtransaction bitcoin-qt нужно запустить с параметром '-txindex 1'
ОК, я запустил демона с ключом -txindex и получил ответ на getrawtransaction, декодировал его. В разделе "vin" заполнен txid исходной транзакции и "scriptSig". А где адрес отправителя денег-то взять?
Valle
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 26, 2013, 04:31:13 PM
 #10

в этой транзакции берешь индекс выхода предыдущей транзакции - в этом выходе в скрипте записан получатель, т.е. отправитель для первой транзакции.
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
December 26, 2013, 04:50:21 PM
 #11

в этой транзакции берешь индекс выхода предыдущей транзакции - в этом выходе в скрипте записан получатель, т.е. отправитель для первой транзакции.
Мда-аа... А что, без всех этих операций по вырезанию аппендицита через задний проход, т.е. просто запросить и получить от биткоина в ответ адрес отправителя денег - никак нельзя?
Valle
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 26, 2013, 04:55:39 PM
 #12

Можно. Только для этого нужно придумать свой коин, в котором в каждой транзакции будет записан адрес отправителя. Эта информация, правда, будет избыточна.
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
December 26, 2013, 05:09:23 PM
 #13

Можно. Только для этого нужно придумать свой коин, в котором в каждой транзакции будет записан адрес отправителя. Эта информация, правда, будет избыточна.
Идея системы, когда можно иметь 500 адресов и отправить деньги по копейке сразу с них со всех, конечно, весьма любопытна. Кто-то, видно с перепою, решил, что таким образом якобы обеспечивается какая-то "анонимность". Хотя на самом деле все цепочки транзакций выложены в открытой сети и легко прослеживаются. А вот, если что не так, то на какой из этих адресов мне деньги возвращать? Вот в чём вопрос...
Valle
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 26, 2013, 05:58:03 PM
 #14

Штука в том, что отправитель может быть не адрес, а, к примеру, скрипт или вообще аноним.
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
December 27, 2013, 08:43:52 AM
 #15

Штука в том, что отправитель может быть не адрес, а, к примеру, скрипт или вообще аноним.
Что это значит? Что в той транзакции, которая указана в vin, в соответствующем vout вообще не будет указан никакой адрес? Shocked
Valle
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 27, 2013, 05:31:53 PM
 #16

ну да, там может быть какой-нибудь другой ребус (скрипт) или это может быть новые коины, тогда входов вообще не будет. Могут быть выходы, которые может потратить вообще кто-угодно. Перевод с адреса на адрес требуя подпись этого адреса - это всего-лишь одна возможность использования.
roleg
Newbie
*
Offline Offline

Activity: 40
Merit: 0


View Profile
December 27, 2013, 06:05:05 PM
 #17

берешь с txid asm вторую часть после пробела, это будет public key и...
Code:
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
Full Member
***
Offline Offline

Activity: 177
Merit: 101


View Profile
December 28, 2013, 06:31:39 AM
 #18

кстати да )
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
January 03, 2014, 08:11:48 AM
 #19

это может быть новые коины, тогда входов вообще не будет.
Ну, полагаю, что если я не участвую в майнинге, то этот вариант мне не грозит. Wink

ну да, там может быть какой-нибудь другой ребус (скрипт)
Вот это интересный вариант. Как это так: какой-то "скрипт" в том месте, где должен быть адрес?

Могут быть выходы, которые может потратить вообще кто-угодно. Перевод с адреса на адрес требуя подпись этого адреса - это всего-лишь одна возможность использования.
Это тоже вариант инетересный. Разве в алгоритме предусмотрена возможность оправить деньги "любому получателю"? Где бы про это почитать подробнее?
epros (OP)
Newbie
*
Offline Offline

Activity: 45
Merit: 0


View Profile
January 03, 2014, 08:17:26 AM
 #20

roleg, спасибо. Наверное этот вариант - самый правильный. Но я уже реализовал вариант с доставанием первого адреса из соответствующего vout транзакции, указанной в первом vin...
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!