Bitcoin Forum
December 05, 2016, 08:33:47 AM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 »  All
  Print  
Author Topic: DIANNA: IANA Decentralized концепт дизайн  (Read 27874 times)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 07, 2012, 05:13:59 PM
 #341

Время в блоках, цены в коинах. Да. А как по другому?
1480926827
Hero Member
*
Offline Offline

Posts: 1480926827

View Profile Personal Message (Offline)

Ignore
1480926827
Reply with quote  #2

1480926827
Report to moderator
There are several different types of Bitcoin clients. The most secure are full nodes like Bitcoin-Qt, which will follow the rules of the network no matter what miners do. Even if every miner decided to create 1000 bitcoins per block, full nodes would stick to the rules and reject those blocks.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1480926827
Hero Member
*
Offline Offline

Posts: 1480926827

View Profile Personal Message (Offline)

Ignore
1480926827
Reply with quote  #2

1480926827
Report to moderator
1480926827
Hero Member
*
Offline Offline

Posts: 1480926827

View Profile Personal Message (Offline)

Ignore
1480926827
Reply with quote  #2

1480926827
Report to moderator
1480926827
Hero Member
*
Offline Offline

Posts: 1480926827

View Profile Personal Message (Offline)

Ignore
1480926827
Reply with quote  #2

1480926827
Report to moderator
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 07, 2012, 05:52:24 PM
 #342

Время в блоках -- это разумно
Дык я и не шучу -- не стоит беспокоится слишком много о курсе к $
через пару лет в Америке все равно дефолт будет

завтра понастраиваю свою беду
может у тебя еще какие варианты формулы цены есть ?
я бы их заодно попробовал

"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 07, 2012, 06:24:36 PM
 #343

Время в блоках -- это разумно
Дык я и не шучу -- не стоит беспокоится слишком много о курсе к $
через пару лет в Америке все равно дефолт будет

завтра понастраиваю свою беду
может у тебя еще какие варианты формулы цены есть ?
я бы их заодно попробовал


За курс точно не стоит беспокоиться, т.к. есть обратная связь. Если курс подскочил, получается подскочила и цена. Клиенты сказали "данунах" и спрос упал. Значит упало количество блоков в промежуток времени. Значит, цена будет вскоре пересчитана в меньшую сторону.

И наоборот.

Так что обратка есть, все нормально.

Вариант формулы изменения цены окончательный. Может еще просто лимиты K подправить надо будет. Сейчас 0.25 <= K <= 4

http://dianna-project.org/wiki/Domain_Transaction_Fee
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 07, 2012, 08:14:58 PM
 #344

Я подумал, а может же быть DDoS такой, что один майнер будет майнить по 1 транзакции на почти минимальной сложности биткоина и может завысить цену до потолка, не теряя ничего при этом? Может.

А мы тогда будем привязывать блок дианы не к предыдщему PARENT блоку, а непосредственно к нему.

То есть, PARENT блок Bitcoin должен быть включен в официальную цепь bitcoin. Только тогда блок DIANNA будет принят системой.

Сложность DIANNA всегда больше сложности Bitcoin. Значит любой подошедший PARENT-блок биткоин имеет немало шансов попасть в мейнстрим. Это еще больше повышает безопасность системы.

Это уравнивает шансы пуллов согласно их хешрейтам, а чтобы заспамить диану, надо чтобы сеть bitcoin принимала каждый блок пулла. А это практически невозможно.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 07, 2012, 08:57:56 PM
 #345

Описал структуру доменной транзакции http://dianna-project.org/wiki/Domain_Transaction#Syntax
Описал логику Transaction Fee http://dianna-project.org/wiki/Domain_Transaction_Fee
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 08, 2012, 12:12:57 AM
 #346

Описал возможные операции с доменом http://dianna-project.org/wiki/Domain_Transaction#Domain_operations
Переделал описание блока, описал синтаксис http://dianna-project.org/wiki/DIANNA_block#Syntax
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 08, 2012, 01:22:43 AM
 #347

Описал детали имплементации мержед майнинга в DIANNA http://dianna-project.org/wiki/Merged_Mining
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 08, 2012, 03:19:48 AM
 #348

Очередное изменение, ногами не бить Smiley Формула цены не была окончательной Smiley

Репрайсинг теперь происходит базируясь не на частоте блоков биткоин, а на пред-предыдущей частоте блоков DIANNA. То есть базируясь на частоте двух последних чекпоинтов репрайсинга. По этому цена гуляет в какую хош сторону и ищет свое значение, значение PDiff и частоту блоков, которая бы устроила данный неймспейс. Во!

http://dianna-project.org/wiki/Repricing_procedure

Если в цепи не было активности в течении последнего "bitcoin-года", цепь уничтожается.

Это реально ТруЪ получился. Каждый неймспейс будет иметь свой адекватный прайс, и свою адекватную частоту появления блоков.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 08, 2012, 05:54:36 AM
 #349

ОК, Ок  Smiley Smiley
Сделаю расчет по новому методу

У тебя в вики написано :
Code:
price - Price of Domain Transaction Fee in current block, in Bitcoins (int64), per kilobyte of value size of Domain Transaction
Huh
это в блоке цена храниться в пересчете на килобайт данных
а по формулам считается цена ЗА 1 доменную операцию, так ?

"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 08, 2012, 06:10:53 AM
 #350

Цена сдирается за полный или неполный килобайт, точнее 1000 байт. А пдифф считается по сумме таких сдираний.

Цена операции равна прайсу в простом случае, когда значение не больше килобайта.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 08, 2012, 08:33:13 AM
 #351

Ага, понятно
новый скрипт выложил там же -- называется "tru"

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

еще там деление на ноль => добавил 333 в знаменатель -- не помагает ничему

замена умножения на сложение приводит к плавному росту цены в облака
т.е. вместо NewPrice = OldPrice * K

написать : NewPrice = OldPrice + K

UPD: комбинированный вариант --> "tru2" показывает знач. лучшие результаты

"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 08, 2012, 10:51:08 AM
 #352

новая ( № 13 ) версия реального скрипта --> "real"

выдает такие результаты на 999999 блоках :
Code:
     Min price = 0.42

      Max price = 3.36

      Average price = 0.781354019746

=========================

      Minimal time between blocks = 110.0

      Max time b/b = 969.0

      Average time b/b = 679.533638067

UPD: в другом тесте с замедляющейся сетью макс. цена == 1.68
но в целом результаты очень похожи

UPD 2: если принять magic = 3311111 , то макс. цена < 1.30 в обоих тестах

"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 06:47:01 AM
 #353

А что ты вообще считаешь? Какие исходные данные? Какой первый блок? Сколько он генерируется?

Quote
замена умножения на сложение приводит к плавному росту цены в облака

Кгхм. Ну ессесно. К - это не цена, это нельзя добавлять.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 06:53:20 AM
 #354

Мои комментарии по поводу tru

Code:

def reprice(h):
    if h == 0:
        return old_price
    n_prev = h - check_prev
    n_preprev = check_prev - check_preprev
    ts_prev = times[h-1] - times[check_prev]
    ts_preprev = times[check_prev] - times[check_preprev]
    koef = (ts_preprev * n_prev)/(ts_prev * n_preprev+333) # division by zero !!!
    price = old_price * koef
    return price

Во-первых, нет никакого деления на ноль:
Code:
 if n_prev == 0 and n_preprev == 0:
     return old_price/4;
 if n_prev == 0:
     return old_price/4;
 if n_preprev == 0:
     return old_price*4;

Во вторых, s/+333//g, это оч большой костыль.

В третьих,
Code:
if price > old_price*4:
 price = old_price*4;
if price < old_price/4:
 price = old_price/4;

В четвертых, у тебя питон воспринимает koef как integer, а не float. То есть дробную часть откидывает. Я не очень дружу с питоном, но вот это исправило ситуацию

Code:
   koef = float(1)
    koef = koef * ts_preprev/ts_prev
    koef = koef * n_prev/n_preprev

В-пятых, скорость появления блока < 600 секунд маловероятна.

Code:
return int(times[b-1] + winestim + random.randrange(1, 90))

Впрочем, это не важно, можешь оставить -130 .. 130

В шестых, вот этот кусок кода надо сделать вот таким образом:
Code:
  if ((z - check_prev) % 2016 == 0):
       checks.append(z)
       print "==checkpoint by blocknum"
       new_price = reprice(z)
       check_preprev = check_prev
       check_prev = z
    else: ###### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       if ((times[z]-times[check_prev]) >= 1209600): ##### !!!!!!!!!!!!!!!1
          checks.append(z)
          print "==checkpoint by time: span=", times[z]-times[check_prev], " (tgt: 1209600)"
          new_price = reprice(z)
          check_preprev = check_prev
          check_prev = z

ИТОГО:
Code:
#!/usr/bin/env python

import time, sys, random

random.seed(time.asctime())
#print random.randint(1,77)

last = 200000

winestim = 600

check_prev = 0
check_preprev = 0

prices = []
checks = []
times = []

deltas = []


start_price = 0.02


def set_time(b):
    if b == 0:
        return 1370000000
#    print times[b-1] + winestim + random.randrange(-130, 130)
    return int(times[b-1] + winestim + random.randrange(1, 90))
#    return int(times[b-1] + winestim + 30)


def reprice(h):
    print "=====checkpoint @", h
    if h == 0:
        return old_price
    if h == 2016:
        return old_price
    n_prev = h - check_prev
    n_preprev = check_prev - check_preprev
    if n_prev ==0 and n_preprev ==0:
        return old_price/4
    if n_prev == 0:
        return old_price/4
    if n_preprev == 0:
        return old_price * 4;
    ts_prev = times[h-1] - times[check_prev]
    ts_preprev = times[check_prev] - times[check_preprev]
    print "check_prev=",check_prev," check_preprev=",check_preprev
    print "nprev=", n_prev, " npprev=",n_preprev
    print "tsprev=", ts_prev, " tspprev=",ts_preprev
    koef = float(1)
    koef = koef * ts_preprev/ts_prev
    koef = koef * n_prev/n_preprev
    print "k=",koef
    price = old_price * koef
    if price > old_price*4:
        price = old_price*4
    if price < old_price/4:
        price = old_price/4
    print "old=", old_price," new=", price
    return price


old_price = start_price

for x in range(0, last):
    times.append(0)

for z in range(0, last):
    times[z] = set_time(z)
#    if z !=0:
#       print "Block #",z," time=", times[z], "diff=", times[z]-times[z-1]
    if z < 2016:
        continue

    if ((z - check_prev) % 2016 == 0):
       checks.append(z)
       print "==checkpoint by blocknum"
       new_price = reprice(z)
       check_preprev = check_prev
       check_prev = z
    else:
       if ((times[z]-times[check_prev]) >= 1209600):
          checks.append(z)
          print "==checkpoint by time: span=", times[z]-times[check_prev], " (tgt: 1209600)"
          new_price = reprice(z)
          check_preprev = check_prev
          check_prev = z
    if new_price != old_price:
        old_price = new_price
        print "====== repricing ======="
        print "price =", old_price, "at block #", z
        prices.append(old_price)
print
print "min & max prices were =", min(prices), max(prices)
print
print "checkpoints were : "
print
print checks
print


РЕЗУЛЬТАТ при равномерном распределении спроса (random) и стартовой цене 0.02, за 200к блоков
Code:

min & max prices were = 0.0200060868679 0.0211689919176

checkpoints were :

[2016, 3892, 5768, 7644, 9521, 11396, 13272, 15147, 17024, 18901, 20774, 22648, 24526, 26401, 28277, 30151, 32030, 33905, 35779, 37655, 39530, 41406, 43283, 45157, 47033, 48907, 50783, 52659, 54534, 56410, 58289, 60167, 62043, 63918, 65792, 67671, 69543, 71419, 73297, 75173, 77051, 78927, 80804, 82682, 84558, 86435, 88311, 90189, 92064, 93938, 95815, 97689, 99567, 101444, 103317, 105193, 107067, 108946, 110822, 112700, 114577, 116455, 118330, 120207, 122080, 123958, 125833, 127709, 129581, 131458, 133332, 135209, 137086, 138963, 140838, 142715, 144592, 146466, 148345, 150225, 152100, 153975, 155850, 157726, 159601, 161479, 163356, 165233, 167109, 168985, 170861, 172738, 174616, 176490, 178367, 180245, 182120, 183996, 185869, 187739, 189618, 191496, 193370, 195244, 197122, 198997]

Цена гуляла в течении 4 лет аж в пределах 10%. Но это без обратки. "Общественность" в виде функции random не "возмущалась" по поводу скачка цены, понижая спрос Smiley И вообще цена random() устраивала похоже Smiley По этому наблюдался стабильный рост.

Полный лог http://pastebin.com/2TvsE3pJ
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 08:40:19 AM
 #355

Рост цены в 10% за 4 года при псевдо-равномерном распределении я связываю с тем, что где то допущена ошибка в расчете блок-фрейма. Где то откуда то надо вычесть единицу в общем в индексе =)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 08:50:12 AM
 #356

Во. Пофиксил.

Code:

--- diatest.old 2012-03-09 10:12:03.000000000 +0200
+++ diatest     2012-03-09 10:56:24.178976763 +0200
@@ -9,8 +9,8 @@
 
 winestim = 600
 
-check_prev = 0
-check_preprev = 0
+check_prev = 1
+check_preprev = 1
 
 prices = []
 checks = []
@@ -32,12 +32,12 @@
 
 def reprice(h):
     print "=====checkpoint @", h
-    if h == 0:
+    if h <= 1:
         return old_price
-    if h == 2016:
+    if h <= 2017:
        return old_price
-    n_prev = h - check_prev
-    n_preprev = check_prev - check_preprev
+    n_prev = h - check_prev - 1
+    n_preprev = check_prev - check_preprev - 1
     if n_prev ==0 and n_preprev ==0:
        return old_price/4
     if n_prev == 0:
@@ -45,7 +45,7 @@
     if n_preprev == 0:
        return old_price * 4;
     ts_prev = times[h-1] - times[check_prev]
-    ts_preprev = times[check_prev] - times[check_preprev]
+    ts_preprev = times[check_prev-1] - times[check_preprev]
     print "check_prev=",check_prev," check_preprev=",check_preprev
     print "nprev=", n_prev, " npprev=",n_preprev
     print "tsprev=", ts_prev, " tspprev=",ts_preprev
@@ -67,11 +67,11 @@
 for x in range(0, last):
     times.append(0)
 
-for z in range(0, last):
+for z in range(1, last):
     times[z] = set_time(z)
 #    if z !=0:
 #      print "Block #",z," time=", times[z], "diff=", times[z]-times[z-1]
-    if z < 2016:
+    if z < 2016 or (times[z] - times[1]) < 1209600:
         continue
 
     if ((z - check_prev) % 2016 == 0):

Результат: при равномерном распределении спроса (random) и стартовой цене 0.02, за 200к блоков
Code:
min & max prices were = 0.0199220322999 0.0200676816951

checkpoints were :

[2016, 3907, 5800, 7692, 9586, 11486, 13373, 15262, 17154, 19048, 20941, 22834, 24727, 26623, 28515, 30409, 32301, 34193, 36088, 37980, 39867, 41759, 43651, 45539, 47432, 49321, 51212, 53102, 54992, 56885, 58777, 60667, 62562, 64455, 66347, 68239, 70131, 72025, 73913, 75804, 77695, 79586, 81478, 83367, 85260, 87153, 89043, 90934, 92824, 94714, 96606, 98494, 100386, 102276, 104167, 106059, 107950, 109842, 111737, 113630, 115522, 117414, 119306, 121200, 123090, 124985, 126876, 128766, 130657, 132548, 134438, 136333, 138226, 140121, 142012, 143904, 145797, 147690, 149583, 151476, 153369, 155262, 157153, 159046, 160937, 162828, 164721, 166609, 168503, 170396, 172287, 174176, 176067, 177960, 179855, 181745, 183635, 185525, 187419, 189312, 191200, 193091, 194982, 196875, 198770]

http://pastebin.com/8UDWrXfp

0.78% изменение за 4 года. Вполне себе ничего для рэнда. Удивительная стабильность в наше то время =)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 09:07:44 AM
 #357

Ок. Спасибо за комментарии  и исправление моих ошибок Smiley
Щас переделаю на более жесткие условия сети
намоделирую перемежающиеся участки ускорения и замедления

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

Люблю допросы с пристрастием  Smiley

Первый блок -- время я беру от балды а что еще с ним не так ?

Моя идея была ипытать формулу цены на более жестких
чем нормальные условиях сети

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

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

Какой ты планируешь сделать TTL домена ?
Хочу подставить в скрипт более менее реальные цены
а без TTL -- трудно определиться с выбором


"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 09:16:08 AM
 #358

Пусть будет 42000 блоков.
Примерно год при нормальной активности.

Но у каждого неймспейса будет своя оптимальная частота блоков. То есть у одних это будет год, у других 10 лет... Непорядок =) Говорю ж, ттл надо в биткоин блоках считать. Раз уж у нас есть маппинг соответствия одних блоков другим...

Пусть тогда будет в биткоин блоках, 52560 (6x24x365).
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 09:25:45 AM
 #359

Так ты хочешь для ВСЕХ неймспейсов сделать одинаковый TTL или для каждого свой ?

Но для тестов мы пока используем как бы один неймспейс
То есть TTL примерно один год в обычном выражении, так ?
Я то хочу взять цену исходя из доходов в $  Grin

И сделать прогоны с разной нач ценой , скажем 5$/год , 10$/год и 15$/год

"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 09:27:54 AM
 #360

Теперь смотри. Иммитируем спонтанный фазовый переход системы.

Допустим в районе блока 15000 с неймспейсом что то произошло и спрос резко упал, то есть блоки стали выходить стабильно реже. Как отреагирует система?

Иммитация ситуации. После блока 15000 замедляем выход блоков.
Code:
def set_time(b):
    if b <= 1:
        return 1370000000
    if b < 15000:
        return int(times[b-1] + winestim + random.randrange(-10, 90))
    else:
        return int(times[b-1] + winestim + random.randrange(200, 1000))

Результат:
Code:
чекпоинт K новая_цена
13372 0.99902716676 0.0199641703093
15140 0.935328976233 0.0186730669768
16153 0.572426654024 0.0106889612499
17155 0.989222036231 0.0105737560128
18158 1.00095017004 0.010583802879


min & max prices were = 0.0105674481166 0.0199923549873
Спустя 1 чекпоинт цена адекватно просела и больше особо не изменялась! Блоки стали выходить гораздо реже. То что надо.

http://pastebin.com/0091kP6R
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!