Может кто-нибудь помочь мне, чтобы добавить правильные функции / исправить фактические функции? Благодаря!!
Кодекс также доступен на pastebin.com
Код:
PHP
включают('Setup.php');
require_once 'BitcoinRPC.php';
функция readTransaction($ rawtx)
{
$ подробнее знак равно $ this-->getrawtransaction($ rawtx["TXID"], 1);
$ vinhex знак равно $ подробнее['Vin'] [0] ['ScriptSig'] [«Шестигранной»];
$ decodedscript знак равно decodescript($ vinhex);
$ адрес знак равно pubKeyToAddress($ decodedscript[1]);
вернуть $ адрес;
}
функция hash160ToAddress($ hash160,$ addressversion знак равно "00")
{
$ hash160 знак равно $ addressversion.$ hash160;
$ проверка знак равно пак("ЧАС*" , $ hash160);
$ проверка знак равно гашиш("Sha256", гашиш("Sha256", $ проверка , правда));
$ проверка знак равно зиЬзЬг($ проверка, 0, 8);
$ hash160 знак равно strtoupper($ hash160.$ проверка);
вернуть encodeBase58($ hash160);
}
функция hash160($ данных)
{
$ данных знак равно пак("ЧАС*" , $ данных);
вернуть strtoupper(гашиш("Ripemd160", гашиш("Sha256", $ данных,правда)));
}
функция pubKeyToAddress($ Публичных)
{
вернуть hash160ToAddress(hash160($ Публичных));
}
функция decodeHex($ шестигранной)
{
$ шестигранной знак равно strtoupper($ шестигранной);
$ символов знак равно "0123456789abcdef";
$ возврат знак равно "0";
для($ я знак равно 0; $ я < StrLen($ шестигранной); $ я++)
{
$ тока = (Строка)StrPos($ символов, $ шестигранной[$ я]);
$ возврат = (Строка)bcmul($ возврат, "16", 0);
$ возврат = (Строка)bcadd($ возврат, $ тока, 0);
}
вернуть $ возврат;
}
функция encodeBase58($ шестигранной)
{
если(StrLen($ шестигранной)%2 !знак равно0 )
{
умереть(«EncodeBase58: нечетное число шестнадцатеричных символов»);
}
$ orighex знак равно $ шестигранной;
$ символов знак равно "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
$ шестигранной знак равно decodeHex($ шестигранной);
$ возврат знак равно «»;
в то время как(bccomp($ шестигранной, 0) == 1)
{
$ DV = (Строка)bcdiv($ шестигранной, "58", 0);
$ бэр = (Целое число)bcmod($ шестигранной, "58");
$ шестигранной знак равно $ DV;
$ возврат знак равно $ возврат.$ символов[$ бэр];
}
$ возврат знак равно strrev($ возврат);
для($ я знак равно 0; $ я < StrLen($ orighex) && зиЬзЬг($ orighex, $ я, 2) == "00"; $ я +знак равно 2)
{
$ возврат знак равно "1".$ возврат;
}
вернуть $ возврат;
}
функция decodescript($ скрипт)
{
$ op_code = Массив (
'00' знак равно> 'OP_FALSE', '61' знак равно> 'OP_NOP', «6а» знак равно> 'OP_RETURN',
'76' знак равно> 'OP_DUP', '87' знак равно> 'OP_EQUAL', '88' знак равно> 'OP_EQUALVERIFY',
'51' знак равно> 'OP_TRUE', 'A6' знак равно> 'OP_RIPEMD160', 'A7' знак равно> 'OP_SHA1',
'A8' знак равно> 'OP_SHA256', 'A9' знак равно> 'OP_HASH160', «Аа» знак равно> 'OP_HASH256',
«Ас» знак равно> 'OP_CHECKSIG', «Ае» знак равно> 'OP_CHECKMULTISIG');
$ данных = Массив ();
в то время как(StrLen($ скрипт) ==! 0)
{
$ байт знак равно return_bytes($ скрипт, 1);
если (Исеть ($ op_code[$ байт]))
{
$ данныхзнак равно $ op_code[$ байт];
}
иначе если ($ байт >знак равно 0x01 && $ байт <знак равно 0x4b)
{
$ данныхзнак равно return_bytes($ скрипт, HexDec($ байт));
}
иначе если ($ байт >знак равно 0x52 && $ байт <знак равно 0x60)
{
$ данныхзнак равно 'OP_' . ($ байт - 0x52);
}
}
вернуть $ данных;
}
функция return_bytes(&$ строка, $ byte_count, $ обратный знак равно ложный)
{
$ requested_bytes знак равно зиЬзЬг($ строка, 0, $ byte_count * 2);
$ строка знак равно зиЬзЬг($ строка, $ byte_count * 2);
вернуть ($ обратный == ложный)? $ requested_bytes : flip_byte_order($ requested_bytes);
}
функция flip_byte_order($ байтов)
{
вернуть взрываться(«», array_reverse(str_split($ байтов, 2)));
}
$ сделка знак равно $ this-->listtransactions($ установки['Счет'], 500, 100);
для каждого($ сделка в виде $ rawtx)
{
если($ rawtx[«Категория»] == "послал")
{
Продолжать;
}
еще
{
$ запрос знак равно mysql_query('SELECT * FROM `received_transactions` WHERE` tx` = «'.$ rawtx['TXID'].'";') или умереть(mysql_error());
если(!mysql_fetch_assoc($ запрос))
{
$ адрес знак равно readTransaction($ rawtx);
$ вход знак равно $ rawtx['количество'];
$ ТХ знак равно $ rawtx['TXID'];
$ получил знак равно Дата('У-м-д Н: I: S', $ rawtx['время']);
$ запрос знак равно «INSERT INTO` received_transactions` ( `id`,` tx`, `address`,` `input`, received`) VALUES (NULL, '$ ТХ''$ адрес''$ вход''$ получил«)»;
}
еще
{
Продолжать;
}
}
}
?>
включают('Setup.php');
require_once 'BitcoinRPC.php';
функция readTransaction($ rawtx)
{
$ подробнее знак равно $ this-->getrawtransaction($ rawtx["TXID"], 1);
$ vinhex знак равно $ подробнее['Vin'] [0] ['ScriptSig'] [«Шестигранной»];
$ decodedscript знак равно decodescript($ vinhex);
$ адрес знак равно pubKeyToAddress($ decodedscript[1]);
вернуть $ адрес;
}
функция hash160ToAddress($ hash160,$ addressversion знак равно "00")
{
$ hash160 знак равно $ addressversion.$ hash160;
$ проверка знак равно пак("ЧАС*" , $ hash160);
$ проверка знак равно гашиш("Sha256", гашиш("Sha256", $ проверка , правда));
$ проверка знак равно зиЬзЬг($ проверка, 0, 8);
$ hash160 знак равно strtoupper($ hash160.$ проверка);
вернуть encodeBase58($ hash160);
}
функция hash160($ данных)
{
$ данных знак равно пак("ЧАС*" , $ данных);
вернуть strtoupper(гашиш("Ripemd160", гашиш("Sha256", $ данных,правда)));
}
функция pubKeyToAddress($ Публичных)
{
вернуть hash160ToAddress(hash160($ Публичных));
}
функция decodeHex($ шестигранной)
{
$ шестигранной знак равно strtoupper($ шестигранной);
$ символов знак равно "0123456789abcdef";
$ возврат знак равно "0";
для($ я знак равно 0; $ я < StrLen($ шестигранной); $ я++)
{
$ тока = (Строка)StrPos($ символов, $ шестигранной[$ я]);
$ возврат = (Строка)bcmul($ возврат, "16", 0);
$ возврат = (Строка)bcadd($ возврат, $ тока, 0);
}
вернуть $ возврат;
}
функция encodeBase58($ шестигранной)
{
если(StrLen($ шестигранной)%2 !знак равно0 )
{
умереть(«EncodeBase58: нечетное число шестнадцатеричных символов»);
}
$ orighex знак равно $ шестигранной;
$ символов знак равно "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
$ шестигранной знак равно decodeHex($ шестигранной);
$ возврат знак равно «»;
в то время как(bccomp($ шестигранной, 0) == 1)
{
$ DV = (Строка)bcdiv($ шестигранной, "58", 0);
$ бэр = (Целое число)bcmod($ шестигранной, "58");
$ шестигранной знак равно $ DV;
$ возврат знак равно $ возврат.$ символов[$ бэр];
}
$ возврат знак равно strrev($ возврат);
для($ я знак равно 0; $ я < StrLen($ orighex) && зиЬзЬг($ orighex, $ я, 2) == "00"; $ я +знак равно 2)
{
$ возврат знак равно "1".$ возврат;
}
вернуть $ возврат;
}
функция decodescript($ скрипт)
{
$ op_code = Массив (
'00' знак равно> 'OP_FALSE', '61' знак равно> 'OP_NOP', «6а» знак равно> 'OP_RETURN',
'76' знак равно> 'OP_DUP', '87' знак равно> 'OP_EQUAL', '88' знак равно> 'OP_EQUALVERIFY',
'51' знак равно> 'OP_TRUE', 'A6' знак равно> 'OP_RIPEMD160', 'A7' знак равно> 'OP_SHA1',
'A8' знак равно> 'OP_SHA256', 'A9' знак равно> 'OP_HASH160', «Аа» знак равно> 'OP_HASH256',
«Ас» знак равно> 'OP_CHECKSIG', «Ае» знак равно> 'OP_CHECKMULTISIG');
$ данных = Массив ();
в то время как(StrLen($ скрипт) ==! 0)
{
$ байт знак равно return_bytes($ скрипт, 1);
если (Исеть ($ op_code[$ байт]))
{
$ данныхзнак равно $ op_code[$ байт];
}
иначе если ($ байт >знак равно 0x01 && $ байт <знак равно 0x4b)
{
$ данныхзнак равно return_bytes($ скрипт, HexDec($ байт));
}
иначе если ($ байт >знак равно 0x52 && $ байт <знак равно 0x60)
{
$ данныхзнак равно 'OP_' . ($ байт - 0x52);
}
}
вернуть $ данных;
}
функция return_bytes(&$ строка, $ byte_count, $ обратный знак равно ложный)
{
$ requested_bytes знак равно зиЬзЬг($ строка, 0, $ byte_count * 2);
$ строка знак равно зиЬзЬг($ строка, $ byte_count * 2);
вернуть ($ обратный == ложный)? $ requested_bytes : flip_byte_order($ requested_bytes);
}
функция flip_byte_order($ байтов)
{
вернуть взрываться(«», array_reverse(str_split($ байтов, 2)));
}
$ сделка знак равно $ this-->listtransactions($ установки['Счет'], 500, 100);
для каждого($ сделка в виде $ rawtx)
{
если($ rawtx[«Категория»] == "послал")
{
Продолжать;
}
еще
{
$ запрос знак равно mysql_query('SELECT * FROM `received_transactions` WHERE` tx` = «'.$ rawtx['TXID'].'";') или умереть(mysql_error());
если(!mysql_fetch_assoc($ запрос))
{
$ адрес знак равно readTransaction($ rawtx);
$ вход знак равно $ rawtx['количество'];
$ ТХ знак равно $ rawtx['TXID'];
$ получил знак равно Дата('У-м-д Н: I: S', $ rawtx['время']);
$ запрос знак равно «INSERT INTO` received_transactions` ( `id`,` tx`, `address`,` `input`, received`) VALUES (NULL, '$ ТХ''$ адрес''$ вход''$ получил«)»;
}
еще
{
Продолжать;
}
}
}
?>