Bitcoin Forum
November 13, 2024, 03:17:25 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: base58  (Read 1660 times)
loshara (OP)
Newbie
*
Offline Offline

Activity: 57
Merit: 0


View Profile
April 25, 2017, 12:23:50 AM
 #1

помогите чайнику разобраться с base58.

Как (на примере) из hex переводится в base58?

вот как , например, 1000bbcc  перевести с ручкой и калькулятором на бумаге.

помогите пожалуйста чайнику разобраться с таким смешным вопросом
xhomerx10
Legendary
*
Offline Offline

Activity: 4018
Merit: 8861



View Profile
April 25, 2017, 04:50:08 AM
 #2

помогите чайнику разобраться с base58.

Как (на примере) из hex переводится в base58?

вот как , например, 1000bbcc  перевести с ручкой и калькулятором на бумаге.

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

1000bbcc16 = 26848353210


                  0 Остаток 23       X      584  +
             58)23 Остаток 42      X     583   +
         58)1376 Остаток 2        X      582  +
      58)79810 Остаток 46       X     581    +
   58)4629026 Остаток 24      X     580    +
  58)268483532                          <----- Начать здесь


СтоимостьсимволСтоимостьсимволСтоимостьсимволСтоимостьсимвол
01122334
45566778
899A10B11C
12D13E14F15G
16H17J18K19L
20M21N22P23Q
24R25S26T27U
28V29W30X31Y
32Z33a34b35c
36d37e38f39g
40h41i42j43k
44m45n46o47p
48q49r50s51t
52u53v54w55x
56y57z



23=Q, 42=j, 2=3, 46=o, 24=R

 поэтому
1000bbcc16=Qj3oR58



loshara (OP)
Newbie
*
Offline Offline

Activity: 57
Merit: 0


View Profile
April 25, 2017, 06:44:47 AM
 #3

Спасибо огромное!
Только остался последний вопрос, от куда Вы берете этот остаток?   Huh

268483532/58=4 629 026,4137931034482758620689655   

4629026/58=79 810,793103448275862068965517241

объясните, пожалуйста, чайнику.
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
April 25, 2017, 08:47:20 AM
 #4

Спасибо огромное!
Только остался последний вопрос, от куда Вы берете этот остаток?   Huh

268483532/58=4 629 026,4137931034482758620689655   

4629026/58=79 810,793103448275862068965517241

объясните, пожалуйста, чайнику.

На бумажке столбиком делите

OpenTrade - Open Source Cryptocurrency Exchange
loshara (OP)
Newbie
*
Offline Offline

Activity: 57
Merit: 0


View Profile
April 25, 2017, 08:56:32 AM
 #5

Нет, ну а правда. Помогите понять. Не всем понятны общеизвестные истины.. 3 час идет, хоть убейте  Shocked
ThisNameIsAlreadyInUse
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
April 25, 2017, 09:45:47 AM
 #6

Нет, ну а правда. Помогите понять. Не всем понятны общеизвестные истины.. 3 час идет, хоть убейте  Shocked

Ты ник то почему такой выбрал? В школе плохо учился? Тогда вперед, за учебники:
https://www.google.ru/search?q=%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B+%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0+%D0%BA%D0%BB%D0%B0%D1%81%D1%81

Тема возникает в школе несколько раз: во 2ом, в 3ем и в 5ом классах. Еще потом в 8ом на информатике.

loshara (OP)
Newbie
*
Offline Offline

Activity: 57
Merit: 0


View Profile
April 25, 2017, 10:07:04 AM
 #7

Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.
kcaterpillar
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
April 25, 2017, 10:36:35 AM
 #8

Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.

Есть системы измерения - десятичная, шестнадцатеричная, двоичная и другие - в любой из них можно делить столбиком. У base58 основание 58-ное, что и следует из её названия. Т.е. это пятидесятивосьмиричная система счисления и записи. Делите столбиком и в ней - всё получится.

С остатком тоже всё просто. Например, в десятичной системе возьмите число 17.  В нём первая цифра указывает целые десятки, а семёрка - это остаток от деления на 10, т.е. на основание (base10).  В числе 589 первые цифры 5 и 8 также указывают на целые десятки десяток и десятки, а последняя цифра 9 - это остаток от деления столбиком на десять.

В системе биткойн используется обратный порядок записи - см. Little endian/Big endian.
ThisNameIsAlreadyInUse
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
April 25, 2017, 10:40:59 AM
Last edit: April 25, 2017, 10:55:40 AM by ThisNameIsAlreadyInUse
 #9

Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.

Он никого, кроме тебя не оскорбляет. Самокритика - это конечно злорово, но к месту. Подумай, чем он принципиально отличается от ника, скажем, "пидар". Какое впечатление ты производишь на тех, кто тебя читает?

Теперь по теме напомню правило:
Quote
Для перевода числа, записанного в системе с основанием a, в систему с основанием b нужно: записать основание b как число в системе с основанием a и выполнять деление числа с остатком на ba до тех пор, пока частное не станет равным нулю. На первой итерации выполняется деление исходного числа, на всех последующих - частного от предыдущей итерации. Затем все остатки переводятся в цифры системы счисления с основанием b и выписываются в обратном порядке

Перевод биткойн-адресов из бинарной формы (внутреннего машинного представления) в форму, удобную для человека, происходит по такому же принципу, где конечная система счисления имеет основание 58, а цифры представлены следующей последовательностью символов:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

где символ 1 соответствует нулю, а z - 5710  
loshara (OP)
Newbie
*
Offline Offline

Activity: 57
Merit: 0


View Profile
April 25, 2017, 11:03:28 AM
 #10

спасибо большое. Понял. Ну и логично, что обратно надо умножать тогда  Cheesy

Только не понял зачем так сложно и зачем понадобилось использовать вобще base58, почему не оставить hex было умному математику..

И единственная проблема, внимая Вашим советам, ник здесь нельзя менять (переименовывать Sad
kcaterpillar
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
April 25, 2017, 11:15:04 AM
 #11


Только не понял зачем так сложно и зачем понадобилось использовать вобще base58, почему не оставить hex было умному математику..


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

amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
April 25, 2017, 03:43:55 PM
 #12

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

Интересно, вы сколько раз в жизни записывали биткойн-адрес на бумажку?
Я лично ни разу.
В кефире вовсю используются Hex-представления и никто особо не парится.
У них даже нет в адресе контрольной суммы.

Так что base58 - это скорее прижившийся атавизм. Никому не интересно как там внутри
устроено и почему нет буквы 'l' (L-маленькая) в адресе. А для программистов, которые не вчера
родились нет разницы что base58, что hex использовать. Накамото придумал так
кодировать - и с тех пор проще продолжать так, чем всех переучивать.

Экономия в 2 бита - это вообще смешно.  Grin
ThisNameIsAlreadyInUse
Newbie
*
Offline Offline

Activity: 54
Merit: 0


View Profile
April 25, 2017, 04:16:47 PM
 #13

Экономия в 2 бита - это вообще смешно.  Grin

Справедливости ради, экономия не в два бита - адрес записанный в кодировке base58 почти на треть короче чем, в шестнадцатеричной форме:

Code:
ln 16 ÷ ln 58 == 0.6828
kcaterpillar
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
April 25, 2017, 04:23:25 PM
 #14


Интересно, вы сколько раз в жизни записывали биткойн-адрес на бумажку?
Я лично ни разу.


Лично я тоже ни разу не записывал на бумажку, но тем не менее сделали base58 именно для чтения/записи человеком. Подобный алгоритм, исключающий похожие буквы-цифры, использовался и раньше, например, при проверке паролей, чтобы люди не путались. Может и не самая нужная идея, но в биткойне base58 придумали именно для этого. Теоретически, кто-то когда-то может и запишет на бумагу, в целом идея верная, если бы предположить, что биткойн покорит весь финансовый мир. Например, будут присылать бумажные биткойн-счета по почте. Smiley)
kcaterpillar
Full Member
***
Offline Offline

Activity: 173
Merit: 100


View Profile
April 25, 2017, 04:52:41 PM
 #15

Экономия в 2 бита - это вообще смешно.  Grin

Справедливости ради, экономия не в два бита - адрес записанный в кодировке base58 почти на треть короче чем, в шестнадцатеричной форме:

Code:
ln 16 ÷ ln 58 == 0.6828


Так я об этом и говорю, только не до конца уточнил. При записи двоичных данных одинаковой длины на шесть HEX символов придётся чуть более четырех base58 символов - это уже в ASCII кодировке. Т.е. на каждый символ base58 в ASCII будет округлённо на два бита больше в HEХ-формате в ASCII тех же данных.
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
April 25, 2017, 06:17:00 PM
 #16

Так я об этом и говорю, только не до конца уточнил. При записи двоичных данных одинаковой длины на шесть HEX символов придётся чуть более четырех base58 символов - это уже в ASCII кодировке. Т.е. на каждый символ base58 в ASCII будет округлённо на два бита больше в HEХ-формате в ASCII тех же данных.
Епать экономия. 20 байт в base58check это 35 символов (приблизительно)
в хексе 40 символов  (без контрольной суммы)
Ахуительная экономия. Примерно на два сантиметра на бумаге запись короче.
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
April 25, 2017, 06:50:57 PM
 #17

Есть мнение, что изначально вся эта байда с пруф оф ворком придумывалась накомотой вовсе не для финансов, а для электронной почты. В почте все кодируется base64.
Но когда родилась идея сделать из открытых ключей адреса кошельков, то было лень прямо все переделывать и поэтому base64 превратился в base58 (хотя логичней было бы в base10 и не трахать мозг) просто потому, что так действительно удобней читать когда в ключе нет символов оliI+/

OpenTrade - Open Source Cryptocurrency Exchange
xhomerx10
Legendary
*
Offline Offline

Activity: 4018
Merit: 8861



View Profile
April 26, 2017, 12:53:43 AM
 #18

спасибо большое. Понял. Ну и логично, что обратно надо умножать тогда  Cheesy

Только не понял зачем так сложно и зачем понадобилось использовать вобще base58, почему не оставить hex было умному математику..

И единственная проблема, внимая Вашим советам, ник здесь нельзя менять (переименовывать Sad

 Я не мог бы объяснить лучше, потому что я не говорю по-русски. Я рад, что другие помогли вам полностью понять.
«Как дела» - только слова, которые я знаю по-русски   Embarrassed
Pages: [1]
  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!