Author

Topic: base58 (Read 1668 times)

legendary
Activity: 3808
Merit: 7912
April 25, 2017, 07:53:43 PM
#18
спасибо большое. Понял. Ну и логично, что обратно надо умножать тогда  Cheesy

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

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

 Я не мог бы объяснить лучше, потому что я не говорю по-русски. Я рад, что другие помогли вам полностью понять.
«Как дела» - только слова, которые я знаю по-русски   Embarrassed
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
April 25, 2017, 01:50:57 PM
#17
Есть мнение, что изначально вся эта байда с пруф оф ворком придумывалась накомотой вовсе не для финансов, а для электронной почты. В почте все кодируется base64.
Но когда родилась идея сделать из открытых ключей адреса кошельков, то было лень прямо все переделывать и поэтому base64 превратился в base58 (хотя логичней было бы в base10 и не трахать мозг) просто потому, что так действительно удобней читать когда в ключе нет символов оliI+/
legendary
Activity: 1260
Merit: 1019
April 25, 2017, 01:17:00 PM
#16
Так я об этом и говорю, только не до конца уточнил. При записи двоичных данных одинаковой длины на шесть HEX символов придётся чуть более четырех base58 символов - это уже в ASCII кодировке. Т.е. на каждый символ base58 в ASCII будет округлённо на два бита больше в HEХ-формате в ASCII тех же данных.
Епать экономия. 20 байт в base58check это 35 символов (приблизительно)
в хексе 40 символов  (без контрольной суммы)
Ахуительная экономия. Примерно на два сантиметра на бумаге запись короче.
full member
Activity: 173
Merit: 100
April 25, 2017, 11:52:41 AM
#15
Экономия в 2 бита - это вообще смешно.  Grin

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

Code:
ln 16 ÷ ln 58 == 0.6828


Так я об этом и говорю, только не до конца уточнил. При записи двоичных данных одинаковой длины на шесть HEX символов придётся чуть более четырех base58 символов - это уже в ASCII кодировке. Т.е. на каждый символ base58 в ASCII будет округлённо на два бита больше в HEХ-формате в ASCII тех же данных.
full member
Activity: 173
Merit: 100
April 25, 2017, 11:23:25 AM
#14

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


Лично я тоже ни разу не записывал на бумажку, но тем не менее сделали base58 именно для чтения/записи человеком. Подобный алгоритм, исключающий похожие буквы-цифры, использовался и раньше, например, при проверке паролей, чтобы люди не путались. Может и не самая нужная идея, но в биткойне base58 придумали именно для этого. Теоретически, кто-то когда-то может и запишет на бумагу, в целом идея верная, если бы предположить, что биткойн покорит весь финансовый мир. Например, будут присылать бумажные биткойн-счета по почте. Smiley)
newbie
Activity: 54
Merit: 0
April 25, 2017, 11:16:47 AM
#13
Экономия в 2 бита - это вообще смешно.  Grin

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

Code:
ln 16 ÷ ln 58 == 0.6828
legendary
Activity: 1260
Merit: 1019
April 25, 2017, 10:43:55 AM
#12
Потому что base58 занимает на два  с небольшим бита меньше, чем HEX.  И base58 содержит
много буквенных "цифр", т.е. возможны осмысленные названия и прочтение, это удобнее цифр
для людей. base58 в биткойне была сделана именно для людей, а не для машин, чтобы легче
читали и не ошибались в адресах.

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

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

Экономия в 2 бита - это вообще смешно.  Grin
full member
Activity: 173
Merit: 100
April 25, 2017, 06:15:04 AM
#11

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


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

newbie
Activity: 57
Merit: 0
April 25, 2017, 06:03:28 AM
#10
спасибо большое. Понял. Ну и логично, что обратно надо умножать тогда  Cheesy

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

И единственная проблема, внимая Вашим советам, ник здесь нельзя менять (переименовывать Sad
newbie
Activity: 54
Merit: 0
April 25, 2017, 05:40:59 AM
#9
Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.

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

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

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

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

где символ 1 соответствует нулю, а z - 5710  
full member
Activity: 173
Merit: 100
April 25, 2017, 05:36:35 AM
#8
Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.

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

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

В системе биткойн используется обратный порядок записи - см. Little endian/Big endian.
newbie
Activity: 57
Merit: 0
April 25, 2017, 05:07:04 AM
#7
Еще учусь.. переименую ник, неужели этот ник, причем, никого не оскорбляющий, влияет на ответ всех участников форума. Иными словами, столбиком же из hex в base58 никто не пользуется..  Huh
Спасибо xhomerx10, буду искать ответ дальше..  Ник выбрал такой - потому что это, на данном форуме, правда.
newbie
Activity: 54
Merit: 0
April 25, 2017, 04: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ом на информатике.

newbie
Activity: 57
Merit: 0
April 25, 2017, 03:56:32 AM
#5
Нет, ну а правда. Помогите понять. Не всем понятны общеизвестные истины.. 3 час идет, хоть убейте  Shocked
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
April 25, 2017, 03:47:20 AM
#4
Спасибо огромное!
Только остался последний вопрос, от куда Вы берете этот остаток?   Huh

268483532/58=4 629 026,4137931034482758620689655   

4629026/58=79 810,793103448275862068965517241

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

На бумажке столбиком делите
newbie
Activity: 57
Merit: 0
April 25, 2017, 01:44:47 AM
#3
Спасибо огромное!
Только остался последний вопрос, от куда Вы берете этот остаток?   Huh

268483532/58=4 629 026,4137931034482758620689655   

4629026/58=79 810,793103448275862068965517241

объясните, пожалуйста, чайнику.
legendary
Activity: 3808
Merit: 7912
April 24, 2017, 11:50:08 PM
#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



newbie
Activity: 57
Merit: 0
April 24, 2017, 07:23:50 PM
#1
помогите чайнику разобраться с base58.

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

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

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