Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
30 апреля 2014, 2:02:03 AM   # 1
 
 
Сообщения: 765
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я играл с этой идеей. Использование функции Cantor Сопряжение объединить разные адреса.

Абстрактные

Учитывая, что взрыв в altcoins, будет разумно предположить, что торговцы будут принимать ряд различных криптографических монет в качестве платежей. Мы видим, что Bitcoin, Litecoin и Dogecoin как передние бегунов.

Я предлагаю вместо предоставления пользователя различных адресов для каждой валюты, торговцы могли бы использовать Сопряжение функцию Кантора, чтобы обеспечить «смешанный» адрес. Это позволит торговцам производить один уникальный QR-код и адрес. Пользователь может затем добавить кантор в паре адрес их кошелек выбора.

Число обмены могут уменьшить количество депозитных адресов, показанных пользователю.

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

Возьмите адрес, установленный BTC 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T, LTC LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преобразование base58 адреса в десятичную, а затем применяя функцию урожайности канторовым Pair 4816056888050750582224742844031604102132678664282188647256495058920612654357063 8391750708909119424733449538336733090951

В base58

Например, тип мим Кантор: // 4Qu9uDoad4ymwntxwBYHhMLmGvfhBivMSPKAz5tX4iyKQ8xzx21YJsJzyUWWHHAShiFg

На настольном компьютере, пара и обратный принимает 12ms

Мысли?



Код:

с использованием системы;

используя System.Collections.Generic;

используя System.Linq;

используя System.Text;

используя System.Threading.Tasks;

 

Пространство имен CantorPairing

{

classProgram

{

staticvoid Main (string [] арг)

{

//

Console.Write ("Начните с Bitcoin адреса в качестве десятичного 4824855521912883454204125328393785564172057950402473856794");

Console.WriteLine ("или 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T");

Console.Write ("Добавить адрес litecoin десятичного 305531613334489417964998059632233568427215324197451409291673");

Console.WriteLine ("или LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE");

 

System.Diagnostics.Stopwatch SW = System.Diagnostics.Stopwatch.StartNew ();

Org.BouncyCastle.Math.BigInteger = новый BTC Org.BouncyCastle.Math.BigInteger ("4824855521912883454204125328393785564172057950402473856794");

Org.BouncyCastle.Math.BigInteger LTC = новый Org.BouncyCastle.Math.BigInteger ("305531613334489417964998059632233568427215324197451409291673");

 

Org.BouncyCastle.Math.BigInteger bigResult = CantorPair (BTC, LTC);

 

Console.WriteLine ("Функция кантора спаривания дает число ", BigResult);

 

Org.BouncyCastle.Math.BigInteger [] = пара обратного (bigResult);

 

 

sw.Stop ();

 

Console.WriteLine (bigResult +" в "+ Sw.ElapsedMilliseconds +"Миз");

Console.WriteLine ("Btc {0}", Пара [0]);

Console.WriteLine ("Ltc {0}", Пара [1]);

 

Console.ReadKey ();

}

 

staticint CantorPair (короткий х, короткие у)

{

Возвращение ((х + у) * (х + у + 1)) / 2 + у;

}

 

статическая Org.BouncyCastle.Math.BigInteger CantorPair (Org.BouncyCastle.Math.BigInteger х, Org.BouncyCastle.Math.BigInteger у)

{

Org.BouncyCastle.Math.BigInteger xplusy = x.Add (у);

Org.BouncyCastle.Math.BigInteger xplusyplus1 = xplusy.Add (Org.BouncyCastle.Math.BigInteger.One);

Org.BouncyCastle.Math.BigInteger внутри = xplusy.Multiply (xplusyplus1);

Org.BouncyCastle.Math.BigInteger twoplusy = Org.BouncyCastle.Math.BigInteger.Two.Add (у);

 

вернуть xplusy.Multiply (xplusyplus1) .Divide (Org.BouncyCastle.Math.BigInteger.Two) .Add (у);

}

 

staticshort [] Reverse (интермедиат г)

{

Короче [] = пара newshort [2];

INT т = (целое) Math.floor ((- 1D + Math.Sqrt (1D + 8 * г)) / 2D);

INT х = т * (т + 3) / 2 г;

INT у = г - т * (т + 1) / 2;

пара [0] = (короткий) х;

пара [1] = (короткий) у;

вернуть пару;

}

 

статическое Org.BouncyCastle.Math.BigInteger [] Reverse (Org.BouncyCastle.Math.BigInteger г)

{

//"константы"

Org.BouncyCastle.Math.BigInteger три = новый Org.BouncyCastle.Math.BigInteger ("3");

Org.BouncyCastle.Math.BigInteger восемь = новый Org.BouncyCastle.Math.BigInteger ("8");

 

Org.BouncyCastle.Math.BigInteger [] пара = новый Org.BouncyCastle.Math.BigInteger [2];

Org.BouncyCastle.Math.BigInteger т = eight.Multiply (г) .Add (Org.BouncyCastle.Math.BigInteger.One);

 

Байт [] tempBytes = t.ToByteArray ();

Array.Reverse (tempBytes);

 

System.Numerics.BigInteger темп = новые System.Numerics.BigInteger (tempBytes);

System.Numerics.BigInteger корень = SQRT (темп);

 

Строка root3 = root.ToString ();

 

Org.BouncyCastle.Math.BigInteger root2 = новый Org.BouncyCastle.Math.BigInteger (root3);

 

т = root2.Subtract (Org.BouncyCastle.Math.BigInteger.One);

т = t.Divide (Org.BouncyCastle.Math.BigInteger.Two);

 

Org.BouncyCastle.Math.BigInteger tplus3 = t.Add (три);

Org.BouncyCastle.Math.BigInteger tplus1 = t.Add (Org.BouncyCastle.Math.BigInteger.One);

 

Org.BouncyCastle.Math.BigInteger х = t.Multiply (tplus3) .Divide (Org.BouncyCastle.Math.BigInteger.Two) .Subtract (г); // * (т + 3) / 2 - г;

Org.BouncyCastle.Math.BigInteger у = t.Multiply (tplus1) .Divide (Org.BouncyCastle.Math.BigInteger.Two); // - * т (т + 1) / 2;

у = z.Subtract (у);

 

пара [0] = х;

пара [1] = у;

вернуть пару;

}

 

publicstatic System.Numerics.BigInteger SQRT (System.Numerics.BigInteger п)

{

если (п == 0) return0;

если (п >0)

{

INT bitLength = Convert.ToInt32 (Math.Ceiling (System.Numerics.BigInteger.Log (п, 2)));

System.Numerics.BigInteger корень = System.Numerics.BigInteger.One << (BitLength / 2);

 

в то время как (! isSqrt (п, корень))

{

корень + = п / корень;

корень / = 2;

}

 

вернуть корень;

}

 

thrownewArithmeticException ("NaN");

}

 

privatestaticBoolean isSqrt (System.Numerics.BigInteger п, System.Numerics.BigInteger корень)

{

System.Numerics.BigInteger LowerBound = корень * корень;

System.Numerics.BigInteger UpperBound = (корень + 1) * (корень + 1);

 

возврата (п >= LowerBound && N < верхняя граница);

}

}

}

Doof сейчас офлайн Пожаловаться на Doof   Ответить с цитированием Мультицитирование сообщения от Doof Быстрый ответ на сообщение Doof


Как заработать Биткоины?
Без вложений. Не майнинг.


30 апреля 2014, 8:38:45 AM   # 2
 
 
Сообщения: 201
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

Получил 1806 Биткоинов
Реальная история.





Noob здесь. На первый взгляд это кажется, интересная идея (это первый раз, когда я услышал о СПЛ). Не могли бы вы дать более подробную информацию о том, как это будет работать. Например, торговец имеет комбинированную BTC & LTC адрес, как в вашем примере, и когда я в качестве депозита BTC клиента на этот адрес, как это транзакция обрабатывается? Есть ли там должны быть дополнительное программное обеспечение, чтобы решить, если я сдал на хранение BTC или LTC и который blockchain должен проверить сделку?
Манфреда MACX сейчас офлайн Пожаловаться на Манфреда MACX   Ответить с цитированием Мультицитирование сообщения от Manfred Macx Быстрый ответ на сообщение Manfred Macx

30 апреля 2014, 10:20:19 AM   # 3
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Если вы настаиваете на адреса спаривания, вы можете также объединить их с разделителем-символом, что это вне множества base58 символов. Ваши адреса будут паре красиво (с использованием в качестве разделителя +):
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T + LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преимущество этого метода состоит в том, что пользователь без совместимого программного обеспечения все еще может смотреть на этом парной адрес и идентифицировать BTC (или LTC) часть и вручную копировать / вставить, что в его бумажнике-клиент.
Rannasha сейчас офлайн Пожаловаться на Rannasha   Ответить с цитированием Мультицитирование сообщения от Rannasha Быстрый ответ на сообщение Rannasha

30 апреля 2014, 5:11:28 PM   # 4
 
 
Сообщения: 1736
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Если вы настаиваете на адреса спаривания, вы можете также объединить их с разделителем-символом, что это вне множества base58 символов. Ваши адреса будут паре красиво (с использованием в качестве разделителя +):
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T + LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преимущество этого метода состоит в том, что пользователь без совместимого программного обеспечения все еще может смотреть на этом парной адрес и идентифицировать BTC (или LTC) часть и вручную копировать / вставить, что в его бумажнике-клиент.

Если нет какого-то преимущества ей, простая конкатенация, кажется, проще всего, как указано выше. Простые удары сложно. 🙂

Кодирование нескольких адресов в коде Qr было бы полезно.
cr1776 сейчас офлайн Пожаловаться на cr1776   Ответить с цитированием Мультицитирование сообщения от cr1776 Быстрый ответ на сообщение cr1776

1 мая 2014, 8:36:24 AM   # 5
 
 
Сообщения: 765
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Если вы настаиваете на адреса спаривания, вы можете также объединить их с разделителем-символом, что это вне множества base58 символов. Ваши адреса будут паре красиво (с использованием в качестве разделителя +):
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T + LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преимущество этого метода состоит в том, что пользователь без совместимого программного обеспечения все еще может смотреть на этом парной адрес и идентифицировать BTC (или LTC) часть и вручную копировать / вставить, что в его бумажнике-клиент.

Если нет какого-то преимущества ей, простая конкатенация, кажется, проще всего, как указано выше. Простые удары сложно. 🙂

Кодирование нескольких адресов в коде Qr было бы полезно.

Правда ... только идея. Может быть, неправильное применение.
Doof сейчас офлайн Пожаловаться на Doof   Ответить с цитированием Мультицитирование сообщения от Doof Быстрый ответ на сообщение Doof

1 мая 2014, 10:17:58 AM   # 6
 
 
Сообщения: 1736
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Если вы настаиваете на адреса спаривания, вы можете также объединить их с разделителем-символом, что это вне множества base58 символов. Ваши адреса будут паре красиво (с использованием в качестве разделителя +):
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T + LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преимущество этого метода состоит в том, что пользователь без совместимого программного обеспечения все еще может смотреть на этом парной адрес и идентифицировать BTC (или LTC) часть и вручную копировать / вставить, что в его бумажнике-клиент.

Если нет какого-то преимущества ей, простая конкатенация, кажется, проще всего, как указано выше. Простые удары сложно. 🙂

Кодирование нескольких адресов в коде Qr было бы полезно.

Правда ... только идея. Может быть, неправильное применение.

Это классная идея, может быть, лучше использовать можно найти. 🙂 

С точки зрения технологий и мышления это интересно.

cr1776 сейчас офлайн Пожаловаться на cr1776   Ответить с цитированием Мультицитирование сообщения от cr1776 Быстрый ответ на сообщение cr1776

1 мая 2014, 10:35:32 AM   # 7
 
 
Сообщений: 56
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Это интересно, но это не является эффективным способом кодирования двух чисел в вычислительном отношении. Единственная потенциальная выгода уменьшается выделение памяти, когда эти два числа имеют высокие переменные длину. С Bitcoin адресов, длины почти всегда одинаковы, так что не имеет никакой реальной пользы над только конкатенации чисел фиксированной длины.
telepatheic сейчас офлайн Пожаловаться на telepatheic   Ответить с цитированием Мультицитирование сообщения от telepatheic Быстрый ответ на сообщение telepatheic

2 мая 2014, 6:31:49 AM   # 8
 
 
Сообщения: 765
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

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

Потребовалось только 12ms на довольно фондовом ПК.
Doof сейчас офлайн Пожаловаться на Doof   Ответить с цитированием Мультицитирование сообщения от Doof Быстрый ответ на сообщение Doof

2 мая 2014, 6:33:04 AM   # 9
 
 
Сообщения: 765
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

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

Если вы настаиваете на адреса спаривания, вы можете также объединить их с разделителем-символом, что это вне множества base58 символов. Ваши адреса будут паре красиво (с использованием в качестве разделителя +):
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T + LaxGrwMeokoMgv5zYpv5btT4yNUB9DaiqE

Преимущество этого метода состоит в том, что пользователь без совместимого программного обеспечения все еще может смотреть на этом парной адрес и идентифицировать BTC (или LTC) часть и вручную копировать / вставить, что в его бумажнике-клиент.

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

Конечно, разделить функция будет работать. Но это еще не весело.
Doof сейчас офлайн Пожаловаться на Doof   Ответить с цитированием Мультицитирование сообщения от Doof Быстрый ответ на сообщение Doof

2 мая 2014, 6:45:45 AM   # 10
 
 
Сообщений: 56
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

котировка
только 12ms

12ms крайне медленно. Объединение двух чисел занимает всего несколько наносекунд.
telepatheic сейчас офлайн Пожаловаться на telepatheic   Ответить с цитированием Мультицитирование сообщения от telepatheic Быстрый ответ на сообщение telepatheic

7 июня 2014, 11:07:34 AM   # 11
 
 
Сообщения: 1
Цитировать по имени
цитировать ответ
по умолчанию Re: Использование Cantor Сопряжение функции объединить разные адреса

Выполните любое из альтов использовать что-то другое, чем secp256k1 эллиптических кривых и HASH160? Я не проверил их все еще. Если нет, то было бы гораздо проще просто использовать HASH160 (или Base58Check с агностиком префиксом сети) и загрузите тот же закрытый ключ в кошельке каждого Alt в. Это позволит сэкономить не только спаривание, но и генерацию ключей для нескольких ключей. Клиент должен знать, как сделать кодирование Base58Check для своей собственной сети (который он, вероятно, так или иначе), но это все.

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

Я полагаю, спаривание может еще пригодиться, если, скажем, вы только фактически поддержали "FavouriteCoin" и хотел послать что-нибудь еще на обмен авто-продажи. Очевидно, что вы не хотели бы, чтобы обмен, чтобы ваш "FavouriteCoin" ключ и вы не можете (по праву) доверять им объем входящих платежей.

Единая клиентская библиотека будет полезно здесь. Плагины для каждой монеты и кошелек HD, что это монета агностик для данного алгоритма с открытым ключом. Если достаточно гибкой объектная модель была создана для концепции Satoshi в то плагины бы все довольно просто, за исключением редких случаев, как DarkCoin. Вы могли бы иметь легкий в использовании клиент функцию для автоматической торговли монет с торгового протокола кросс-цепи TierNolan с другими, используя подобные клиенты. Затем клиент может также автоматически торговые монеты для вас, когда кто-то хочет конкретную монету вы в настоящее время нет. С бухгалтерской точки зрения, это имеет смысл, чтобы подтолкнуть преобразование валюты к стороне клиента, но, будучи в состоянии сделать это так или иначе было бы неплохо. Это идея (и код) Я работаю на недавно.
protocol6 сейчас офлайн Пожаловаться на protocol6   Ответить с цитированием Мультицитирование сообщения от protocol6 Быстрый ответ на сообщение protocol6



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW