Jump to content
kapkapiton

Вопрос по технической стороне блокчейна биткоина

Recommended Posts

Добрый день, пытаюсь разобраться с системой блокчейн на различных примерах.

 

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

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

 

Сам кстати пытался разобраться по коду python данной статьи https://proglib.io/p/new-bitcoin/. Там можно запустить кошелек, но единственное  что там можно получить, только список транзакций. Какого-то контроля за балансом я не заметил.

 

Share this post


Link to post
Share on other sites

@Old Miner сурово... :)

20 минут назад, kapkapiton сказал:

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

"Цепочка блоков" несет в себе практически 100% ответа на данный вопрос. Генерируемый блок получает отпределенную сумму, которую распределяет между участниками в пропорции (если таковые имеются), это новые деньги. Дальше, любая сумма можете перемещаться сколько угодно и в любых кусках, но всегда есть основной источник, общая сумма которого никогда не изменится "(награда + комса сети) - траты". Если проще, то... вы с другом майнили в соло с равными мощностями, нашли блок 10 лет назад и получили награду в 50 битков, т.е. по 25 на рыло. Через 5 лет нашли еще блок при тех же условиях и получили 25 монет, т.е. по 12.5 на каждого. Итого, у вас есть по 37.5 монет из двух блоков. Если кто-то один из вас захочет потратить 25 монет без комсы, то у того останется только 12.5 со второго блока. А второй чел захочет потратить 12.5 монет без комсы, то у него останется 25 из первого. Тут все яснопонятно. А теперь каждый из вас решил потратить еще по 5 монет, и в результате, у первого будет трата 5 из 12.5 и ему вернется сдача в виде 7.5 монет, а второй, потратив 5 получит сдачу в 20 монет. И каждая такая сделка может быть совершена только с "регистрацией" в очередном найденном блоке. Таким образом, ты не можешь потратить больше, чем у тебя есть, поскольку цепочка одна и парадокс исключен. 
Есть возможность двойной траты, но это несколько другое... это как одной пиписькой сразу в двух бап - единовременно только одна почувствует.

Share this post


Link to post
Share on other sites

@Lexis77 сурово... :)

Баланс высчитывается суммированием UTXO адреса на текущий момент.

Потратить можно только их, поэтому больше, чем есть на балансе  -  не потратишь, взять новые, несуществующие UTXO для сборки транзакции просто неоткуда.

Edited by rammendo

Share this post


Link to post
Share on other sites

Блокчейн Биткоина построен на архитектуре UTXO - не потраченные выходы транзакций (монеты). Это несколько другая концепция в отличии от Account based архитектуры к которой все привыкли. В системе с аккаунтами мы следим за балансом и проверяем достаточно ли его, перед транзакцией списания. В UTXO, балансом является совокупность всех монет, принадлежащих определенному адресу. При создании транзакции в системе UTXO нет понятия отправитель а есть понятие монета (не потраченный выход транзакции) которая тратиться. Для функционирования такой системы каждая нода должна иметь список всех не потраченных монет и проверять корректность транзакций исходя их данного списка. По это причине у биткоин ноды нельзя запросить баланс произвольного адреса в отличии к примеру от эфириума, где используется система аккаунтов. Баланс всех адресов можно узнать если составить отдельный список не потраченных монет сопоставленных с адресами. Что к примеру делают битокин экплореры.

Share this post


Link to post
Share on other sites
49 минут назад, 4_tochka сказал:

у биткоин ноды нельзя запросить баланс произвольного адреса

 

Уже можно. В версии 0.17 Bitcoin Core появился новый RPC-вызов scantxoutset, который позволяет узнать баланс по любому адресу.

Share this post


Link to post
Share on other sites

Благодарю всех за ответы, еще пару вопросов, если можно:

 

- Пиры, ноды которые участвуют в майнинге записываются в цепочку блоков, или каким образом нода узнает о других?

 

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

Edited by kapkapiton

Share this post


Link to post
Share on other sites
11 минут назад, kapkapiton сказал:

Благодарю всех за ответы, еще пару вопросов, если можно:

 

1)

17 часов назад, Old Miner сказал:

 

2)

https://forum.bits.media/index.php?/search/

Share this post


Link to post
Share on other sites
1 час назад, kapkapiton сказал:

Благодарю всех за ответы, еще пару вопросов, если можно:

hardly. Laziness's detected.

1 час назад, kapkapiton сказал:

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

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

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

1 час назад, kapkapiton сказал:

или каким образом нода узнает о других

Посредством P2p. Используя интернет, ноды обмениваются тех данными между собой. Используется специализированное ПО. Например, Bitcoin Core.

1 час назад, kapkapiton сказал:

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

Как два пальца. И достаточно только приватного ключа, так как публичный генерируется через приватный. Соответственно и публичный адрес генерируется из приватного ключа.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...