Bitcoin Forum
December 10, 2016, 08:40:38 PM *
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 27933 times)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 09:33:39 AM
 #361

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

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

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

Для всех одинаковый.

Это возможно посчитать только учитывая все обратки:
- воздействие спроса на price
- воздействие оборота по DIANNA на курс USD/BTC

то есть только на практике

Дело здесь не в цене, а в обратных связях. Если они есть и правильные, цена найдет свое значение согласно спросу. Система должна правильно реагировать на изменения в активности.
1481402438
Hero Member
*
Offline Offline

Posts: 1481402438

View Profile Personal Message (Offline)

Ignore
1481402438
Reply with quote  #2

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

Activity: 924


View Profile
March 09, 2012, 09:41:59 AM
 #362

Ок.
Я думаю ты прав -- но еще немного помучаю скрипты на всякий случай Grin
и выложу результаты в пастебин
--------------------------------------
про другое -- у тебя будут домены только латиницей или ты планируешь
 поддерживать и что-то типа IDN
http://ru.wikipedia.org/wiki/IDN
ну может как-то по-другому это сделать
просто чтобы домены были возможны на почти любом языке


"...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:48:43 AM
 #363

Думаю сделать domain просто набором байт до 64 байт. Система интерпретирует при внутреннем поиске этот набор не как строку, а как просто байты.

Что в эти байты пихать - юникод или ASCII - решать имплементаторам.

Если это доменное имя mydomain.dia.i2p, то domain здесь будет "mydomain". Регистратор должен положить этот домен в lowercase в базу. И искать домен нужно, предварительно преобразовав  строку поиска в lowercase.

Ну это в общем выбор за неймспейсами и их днс клиентами.
rPman
Legendary
*
Offline Offline

Activity: 1078


View Profile WWW
March 09, 2012, 10:04:52 AM
 #364

О формате представления данных в базе 'имя -> информация о домене' есть какие-то наработки? может что готовое?

Для обычных доменов как минимум нужна поддержка метасимвола * (*.mydomain.diana), много IP на домен (плюс географическая привязка), в т.ч. алиасы в другие сети/цепочки... может еще что, я просто не в курсе в текущих веяниях DNS в Интернет.

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 10:38:28 AM
 #365

О формате представления данных в базе 'имя -> информация о домене' есть какие-то наработки? может что готовое?

Для обычных доменов как минимум нужна поддержка метасимвола * (*.mydomain.diana), много IP на домен (плюс географическая привязка), в т.ч. алиасы в другие сети/цепочки... может еще что, я просто не в курсе в текущих веяниях DNS в Интернет.

Если ты имеешь в виду семантику <VALUE> домена, то глянь сюда:

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

Это тоже дело имплементаторов - что туда пихать и в каком формате.

Конкретно для твоего случая отвечаю.

Допустим, TLD .diana соответствует неймспейс 100. Есть какая то страничка в вики для этого неймспейса с RFC-подобным описанием, что именно и в каком формате должно содержаться в <VALUE>. Может быть это будет даже RFC. А может у неймспейса будет свой сайт. Вариантов много.

Ладно, не буду грузить вариантами, перейду к конкретике. Значит в этом неймспейсе домен mydomain.diana будет иметь имя "mydomain".

Я так понимаю, если речь идет об централизованном IP, то будет использоваться традиционная схема DNS. А значит домен "mydomain" будет иметь <VALUE>:

Code:
@ IN NS ns1.hosting.com. ; @ IN NS ns2.hosting.com.;

А уже на этих NS'ах будет стоять бинд и расчехлять всякие вайлдкарды *.mydomain.diana => IP,IP,IP

Другой пример - децентрализованная I2P с TLD .dia.i2p и доменом mail.dia.i2p, которому будет соответствовать дестинейшин хеш.

Для I2P будет неймспейс 1, в нем будет запись с именем "mail" и значением:
Code:
Y~V8YK2M-my6-Gw0lkrkJouxeqPuB03idp-4uT9pkIXCA5nki9m4YFfPObSPv0E7c2shBxwlUo-6beaRQ-7tCawJssDRc0C0PhRj12QUYYdtZP7JS8SQXy68gZIylY-wfyEXleIC4mYY5mSthhdUUfyo1lqzrdHc1NpjPBxRJcyMBFBGUeM7Of9E9M518jXpVl0bAmxSnr5dy7sgKAVNufzfqIBfEHnmL2ZYH78FoGnPybsV0F9~154emkmt89ZUbx0BuYvH3kT1zin8pSxKw1NqxvqYt7p8CElq1--U38rO9U5Y~kLB9f6F3RYJdkl28ANkvdgJUgqiHLVI5oPWATrJLAOokyGKhK4Xl4Bjp4SCuemxHwTOGyd-4Kl8cO41u3w1LksndX9stkV6U1X0gL9BeSIoa1997IgMLVbUiDMyCz7-cA0y2tc0EdQdlpc2y77nTdo7z23dMSJzWDXsrfmLhX7M24D70htLLc1dpwZ1BUEvM1uPqGfsBSrHdl-sAAAA

Именно этот дестинейшин хеш сейчас соответствует хосту mail.i2p

Однако он содержится в файле hosts.txt конфиг директории i2p, навязан разработчиками, ничем не подписан и не авторизован.

И получится у нас вот такая вот штука: http://i2psupport.org/ (с чего все началось собсно)



Только я рисовал это для неймкоин Smiley будет mywebsite.dia.i2p или mywebsite.tor =)

Это будет бомба. Форк Интернет без контроля и границ. Никто не сможет вычислить и закрыть сайт, а серфинг по таким сайтам станет удобным и понятным. Полная криптоанархия!
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 11:13:22 AM
 #366

Для централизованных IP сетей тоже будет полезно забить себе какой то namespace и объявить его как TLD .diana, как верно подметил rpMan.

Почему?

Потому что вот эта запись, которая будет храниться в DIANNA:

Code:
@ IN NS ns1.hosting.com. ; @ IN NS ns2.hosting.com.;

вообщето сейчас эта запись хранится на рутовых корневых серверах IANA/ICANN. И все эти сервера расположены в США. Лишь зеркала по миру раскиданы.

В последнее время до амеров начало доходить, что эти сервера вообще то стоят у них и они имеют власть затереть любую такую запись на основании SOPA/PIPA запроса. Мол, сайт что то там нарушает.

Явный пример беспредела:

http://www.megaupload.com/

Зайдите и убедитесь что может быть с каждым сайтом.

Так вот нехер хранить такие записи на центральных серверах =)

Конечно, по IP могут прикрыть, но можно ведь переехать. Домен то не потеряешь - он в цепи DIANNA. А там его не так то просто выпилить.

Но вообще всю эту кашу я специально для I2P заварил =) Там реально ТруЪ получится.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 11:34:24 AM
 #367

пыточный скрипт -->  "real3" -- выложен там же
в нем все как у тебя + средние значения + плюс садистские условия сети

прогон : 300000 блоков
нач. цена = 3 BTC

Code:
     Min price = 0.808690266913

      Max price = 3.05240708757

      Average price = 2.11268792701

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

      Minimal time between blocks = 230.0

      Max time b/b = 2599

      Average time b/b = 918.936249787

Те же параметры но 900000 блоков => результат похожий


"...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, 11:45:00 AM
 #368

Мой на Ы устарел. Этот почти верный, насколько я могу судить невыспавшимся мозгом.

Надо усложнять скрипт.

Ввести функцию создания блока. Она будет добавлять транзакции, считать общую их цену, вычислять PDiff. Время появления такого блока будет рассчитываться исходя из BitcoinDiff + PDiff*BitcoinDiff и текущего хешрейта сети биткоин (допустим он постоянный).

Когда складываем транзакции, для упрощения берем их цену из текущего блока.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 12:02:46 PM
 #369

Ну нормально =)

Надо ввести еще функцию жадности майнеров. Это какая то обратная парабола вероятности от PDiff, означающая что майнер запустить блок в сеть.

То есть, например на значениях PDiff ~10% высчитать блок не проблема. Вероятность хорошая. Больше - геморой с расчетом. Меньше - жаба давит.

То есть функция майнерской жадности пусть будет выглядеть так:

p(PDiff)=100 - 4*(PDiff*100-10)^2



Только Pdiff сюда передается не в процентах, а так, float.

Фунrция возращает вероятность от 0 до 100 что данный блок с данным PDiff будет запущен в майнинг. А значит он выйдет через

time = BitcoinDiff*(1+PDiff) * 2**32 / hashrate

BitcoinDiff,hashrate брать текущие, считать их константами.

И поехали. Добавляем транзакции в блоки, выпускаем блоки, делаем репрайс и т.п.

Таким образом мы сэмулируем поведение майнеров. Оно довольно предсказуемо =)
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 12:45:18 PM
 #370

Ну и последнее, нам надо сэмулировать спрос. А вот тут сложнее.

Предположим что курс BTC фиксированный. И рядового юзера устраивает цена $0.1 = 0.02BTC.

Предположим, спрос будет в виде SQRT фукнции, в зависимости от номера блока:

num_transactions(num_block)=10*sqrt(5*num_block)



Однако клиенты могут быть довольны или недовольны ценой и спрос в зависимости от этого будет увеличиваться или падать.

Тогда надо ввести функцию, описывающую довольство клиентов. Очевидно коэффициент довольства будет равен 1 при цене в 0.02BTC. При цене ниже, коэфициент довольства будет резко увеличиваться. Если выше - резко падать.

То есть, если предположить что p=price/base_price (base_price=0.02), то довольство будет

dov(p)=2^(2*(1-p))



Тогда количество транзакций на блок с номером N будет

NumTrans(N,price)=num_transactions(N)*dov(price/0.02)

Но майнеры не могут принять прям все транзакции. Надо будет добавлять это количество транзакций в некий буфер ожидания. А из него по одной в блок и считать вероятность его появления по вышеуказанной формуле. Вероятность свершилась - вышел блок.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 12:52:55 PM
 #371

Ukigo, сделай плз эти все вещи ) Я погляжу код и запустим эмулятор. Надеюсь я все учел. Не учел только влияние оборота дианы на курс биткоина. А оно будет.

Короче потом сэмулируем влияние на курс. Это тоже не сложно.
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 01:41:41 PM
 #372

Ок. попробую -- ты потом поправишь , если что  Smiley
может я сделаю в 2 этапа для облегчения задачи

Quote
Но майнеры не могут принять прям все транзакции. Надо будет добавлять это количество транзакций в некий буфер ожидания. А из него по одной в блок и считать вероятность его появления по вышеуказанной формуле. Вероятность свершилась - вышел блок.
а как ограничены возможности майнеров -- мин/макс. число возм. транз за блок или несколько блоков
-- может проще просто задавать псевдослучайные числа допустимых транзакций/блок ?

"...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, 01:57:17 PM
 #373

Смотри. Пусть транзакции у нас по 0.1 BTC.

Тогда если майнер возьмет 50 транзакций, то его PDiff=50*0.1/50=0.1 (или 10%)

Теперь смотри на обратную параболу. 10% соответствует вероятность 100%:

p(0.1)=100 - 4*(0.1*100-10)^2=100%

Значит этот блок выйдет через (BitcoinDiff*1.1 * 2**32 / hashrate) секунд.

Если майнер взял 60 транзакций, то Pdiff уже 60*0.1/50=0.12 (12%)

p(0.12)=100 - 4*(0.12*100-10)^2=84%

Значит, запускаем rand(0,100). Если 0 <= rand(0,100) <= 84, то блок выйдет через  (BitcoinDiff*1.1 * 2**32 / hashrate) секунд. Если нет, то повторяем процедуру через 600 секунд.
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 02:05:18 PM
 #374

Но вообще это выглядеть будет так.

Существует буфер, куда добавляются "заказы" каждый раз в 600 секунд по функции NumTrans(N,price)=num_transactions(N)*dov(price/0.02), где N - номер "раза".

Из этого буфера майнер забирает транзакции в блоки.

Он должен набрать транзакций на PDiff~=10%. Тогда он выпускает блок. Если он не может выпустить блок по причине недостатка транзакций, он пытается его выпустить с вероятностью

p(PDiff)=100 - 4*(PDiff*100-10)^2

Если же он "перебрал" транзакций из буфера, то он тоже пытается выпустить блок с этой вероятностью.

То есть система "шагает" шагом в 600 секунд. Каждый шаг наполняет буфер транзакций по функции. И каждые 600 сек принимается решение о выпуске блока дианы
(если предыдущий успел рассчитаться).
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 09, 2012, 02:10:42 PM
 #375

Хотя нет, в сад жаность майнера. Пусть делает что делает.

Сколько набрал из буфера - по такому PDiff и посчитал блок и выпустил его через соотв. количество секунд time = BitcoinDiff*(1+PDiff) * 2**32 / hashrate

Следующий блок можно считать только если выпущен предыдущий. То есть если на момент следующего "шага" системы предыдущий еще не выпустился, то следующий не считается.

Посмотрим как система сожрет такой SQRT спрос =)
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 02:21:16 PM
 #376

У меня после подстановок получается :
NumTrans = 10*sqrt(5*num_block)*(2**(2*(1-price/base_price)))
Правильно ?

"...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, 02:22:44 PM
 #377

ну вроде да
Ukigo
Hero Member
*****
Offline Offline

Activity: 924


View Profile
March 09, 2012, 05:22:30 PM
 #378

@pent
меня зовут эмулятор "emu"   Grin  Undecided

лежит там же -- посмотри то ли я сделал чего ты хотел

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

"...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 10, 2012, 04:23:13 AM
 #379

Так, корректировка.

Значит спрос у нас будет такой:

sqrt(5*x)

Где x = шаг в 10 минут



Довольство клиентов будет измеряться более простой функцией

good_price/price

При good_price=1 вот такое довольство будет



Еще довольство будет зависеть от скорости выхода блоков. Ведь если блок выходит раз в неделю, то кому это надо, правильно?

Допустим, 5 часов - терпимый промежуток выхода блоков

43200/blktime



Тогда функция спроса будет такая

Code:
def num_domain_trans(step, prc, blktime):
    return sqrt(5*step)*(start_price/prc)*(43200/blktime) ## changed coeff. 10 --> 2 !!!

Я чесно не подгоняю ничего, я просто ввожу какие то адекватные обратные связи вида 1/x
Погоняем на другом спросе потом

Значит эмулятор будет такой
http://pastebin.com/HeP3kQKV

Получается вот что
http://dianna-project.org/c/diaemu.log
pent
Hero Member
*****
Offline Offline

Activity: 490



View Profile
March 10, 2012, 04:50:11 AM
 #380

Получается такое

Шаг на графике - 10 минут. Т.е. если step=100, то это 1000 минут. step типа время.

Время нахождения блока


Транзакций на блок


Цена транзакции


Доход майнеров на блок

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!