Каких-либо методов или техник, чтобы уменьшить размер блокчейна?

Есть какие-то техники/методы, которые применяются или будут применяться на сети Bitcoin, чтобы уменьшить размер блокчейна. Это действительно обуза для peroson для выполнения полного узла, особенно на VPS. Или какие другие монеты успешно имел дело с этой проблемой хранения?

+307
user7824948 19 янв. 2010 г., 3:05:51
17 ответов

Длина дерева Меркле является суммой ряда, начиная с числа листьев, вдвое (с округлением вверх) на каждом шагу и заканчивая 1.

Вот алгоритм для расчета длины дерева Меркле от количества листьев в JavaScript.

getMerkleLength функции(leafCount) {
 // Входной сигнал должен быть положительным целым числом или нулем
 leafCount = математика.АБС(parseInt(leafCount));

 ВАР merkleLength = 0, currentLevel = leafCount;

 // Большинство Меркле реализаций дерева возвращать нулевой хэш для пустых списков, поэтому
 // длина в этом случае все равно будет один.
 если (leafCount <= 1) возвращает 1;

 // Петли
 для (;;) {
 // Добавление текущего уровня к длине
 merkleLength += currentLevel;

 // Если текущий уровень является корневым, мы сделали
 если (currentLevel == 1) возврат merkleLength;

 // Каждый уровень содержит в себе половину хэши, а если есть
 // нечетное число листьев, последний хэш дублируется
 currentLevel = математика.метод ceil(currentLevel / 2);
}
 возвращение merkleLength;
}

Редактировать: мне нравится, читабельный код, но просто для удовольствия, вот эквивалент короткая версия:

getMerkleLength функции(leafCount) {
 для (ВАР лен = 0, я = ~~leafCount; я > 1; я = ~~(я/2+.5)) Лен += я;
 возвращение лен >= 2 ? ++лен : 1;
}

Правка 2: и с версией для хорошей мерой.

определение типа знака int uint с;

uint с getMerkleLength(uint с leafCount)
{
 лен типу uint = 0, я;
 Для (я = leafCount; я > 1; я = (я+1)>>1) {
 Лен += я;
}
 возвращение лен >= 2 ? ++лен : 1;
}

пустота основной() {
 uint с я;
 для (Я = 0; я <= 100; я++) {
 функции printf("%у %у\п", я, getMerkleLength(я));
}
 функции printf("%у %у\п", 5000, getMerkleLength(5000));
 функции printf("%у %у\п", 99999999, getMerkleLength(99999999));
}
+970
Asta Lab 03 февр. '09 в 4:24

Ни одна из технологий 2.0 полностью анонимным. В лучшем случае, они являются псевдонимом, как биткоин. Некоторые из них, такие как пульсация, не заинтересованы в создании новых псевдонимов все время (необходимости платить сборы для того чтобы активировать новый адрес и установить доверительные отношения).

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

Есть некоторые функции в системах 2.0, которые можно использовать, не раскрывая удостоверения, как децентрализованная азартные игры, фьючерсные контракты и т. д. Тех, кто вызовет интересная правовая коллизия в будущем. Скорее всего, все заинтересованные стороны будут привлечены к ответственности за свои действия, так что если вы нелегально азартные игры онлайн, вы можете быть брошены в тюрьму за это.

Полезный обзор различных функций систем крипто 2.0 - tiny.cc/Crypto .

+962
Chris Hopkins 21 июл. 2013 г., 17:24:14

Просто ответить на явный вопрос "Как удалить аккаунт": нельзя. Метка палка в другой – eventuallay неиспользованный – адресов. для получения дополнительной информации, прочитайте эту проблему: https://github.com/bitcoin/bitcoin/issues/1231#issuecomment-6305302

+959
smyslov 23 янв. 2014 г., 2:28:41

Сколько форматов адресов в тире?

Дэш, кажется, довольно похож на Bitcoin когда дело доходит до адреса и форматы транзакций. У вас есть ваш типичный P2PK, P2PKH, P2SH.

Вот как создать стандартный адрес P2PKH (и поэтому также P2PK адрес).

ВАР bip39 = требуют('bip39');
ВАР hdkey = требуют('hdkey');
ВАР методы createhash = требуют('создать хэш');
ВАР bs58check = требуют('bs58check');

//константный мнемоника = bip39.generateMnemonic(); //создает строку
купить константный мнемоника = 'гром проложить башня лекция обновить Верховного пол ребенка фитнес лоток засунуть
семян константный = bip39.mnemonicToSeed(мнемосхему); //создаем буфер семян 
консоль.журнала('мнемоника:' + мнемосхема);

корень слова const = hdkey.fromMasterSeed(семя);
константный masterPrivateKey = корень.закрытый ключ.метод toString('Хекс');
//консоли.журнал (расширенного открытого ключа корня: '+ корень.publicExtendedKey)

константный addrnode = корень.вывести("м/44'/0'/0'/0/0");
консоль.журнала('addrnodePublicKey: '+ addrnode._publicKey.метод toString('Хекс'))
консоль.addernodePrivateKey журнала (': '+ addrnode._privateKey.метод toString('Хекс'))

константный Шаг1 = addrnode._publicKey;
константный Шаг2 = методы createhash('SHA256 с').обновление(Шаг1).дайджест();
константный Шаг 3 = методы createhash('rmd160').обновление(Шаг2).дайджест();

Шаг 4 ВАР = буфера.allocUnsafe(21);
шаг4.writeUInt8(0x4c, 0); 
шаг3.копия(Шаг 4, 1); //Шаг 4 теперь проводит расширенную RIPMD-160 результату
константный step9 = bs58check.кодирование(Шаг 4);
консоль.журнала('в base58check:' + step9); 

Заметьте, единственная разница между этим и получают биткоин-адрес-это версия байт не 0х00, но вместо 0x4c.

+755
Gates VP 10 мая 2016 г., 19:06:35

Я создал кошелек до Bitcoin ядро 0.13.0 вышел, так что мой кошелек не HD-кошелька. Как мне сделать мой бумажник в HD-кошелька?

+690
dafunkizdiz 7 февр. 2015 г., 1:07:15

У вас нет биткоинов, так что вы можете не создавать, подписывать и передавать транзакции.

Как для генерации нового адреса, используйте getnewaddress ЭКП. Это даст вам адрес, который вы можете дать кому-то еще, чтобы отправить вам биткоины. Как только у вас есть биткоины, вы можете создавать и транслировать сделки в один шаг с помощью sendtoaddress RPC или в sendmany ЭКП.

Использовать помочь getnewaddress, помочь sendtoaddress, и помочь sendmany чтобы узнать больше о каждом ЭКП.

+663
Tamim Chowdhury 5 сент. 2011 г., 17:23:10

Каковы различия между getwork и getblocktemplate? Кто определил необходимость для нового протокола? Кто были основными причинами его создания?

+655
edward king 20 авг. 2011 г., 7:21:38

В настоящее время это не возможно со стандартным клиентом, кроме того, что отдельные кошельки. Есть патч для монет отбора на GitHub, который был очень перспективным. Так что эта функция может сделать это в будущих версиях.

+482
voutasaurus 3 мая 2010 г., 14:17:31

В настоящее время хэшрейт составляет около 25 м/сек. Ожидается, что когда процессора появятся на рынке в декабре 2012, новый хэшрейт будет около 250 м/сек. Трудность прямо пропорциональна хэшрейт, поэтому следует также увеличить в 10 раз. Это приведет к уменьшению доходности существующих ГПУ майнеров 10х. Плюс примерно в то же время блок награда будет уменьшена в два раза с 50 BTC до 25 BTC было, снова сокращения рентабельности.

Ожидается, что как только поиму овладевает самой ГПУ и добыча ПЛИС кровотечение из сети. Вы должны ожидать, что первоначальный приток ASIC и затем устойчивый рост как mininers достичь их большей доли рынка.

+415
TYY 31 дек. 2016 г., 16:59:49

Как различные крипто-валюты имеют различные базовые алгоритмы (например, и SHA256, Scrypt в, CryptoNight, и т. д. : Источник). Значит ли это, что если я куплю криптовалюты майнинг-оборудование, мне нужно решить аппаратного обеспечения после того, как я решаю, в какой валюте я смотрю на мою? Например, подстава ГПУ может быть хорошо для Эфириума но для лайткоинов, мне понадобится некоторое оборудование поиму?

+268
sashyulechka79 14 дек. 2014 г., 10:35:36

Следующий код устраняет проблему. Проблема в том, что этот класс я использовал не ставили сети на объекте bitwasp биткоин. Код пришел от свободы узла.

hd.php

<?в PHP

им require_once(__Дир__.'/../autoload.php');

использовать BitWasp\биткоин\Биткойн;
использовать BitWasp\биткоин\адрес\AddressCreator;
использовать BitWasp\биткоин\ключ\детерминировано\HdPrefix\GlobalPrefixConfig;
использовать BitWasp\биткоин\ключ\детерминировано\HdPrefix\NetworkConfig;
использовать BitWasp\биткоин\сеть\Slip132\BitcoinRegistry;
использовать BitWasp\биткоин\сеть\Slip132\BitcoinTestnetRegistry;
использовать BitWasp\биткоин\ключ\детерминировано\Slip132\Slip132;
использовать BitWasp\биткоин\ключ\KeyToScript\KeyToScriptHelper;
использовать BitWasp\биткоин\ключ\детерминировано\HierarchicalKeyFactory;
использовать BitWasp\биткоин\ключ\детерминировано\HierarchicalKeySequence;
использовать BitWasp\биткоин\ключ\детерминировано\MultisigHD;
использовать BitWasp\сеть Bitcoin\NetworkFactory\;
использовать BitWasp\биткоин\сериализатор\ключ\HierarchicalKey\Base58ExtendedKeySerializer;
использовать BitWasp\биткоин\сериализатор\ключ\HierarchicalKey\ExtendedKeySerializer;

класса HD {
 частная $имя_сети = нуль;
 частная $сети = нуль;
 частная $xpub = нуль;
 частная $ypub = нуль;
 частная $zpub = нуль;
 частная $multisig_xpubs = нуль;

 общественная функция __конструкт($сети = 'биткоин') {
 $этом->имя_сети = $сети;
 если (теперь version_compare(PHP_VERSION, '5.3') >= 0) {
 $этом->Сети = NetworkFactory::$сети();
 } для elseif (теперь version_compare(PHP_VERSION, '5.2.3') >= 0) {
 $этом->Сети = call_user_func("NetworkFactory::$сети");
 } еще {
 $этом->Сети = call_user_func('NetworkFactory', $сети);
}
Биткоин::setNetwork($этом->Сети);
}

 set_xpub государственной функции($xpub) {
 $этом->xpub = $xpub;
}

 общественные функции set_ypub($ypub) {
 $этом->ypub = $ypub;
}

 set_zpub государственной функции($zpub) {
 $этом->zpub = $zpub;
}

 set_multisig_xpubs государственной функции($xpubs) {
 $этом->multisig_xpubs = $xpubs;
}

 address_from_master_pub публичные функции (в$Path = '0/0') {
 Если ($этом->xpub === значение null && $этом->ypub === значение null && $этом->zpub === значение null) {
 бросить новое исключение("XPUB, YPUB или ключ ZPUB нет!");
}

 $адаптер = биткоин::getEcAdapter();
 $slip132 = новый Slip132(новый KeyToScriptHelper($адаптер));
 $registry_classname = 'BitWasp\\биткоин\\сеть\\Slip132\\'.$это->имя_сети'.Реестра;
 $bitcoin_prefixes = новый $registry_classname();

 Если ($этом->xpub !== Значение null) {
 $pubPrefix = $slip132->p2pkh($bitcoin_prefixes);
 $пабе = $этом->xpub;
 } остальное, Если ($этом->ypub !== Значение null) {
 $pubPrefix = $slip132->p2shP2wpkh($bitcoin_prefixes);
 $пабе = $этом->ypub;
 } остальное, Если ($этом->zpub !== Значение null) {
 $pubPrefix = $slip132->p2wpkh($bitcoin_prefixes);
 $пабе = $этом->zpub;
}

 $config файл = новый GlobalPrefixConfig([
 новый NetworkConfig($этом->Сети, [
$pubPrefix,
])
]);

 $сериализатор = новый Base58ExtendedKeySerializer(
 новый ExtendedKeySerializer($адаптер $конфиг)
);

 $ключ = $сериализатор->разбор($этом->Сети, $паб);
 $child_key = $ключ->derivePath($путь);

 вернуть $child_key->getAddress(новый AddressCreator())->getAddress();
}

 multisig_address_from_xpub государственной функции($м в $Path = '0/0') {
 если (счет($этом->multisig_xpubs) < 2) {
 бросить новое исключение("ключи XPUB нет!");
}

 $ключи = массив();

 по каждому элементу ($этом->multisig_xpubs как $xpub) {
 $ключи[] = HierarchicalKeyFactory::fromExtended($xpub, $этом->Сети);
}

 $последовательностей = новый HierarchicalKeySequence();
 $HD = количество новых MultisigHD($м 'м', $ключи, $последовательностей, истина);

 $child_key = $БГ->derivePath($путь);

 вернуть $child_key->getAddress()->getAddress($этом->Сети);
}
}
+265
geoaxis 16 авг. 2018 г., 11:50:57

Я использую операционной системы Mac. Я скачал приложение молния и Зап с GitHub.

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

Молния приложение показывает мне ошибку сети не могут быть синхронизированы..., когда я запустить приложение молнии он также всплывает ошибка: синхронизация цепь ... блок высота: 0.

Когда я запускаю Зап:

Непойманное Исключение:
Ошибка: Сбой Подключения
 в ClientReadableStream._emitStatusIfDone (/приложения/Зап.приложение/содержание/ресурсы/приложения.Асар/папки node_modules/grpc/ГРЦ/клиента.ДШ:255:19)
 в ClientReadableStream._readsDone (/приложения/Зап.приложение/содержание/ресурсы/приложения.Асар/папки node_modules/grpc/ГРЦ/клиента.ДШ:221:8)
 в readCallback (/приложения/Зап.приложение/содержание/ресурсы/приложения.Асар/папки node_modules/grpc/ГРЦ/клиента.ДШ:283:12)

Что я упустил, чтобы получить молнии бежать?

+198
eratenpaul 20 дек. 2017 г., 9:42:30

биткоины отправляются из фонда будут поступать из кошелька, которые они контролируют. если вы отправили биткоин или Bitcoin наличных обратно теперь они контролируют эти средства.

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

сделать это как можно быстрее, но помните, что вы, возможно, придется подождать, пока компания поддерживает ВСН снять их.

+152
4nana 20 сент. 2016 г., 10:16:44

Я предполагаю, что вы конкретно говорите о Bitcoin. Детали различаются для разных систем.

Чтобы проверить проводку, есть несколько вещей, которые вы должны проверить. Но очень важно, что вы проверить, что сделка выходы, которые он пытается использовать существующие и еще не было потрачено. Выходы существуют, если они были созданы транзакции в предыдущем квартале. Результаты еще не были потрачены, если они не потребляются любые сделки в предыдущем квартале, ни в каких-либо предварительных транзакций в блоке транзакции.

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

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

+144
Anil Motwani 4 июл. 2018 г., 16:27:39

Я пытаюсь подключиться к моей btcd бэкэнд на внешнем сервере, но когда я запускаю:

ЛНД --биткойн.активный \
 --биткойн.mainnet \
 --отладки debuglevel \
 --btcd.rpcuser мой_логин \
 --btcd.rpcpass mypass \
 --externalip Х. Х. Х. Х:ХХХХ \
--btcd.rpccert=ЭКП.свиду

Я также пробовал в том числе --btcd.rpchost=Х. Х. Х. Х:ХХХХ в команде выше

Я столкнулся с этим выход:

2018-07-30 18:04:13.863 [инф] LTND: версия 0.4.2-бета совершить=
2018-07-30 18:04:13.863 [инф] LTND: активные цепи: биткоин (сеть=mainnet)

Иногда я хотел бы получить больше продукции и будет предложено ввести пароль для моего кошелька дорогу мне вход, который выглядит так:

2018-07-30 18:31:52.781 [инф] LTND: версия 0.4.2-бета фиксации=
2018-07-30 18:31:52.781 [инф] LTND: активные цепи: биткоин (сеть=mainnet)
2018-07-30 18:31:52.781 [инф] "ЧДБ": проверки для обновление схемы: latest_version=3, db_version=3
2018-07-30 18:31:52.796 [инф] ЭКП: пароль сервера RPC для прослушивания на 127.0.0.1:10009
2018-07-30 18:31:52.796 [инф] ЭКП: пароль gRPC прокси запущен на 127.0.0.1:8080
2018-07-30 18:31:52.796 [инф] LTND: жду пароль шифрование кошелька. Lncli использовать "создать", чтобы создать кошелек, `lncli разблокировать, чтобы разблокировать существующий кошелек, или метода changepassword lncli для смены пароля существующего кошелька и разблокировать его.
2018-07-30 18:31:58.391 [инф] НСУВ: открыл кошелек
2018-07-30 18:31:58.450 [РСМД] LTND: первичной цепи устанавливается на: биткоин
2018-07-30 18:31:58.453 [инф] LTND: инициализация btcd поддержал сметчик плата 

Примерно через 20 минут связь тайм-аут и ЛНД бы дал мне это:

не удалось создать управление, услуги: набор протоколов TCP 127.0.0.1:8334: подключение: подключение отказался

Я проверил, что полномочия в btcd.conf и btcctl.conf на мой внешний сервер такие же

Мой сервер наверняка работает, потому что я могу назвать сервер btcd с помощью этой команды:

btcctl -у мой_логин -П mypass -с Х. Х. Х. Х:ХХХХ getpeerinfo --rpccert=ЭКП.свиду

Кроме того, btcd не дает мне никаких ошибок проверки подлинности, когда я пытаюсь подключиться к нему с ЛНД. Это, наверное, даже не знаю, мой демон существует.

Кто-нибудь знает почему я не могу подключиться к моему серверу?

+59
spaaarky21 29 июл. 2010 г., 12:28:06

Я знаю, что размер блока может подняться выше 1 МБ крышка из-за SegWit. Однако, мое понимание было то, что размер блока будет ограниченным по SegWit.

Мое понимание SegWit является то, что перегородки подпись часть блок от проводки. Я также считаю, я читаю, что подпись часть может составлять 65% от размера блока. Если это правда, то я был бы под впечатлением, что максимальный размер блока с SegWit бы 1 МБ * (1/.35) делает теоретический максимум 2.85 МБ.

Есть ли способ, чтобы рассчитать теоретический максимум допускается в биткоин-блоков и где мое понимание выше недостатки?

+48
1102 20 мар. 2013 г., 12:52:16

Хотя идея иметь 10 опекунов звучит хорошо в теории, на практике это наверное не тот случай, с одним лицом, контролирующим 10 миллионер счетов. Этот человек также имеет возможность провести все владельцы solidcoin на выкуп, так как они могут эффективно закрыть сеть, в отличие от биткойна, где любой желающий может шахта, solidcoin зависит от миллионера приходится добывать в каждом квартале. Если их закроют (которая управляется одним человеком, они могли бы легко), то сеть отключается, и все теряет доступ к свои биткоины. В самом деле, с solidcoin, это уже случилось однажды так далеко. Это хорошая идея, и иногда хорошей идеей является все, что некоторые люди должны сделать инвестиции, в то время как другие (включая меня) предпочитают делать маленькие оценки риска. Эти люди, я подозреваю, нет solidcoins.

+10
LeonardChallis 20 мар. 2013 г., 16:48:50

Показать вопросы с тегом