Bitcoin Forum
December 10, 2016, 07:22:30 AM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   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 27923 times)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 08:51:51 AM
 #321

Ок. Попробую  собрать все это вместе и потестить  Smiley

UPD: Чего я не могу понять -- блоки дианы расходятся с биткойновыми по частоте
они идут чуть медленнее -- как ты предлагаешь определять однозначное соответствие
 блок дианы-блок биткойна по которому считать таргет и сумму сборов за доменные операции ?

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

Posts: 1481354550

View Profile Personal Message (Offline)

Ignore
1481354550
Reply with quote  #2

1481354550
Report to moderator
1481354550
Hero Member
*
Offline Offline

Posts: 1481354550

View Profile Personal Message (Offline)

Ignore
1481354550
Reply with quote  #2

1481354550
Report to moderator
1481354550
Hero Member
*
Offline Offline

Posts: 1481354550

View Profile Personal Message (Offline)

Ignore
1481354550
Reply with quote  #2

1481354550
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 06, 2012, 09:55:39 AM
 #322

Ага. Получается чето типа

diana1:bitcoin1
diana2:bitcoin3
diana3:bitcoin5

Если проплата была в bitcoin2, то ищем ближайший меньший блок дианы, то есть diana1.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 06, 2012, 10:03:20 AM
 #323

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

Ну и там будет интегральный расчет, без всяких double'ов. Без бутылки не разберешься.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 10:16:52 AM
 #324

Да уж  -- чем дальше в лес - тем толще партизаны Smiley

"...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 06, 2012, 10:49:37 AM
 #325

Чето уж сильно жеские коэфициенты получаются. Надо брать более либеральную пологую функцию. Не разницы а отношения

K=1/(F/6 - 1)

Получается на промежутке от 9 до 12,5 блоков в час цена вальсирует в пределах 20%.

В общем, Ukigo, пересчитай плз обе

Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 10:57:52 AM
 #326

Ок. Когда пойму как лучше написать всю эту беду Smiley

"...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 06, 2012, 11:18:03 AM
 #327

Для начала можно просчитать динамику развития неймспейса .bit Данные по нему в динамике имеются в блокчейне. Дамп блоков неймкоин доступен через RPC.

Нужны дампы активности доменных операций в формате

блок:таймштамп:кол-во операций с доменами
блок:таймштамп:кол-во операций с доменами
блок:таймштамп:кол-во операций с доменами

кол-во операций это name_firstupdate + name_update
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 11:58:29 AM
 #328

Я пока думаю как переделать свою тестчейн на 2 связанные цепочки
 с наменьшими усилиями.

Мой псевдобиткойн очень быстро проходит 776000 блоков
я моделирую изменения хешир. мощности в сети и они
меняют трудность в пределах от 1 до 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 06, 2012, 12:02:26 PM
 #329

Так, я короче гоню. Взял частоту вместо отношения. Получилось все наоборот Smiley

Счас перепишу формулы.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 06, 2012, 01:48:30 PM
 #330

А вот теперь правильно, в интегрально-дружелюбном исчислении.

Возьмем время, за которое биткоин вычисляет 2016 блоков как tsBase
Возьмем время, за которое дианна вычисляет 2016 блоков как ts

Тогда коэффициент K будет выражен как

K=tsBase/(ts-tsBase)

График функции K(ts). K становится меньше с возрастанием ts и не позволяет ts достигнуть tsBase (1.21E6)



ts так же можно выразить через частоту блоков в час, если принять биткоиновские данные константами:

F=2016*3600/ts

Это облегчает восприятие предыдущего графика функции. Тогда зависимость K от частоты выхода блоков дианы будет такая:

Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 02:13:27 PM
 #331

это даже проще для меня  Smiley

А как тогда выразить среднее ожидаемое время нахождения блока дианы в секундах ?

среднее время нахождения блока биткойна я считаю у себя так :
  time = difficulty * 2**32 / hashrate*10**9
то есть трудность и хэшрейт относятся к предыдущему блоку, а время исп. уже для текущего


"...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 06, 2012, 02:21:06 PM
 #332

Тогда значит примерно алгоритм nextFeeRequired на языке Ы (деления на ноль не проверял! Smiley )

Для простоты понимания эту процедуру в диане я назвал тоже ретаргетом. Хотя это репрайсинг =)
Code:
DChain=get_dianna_chain_index(); // Цепь дианы
BChain=get_bitcoin_chain_index(); // Цепь биткоин

tsTgt=60*60*24*14; // Шаг ретаргета биткоин и дианы в секундах (биткоин не ретаргетится по этому значению)
nB=2016; // Шаг ретаргета биткоин и дианы в блоках
lastRetarget=query_dianna_db("last_retarget_height"); // номер блока дианы с последним ретаргетом

Bfirst = BChain[BBestHeight - nB]; // блок последнего ретаргета биткоин
Blast = BChain[BBestHeight]; // последний блок биткоин
Dfirst = DChain[lastRetarget]; // блок последнего ретаргета дианы
Dlast = DChain[DBestHeight]; // последний блок дианы

tsB = Blast->ts - Bfirst->ts; // Сколько времени прошло с предыдущего ретаргета Bitcoin
tsD = Dlast->ts - Dfirst->ts; // Сколько времени прошло с предыдущего ретаргета DIANNA
retarget=0;
if (Dlast->height % nB == 0) retarget = 1; // ретаргет через nB блоков!
if (tsD >= tsTgt) retarget = 1; // ИЛИ ретаргет через tsTgt секунд

if (retarget == 1) :
  // Приводим к общему знаменателю
  tsD *= nB;
  tsD /= Dlast->height - Dfirst->height; // int!!!
  price = Dlast->price * tsTgt; // int64!!!!
  price /= tsD - tsTgt; // int64!!!!
  // Защита от дурака
  if (price > Dlast->price*4) price = Dlast->price * 4;
  if (price < Dlast->price/4) price = Dlast->price / 4;
  query_dianna_db("set_block_retaget_marker",BBestHeight + 1, true);
  return price;
endif

return Dlast->price;
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 06, 2012, 02:26:52 PM
 #333

это даже проще для меня  Smiley

А как тогда выразить среднее ожидаемое время нахождения блока дианы в секундах ?

среднее время нахождения блока биткойна я считаю у себя так :
  time = difficulty * 2**32 / hashrate*10**9
то есть трудность и хэшрейт относятся к предыдущему блоку, а время исп. уже для текущего

Представь что сложность берется из текущего биткоин блока. Это почти одно и тоже.

Но диана добавляет к этой сложности еще PDiff %. То есть если Difficulty = 10**6, а PDiff насчитали на 0.1, то блок дианы считается по сложности (10**6 + 10**5), т.е. DiannaDifficulty=Difficulty*(1+Pdiff)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 02:36:20 PM
 #334

Ага, я могу написать похожую функцию как для биткойновой цепочки
и заменить в ней трудность биткойна на трудность дианы по твоим формулам
но мощность то в сети дианы =/= мощности в сети биткойна,
не пойму что с этим делать

"...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 06, 2012, 02:44:01 PM
 #335

Пару слов о сложности. Difficulty, это просто такая мера величины для прикида на глаз, т.к. это дабл. А дабл значение не может быть точно выражено в процессорном понимании.

Биткоин оперирует понятием таргет. Это uint256.

Для простоты понимания таргета был введен difficulty=maxtarget/target

Но для тестовых расчетов всяких там ожиданий difficulty годится. Не годится в боевом коде.

Считай мощности биткоин и дианы равны. Как будто оба обладают одинаковыми мощностями. Мержед это предоставляет.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 06, 2012, 02:54:02 PM
 #336

Ок. упростим задачу  Smiley

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

Прорвусь через вторую цепочку -- выложу полноценный вариант на bitbucket
-- сможешь сам его помучить

"...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 06, 2012, 02:55:38 PM
 #337

Ну коли охота трахаться с uint256, то валяй =)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 07, 2012, 08:48:01 AM
 #338

@pent
Выложил монстра на https://bitbucket.org/ukigo/diatest

чего-то я там таки перемудрил - погляди пож. свежим глазом
по-моему мой ретаргетинг -- не совсем сатошин алгоритм
хоть я сперва и сделал кальку с его клиента и libbitcoin

в сатошином клиенте так ( main.cpp GetNextWorkRequired(...) ):
Code:
// Go back by what we want to be 14 days worth of blocks
    const CBlockIndex* pindexFirst = pindexLast;
    for (int i = 0; pindexFirst && i < nInterval-1; i++)
        pindexFirst = pindexFirst->pprev;
    assert(pindexFirst);

    // Limit adjustment step
    int64 nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime();
    printf("  nActualTimespan = %"PRI64d"  before bounds\n", nActualTimespan);

я заменил этот кусок у себя на :

Code:
def bit_actual_ts(d):

    if d < 2014:
        return 1209600
    btimes = []
    for m in range(d-2015, d):
        btimes.append(bittimes[m])
#    print "bit_ac_ts =", max(btimes)-min(btimes)
    return int(max(btimes)-min(btimes))
Но это по-моему не совсем одно и тоже ((

моя псевдо-диана -- отдельная песня -- там то же что-то не того

там 2 скрипта : "dia" <-- полный прогон обоих цепочек
в 2 прохода сначала биткойн потом диана ( примерно так )
"bit" <-- точно такой же только 2-й проход отключен
и дианы соотв. нету -- удобно для настройки битчейна.

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

тем не менее оно чего-то похожее на правду выдает )

"...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, 03:44:34 PM
 #339

Мне кажется ты зря мучаешься с эмуляцией биткоин цепи. В биткоин итак все понятно. Bounty=50, sum(txfee)-->0

Можно просто взять данные развития неймкоин с апреля 2011 по сей день.

далее из неймкоин вытянуть такую таблицу:

block_id:block_timestamp:num_ops
block_id:block_timestamp:num_ops
....
block_id:block_timestamp:num_ops

Далее, создаем 1 блок дианы (считаем 1 неймспейс) датой 1 блока неймкоин с одной транзакцией и стартовой ценой, скажем, 0.01 BTC.

Потом, исходя из таблицы неймкоин, создаем другие блоки. Их expectation time будет на PDiff % больше, чем у биткоина, то есть в среднем 10+10*PDiff минут. Создаем их так, чтобы виртуальным кастомерам не приходилось ждать более суток апдейта. Делаем репрайсинг и т.п.

Хотя мне чето кажется все равно это не реально будет. У неймкоин домены были сначала дорогие, счас вообще халява, спама полно. К тому же оборот по диане начнет влиять на курс USD/BTC, а этого мы не можем рассчитать.

Например, если биткоин вдруг взлетит до 100 USD, а цена дианы была 0.5 BTC, то никто не захочет за 50 баксов апдейтить домен. Спрос упадет, за ним и цена дианы до приемлимого уровня.

В общем тут есть взаимные влияния, которые трудно рассчитать.

Надо если рассчитывать, то предполагать что курс USD/BTC фиксированный. Что биткоин блоки выходят каждые 10 минут на одинаковой сложности. Тогда расчет какой то вменяемый получится. Обратные связи в системе скомпенсируют эти допущения в реале.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 07, 2012, 04:37:41 PM
 #340

Это конечно не настоящие системы -- а только предварительный тест

настоящая проверка будет когда реальная диана будет взаимодействовать
с реальным биткойном
мне моя приблуда нравиться тем что в ней можно загнать
трудность биткойна высоко с прицелом
на ASIC/FPGA -- в реальной сети такие тесты сейчас невозможны

а так можно подобрать формулу цены на будущее -- с заделом

у меня пока цена дианы растет ОЧЕНЬ сильно и не желает балансировать обратно
конечно у меня там что то криво -- посмотрим что я смогу сделать

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

и пора начинать считать цены в биткойнах а время в блоках -- леший с ними с долларами  Smiley




"...Enemies are everywhere ! Angka is all rage ! Be a good soldiers, blow everything... " <-- Pol Pot (C)
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!