Bitcoin Forum
June 24, 2017, 07:14:46 PM *
News: Latest stable version of Bitcoin Core: 0.14.2  [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 29345 times)
pent
Hero Member
*****
Offline Offline

Activity: 490



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

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

Posts: 1498331686

View Profile Personal Message (Offline)

Ignore
1498331686
Reply with quote  #2

1498331686
Report to moderator
POLONIEX TRADING SIGNALS
+50% Profit and more via TELEGRAM
ALTCOINTRADER.CO
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1498331686
Hero Member
*
Offline Offline

Posts: 1498331686

View Profile Personal Message (Offline)

Ignore
1498331686
Reply with quote  #2

1498331686
Report to moderator
1498331686
Hero Member
*
Offline Offline

Posts: 1498331686

View Profile Personal Message (Offline)

Ignore
1498331686
Reply with quote  #2

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

Activity: 938


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: 938


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: 938


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: 938


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: 938


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: 938


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!