Bitcoin Forum
March 24, 2017, 04:24:10 PM *
News: Latest stable version of Bitcoin Core: 0.14.0  [Torrent]. (New!)
 
   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 28667 times)
Ukigo
Hero Member
*****
Offline Offline

Activity: 938


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)
1490372650
Hero Member
*
Offline Offline

Posts: 1490372650

View Profile Personal Message (Offline)

Ignore
1490372650
Reply with quote  #2

1490372650
Report to moderator
Goat says: "Bitcoin is NOT Illegal in Thailand. There is no law against Bitcoin in Thailand!"
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1490372650
Hero Member
*
Offline Offline

Posts: 1490372650

View Profile Personal Message (Offline)

Ignore
1490372650
Reply with quote  #2

1490372650
Report to moderator
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: 938


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


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


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


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


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


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


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


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!