Show Posts
|
Pages: [1]
|
1
|
Local / Разное / Мысленный экономический эксперимент
|
on: August 19, 2019, 09:29:52 AM
|
Допустим, в Вашей стране государство решило заботу об эмиссии денег (печать новых денег) и инфляцию (обесценивание денег) переложить на совесть своих граждан.
В следствии этого, любой покупатель при оплате товара или услуг может до 25% от цены оплатить за счет государства. Будем считать что в Вашей стране повсеместно используют безнал соответственно эмиссия происходит мгновенно.
Следует понимать, что если у Вас в кармане 200 монет при стоимости товара в 100 монет есть две крайние позиции. 1. Вы платите 100 монет, и это означает что остальные 100 монет оставшиеся у Вас не потеряют ценность. 2. Вы платите 75 монет а 25 платите за счет эмиссии и соответственно оставшиеся 100 монет теряют свою ценность.
Я бы хотел узнать Ваш выбор, как бы поступили Вы. Какой процент вы согласились бы оплачивать за товар? 100%-75%?
|
|
|
3
|
Local / Разное / Я купил машину!
|
on: January 27, 2014, 07:27:22 AM
|
В май 2013 года когда жене дали декретные отпускные, часть была пущена на будущее пополнение, но осталось еще 50000 руб. Что-бы не потратить положили в биткоин. В январе 2014 года, на выведенные средства был куплен Renault Grand Scenic 2  фото с интернетов Если история интересна журналистам, могу предоставить пруфы.
|
|
|
4
|
Local / Идеи / Proof-of-work
|
on: January 14, 2014, 02:12:59 PM
|
передача хранение выполнение
Мечтаю о такой сети где эммисия бы происходила в результате выше пречисленных событий.
* Сам очень часто нахожусь за натом и передать файл от машины к машине до сих пор пользуюсь сторонними сервисами. Будет особенно выгодно тем кто имеет белый ip. Хотя и с серыми адресами пользователи могут поучавствовать в посторении тунеля. Учавствуешь в передаче - получаешь, пользуешься - тратишь.
* На кропоротивном винте обычно пол террабайта свободного пространства, вот бы сдать его в аренду. Условия, хранишь получаешь (очки/рейтинг) отправляешь на хранение - тратишь. Передавать данные до хранителя и найти его можно через сервис передачи.
* cpu/gpu простаивает? Ставь виртуальную машину, определяй лимиты - зарабатывай. Необходимо что-то вычислить? Пишешь код, прикладываешь рейтинг, получаешь результат.
В качестве бреда.
|
|
|
7
|
Local / Русский (Russian) / Борьба с воровством.
|
on: September 28, 2012, 09:04:41 PM
|
Прошу учесть что все события и имена вымышленные, любой совпадение считать случайным. Действущие лица: потерпевший судья взломщик (][)
сообщество разделенное на: группа поддержки (good) пассивная группа
Представим что у нас произошла кража, и у потерпевшего взломщик украл средства переведя их на счет addr][ После объявления о пропаже не сложно отследить путь куда ушли средства, важно чтобы злоумышленник не успел их потратить. Потерпевший сообщает о краже, предаставив сообществу privkey в качестве доказательства что счет действительно его. Тогда в дело вступает судья, он исследует ситуацию и честность потерпевшего. Если ситуация не вызывает сомнений судья выносит решение что средства со счета addr][ будут приняты только если будут переведенны на запасной счет потерпевшего, решение подписывается ключом судьи и распрастраняется в сети среди участников (good), чем больше участников (а это выгодно быть честным, ведь завтра могут украсть у тебя) тем больше вероятность что сеть отвергнет транзакцию со счета addr][. Вполне вероятно что взломщик не станет возвращать (из вредности) но воспользоваться средствами будет прблемой. Отвергать так же можно и блоки с tx addr][ препятствую его распрастранению, что делает не выгодным пулу обрабатывать такие tx.
К сожелению в международном не силен, поэтому не в курсе была ли такая идея уже на форуме в англоязычной ветке.
|
|
|
8
|
Local / Кодеры / XC6SLX150
|
on: June 08, 2012, 11:56:39 AM
|
Заказ чипа у русских поставщиков череват большими расходами. В то время как за бугром его можно достать за 158,75$ + расход на доставку. Есть ли у кого опыт заказа с avnet.com digikey.com etc как частного лица?
|
|
|
11
|
Local / Кодеры / SHA256 на лампах
|
on: September 22, 2011, 08:19:06 AM
|
Под майн задействовано не мало реализаций, ASM, OpenCL, JS, Python, C и используется на различном железе CPU GPU ARM FPGA. Быть может где нибудь есть маньяки которые пытались сделать алгоритм на высокочастотных транзисторах? Гугл мне ничего не дал.
|
|
|
12
|
Local / Кодеры / Ограничения сети
|
on: September 16, 2011, 10:10:39 AM
|
на 09.2011 на основании: версии блока 01 версии транзакции 01 ---- ограничение по времени unix time максимальное количество блоков в сети 4294967295 максимально количество вводов/выводов в транзакции 255 максимальная сумма перевода 184467440737.09552 (больше чем предел генерации) максимальное количество транзакций в блоке ...
|
|
|
13
|
Local / Кодеры / [SOLVED] signature tx
|
on: July 07, 2011, 09:31:59 AM
|
========================================= Cпасибо Ukigo, тема закрыта, для интересующихся ответы там. http://forum.bitcoin.org/index.php?topic=27179.0========================================= Уважаемые, быть может кто подкован лучше в тех части, нужна помощь. смотрим tx http://blockexplorer.com/rawtx/fa35e2379cb5fbee7dbd64100251ed78182d0d7e74fbbc5213a097bfce0e027aсобственно scriptSig signature: 3045022100df6bff4908b5c039a43e1a080ddc28fd771909b12106a2403e2157756eaa334602203 6e19130d97f607b1c8d5121450fbdbc1a8e752c5e42794403c26a19bb206a8c01 pubkey: 0440f9f833a25c725402e242965410b5bb992dc4fea1328681f0a74571c3104e360882ea6ae14b6 b1316e71e76cc51867cba20cafabd349753058b8c4677be50ca Как находиться хеш который необходимо подписать? Подозреваю он связан с [prev_out hash] 9bf8e6c6f2cb473df11a41bc79a549b5c116d1a2fce07bae9d48df532ffc9750 и [prev_out n] 1
|
|
|
14
|
Local / Кодеры / [SOLVED] python secp256k1
|
on: June 27, 2011, 03:42:02 PM
|
#! /usr/bin/env python
import random
class CurveFp( object ): def __init__( self, p, a, b ): self.__p = p self.__a = a self.__b = b
def p( self ): return self.__p
def a( self ): return self.__a
def b( self ): return self.__b
def contains_point( self, x, y ): return ( y * y - ( x * x * x + self.__a * x + self.__b ) ) % self.__p == 0
class Point( object ): def __init__( self, curve, x, y, order = None ): self.__curve = curve self.__x = x self.__y = y self.__order = order if self.__curve: assert self.__curve.contains_point( x, y ) if order: assert self * order == INFINITY def __add__( self, other ): if other == INFINITY: return self if self == INFINITY: return other assert self.__curve == other.__curve if self.__x == other.__x: if ( self.__y + other.__y ) % self.__curve.p() == 0: return INFINITY else: return self.double()
p = self.__curve.p() l = ( ( other.__y - self.__y ) * \ inverse_mod( other.__x - self.__x, p ) ) % p x3 = ( l * l - self.__x - other.__x ) % p y3 = ( l * ( self.__x - x3 ) - self.__y ) % p return Point( self.__curve, x3, y3 )
def __mul__( self, other ): def leftmost_bit( x ): assert x > 0 result = 1L while result <= x: result = 2 * result return result / 2
e = other if self.__order: e = e % self.__order if e == 0: return INFINITY if self == INFINITY: return INFINITY assert e > 0 e3 = 3 * e negative_self = Point( self.__curve, self.__x, -self.__y, self.__order ) i = leftmost_bit( e3 ) / 2 result = self while i > 1: result = result.double() if ( e3 & i ) != 0 and ( e & i ) == 0: result = result + self if ( e3 & i ) == 0 and ( e & i ) != 0: result = result + negative_self i = i / 2 return result
def __rmul__( self, other ): return self * other
def __str__( self ): if self == INFINITY: return "infinity" return "(%d,%d)" % ( self.__x, self.__y )
def double( self ): if self == INFINITY: return INFINITY
p = self.__curve.p() a = self.__curve.a() l = ( ( 3 * self.__x * self.__x + a ) * \ inverse_mod( 2 * self.__y, p ) ) % p x3 = ( l * l - 2 * self.__x ) % p y3 = ( l * ( self.__x - x3 ) - self.__y ) % p return Point( self.__curve, x3, y3 )
def x( self ): return self.__x
def y( self ): return self.__y
def curve( self ): return self.__curve def order( self ): return self.__order INFINITY = Point( None, None, None )
def inverse_mod( a, m ): if a < 0 or m <= a: a = a % m c, d = a, m uc, vc, ud, vd = 1, 0, 0, 1 while c != 0: q, c, d = divmod( d, c ) + ( c, ) uc, vc, ud, vd = ud - q*uc, vd - q*vc, uc, vc assert d == 1 if ud > 0: return ud else: return ud + m
# secp256k1 _p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2FL _r = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141L _b = 0x0000000000000000000000000000000000000000000000000000000000000007L _a = 0x0000000000000000000000000000000000000000000000000000000000000000L _Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798L _Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8L
class Signature( object ): def __init__( self, r, s ): self.r = r self.s = s class Public_key( object ): def __init__( self, generator, point ): self.curve = generator.curve() self.generator = generator self.point = point n = generator.order() if not n: raise RuntimeError, "Generator point must have order." if not n * point == INFINITY: raise RuntimeError, "Generator point order is bad." if point.x() < 0 or n <= point.x() or point.y() < 0 or n <= point.y(): raise RuntimeError, "Generator point has x or y out of range."
def verifies( self, hash, signature ): G = self.generator n = G.order() r = signature.r s = signature.s if r < 1 or r > n-1: return False if s < 1 or s > n-1: return False c = inverse_mod( s, n ) u1 = ( hash * c ) % n u2 = ( r * c ) % n xy = u1 * G + u2 * self.point v = xy.x() % n return v == r
class Private_key( object ): def __init__( self, public_key, secret_multiplier ): self.public_key = public_key self.secret_multiplier = secret_multiplier
def der( self ): hex_der_key = '06052b8104000a30740201010420' + \ '%064x' % self.secret_multiplier + \ 'a00706052b8104000aa14403420004' + \ '%064x' % self.public_key.point.x() + \ '%064x' % self.public_key.point.y() return hex_der_key.decode('hex')
def sign( self, hash, random_k ): G = self.public_key.generator n = G.order() k = random_k % n p1 = k * G r = p1.x() if r == 0: raise RuntimeError, "amazingly unlucky random number r" s = ( inverse_mod( k, n ) * \ ( hash + ( self.secret_multiplier * r ) % n ) ) % n if s == 0: raise RuntimeError, "amazingly unlucky random number s" return Signature( r, s )
curve_256 = CurveFp( _p, _a, _b ) generator_256 = Point( curve_256, _Gx, _Gy, _r ) g = generator_256
if __name__ == "__main__": print '=======================================================================' ### generate privkey randrange = random.SystemRandom().randrange n = g.order() secret = randrange( 1, n ) ### set privkey #secret = 0xC85AFBACCF3E1EE40BDCD721A9AD1341344775D51840EFC0511E0182AE92F78EL ### print privkey print 'secret', hex(secret)
### generate pubkey pubkey = Public_key( g, g * secret ) ### set pubkey #pubkey = Public_key(g, Point( curve_256, 0x40f9f833a25c725402e242965410b5bb992dc4fea1328681f0a74571c3104e36L, # 0x0882ea6ae14b6b1316e71e76cc51867cba20cafabd349753058b8c4677be50caL)) ### print pubkey print 'pubkey', hex(pubkey.point.x()), hex(pubkey.point.y())
privkey = Private_key( pubkey, secret ) # set hash #hash = randrange( 1, n ) hash = 0x0000000000000000000000000000000000000000000000000000000000000000L
### make signature on hash signature = privkey.sign( hash, randrange( 1, n ) ) ### set signature #signature = Signature(0x0000000000000000000000000000000000000000000000000000000000000000L, # 0x0000000000000000000000000000000000000000000000000000000000000000L) ### print signature print 'signature', hex(signature.r), hex(signature.s)
#print '=======================================================================' print 'verifies', pubkey.verifies( hash, signature ) print '======================================================================='
Умеет, генерировать privkey, делать из него pubkey, подписывать хеш проверять подпись. Вопрос знатокам, у меня сигнатура получается 64 bytes 2x32b. Даже если добавить 0x30 спереди выходит 65b. В то время как http://blockexplorer.com/rawtx/a2844948747244e5582b385e86de85b386443353cfe6803091ac50257baf7ee730440220681233302fad9cb4f9ea61653d19cdea635ae59270ebbb837b9287f75ae90dae02203bf9d2d0b52cd1734ccaf7bebc831c128737fb1309f83b79cab500dc274b532201
71 bytes ЧЯДНТ  зы. спасибо Sipa, за то что терпел мое каверканье международного, мне стыдно  ззы. код народное достояние.
|
|
|
15
|
Local / Oбcyждeниe Bitcoin / Merkle Tree
|
on: June 19, 2011, 12:08:12 PM
|
Эпизодически натыкаюсь на сообщения в dev ветке об использовании Merkle Tree, Merkle Hash в цепочке. Могут ли уважаемые знатоки, прояснить ситуацию, в каком качестве и где используется Merkle?
|
|
|
16
|
Local / Идеи / Идея: новая модель бд
|
on: April 30, 2011, 09:18:59 AM
|
Блоки, основа сети, бд о транзакциях. Не все в состоянии позволить закачать себе более 100-200М даже единовременно. Есть необходимость в нескольких общедоступных хостах на которые ляжет задача выдача информации о транзакциях, т.е. содержании бд с полными транзакциями. Т.е. транзакциями в которых еще есть средства (пустые транзакции, т.е. из которых средства выведены хранить смысла нет) Получается на хосте две б.д. полная (распухая со временем), и б.д. с полными транзакциями(в которых есть средства) к которой клиенты могут делать обращения, что бы узнать о новых переводах на свой счет. Опрос 3-5 хостов дает право уверенно судить об отсутствии подлога в выданной информации. Чем это отличается от ситуации когда твой кошелк находиться на сайте? пример https://www.instawallet.orgВ описанном мною случае, сохраняется право владения кошельком за собой, а не разделения этого права с сайтом предлагающем услугу хранения счета.
|
|
|
|