Bitcoin Forum
April 18, 2024, 08:53:48 PM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 [3] 4 5 6 »  All
  Print  
Author Topic: TrueCoin <-- правильная монета  (Read 19698 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 01, 2013, 03:57:46 PM
Last edit: April 01, 2013, 04:14:38 PM by Storan
 #41

да моя идея проста. из вашего первого поста. Стабильно низко-инфляционная валюта
на 20й год - денежная масса больше на Х% чем на 19-й.
на 120й год - денежная масса больше на Х% чем в 119-й  Grin

(причём PoS эмиссия суммарно не должна превышать инфляцию - в противном случае для держателей средств валюта становится дефляционной).

Просто повторюсь. [Бешенно, потом плавно] эмитируем N лет, а после замедляемся и (а) стабилизуемся, (б) - потихоньку сжимаемся.
Эти идеи уже воплощены. (а) - NVC, (б) - BTC.

Если задача создать такую систем - то никаких формул выдумывать не нужно. Максимум, создать почти копию биткоина с PoS, где pos-блоки не будут генерировать проценты, а сразу будут жить поножным кормом с комиссий, как в оригинале PoW, по прошествии 12-20 лет.

p.s. а как в Go деление по модулю выглядит? хочу промежуточные данные на экран хотя бы раз "в день" выводить не чаще, иначе ощущение что ядерный взрыв рассчитываешь, по скорости обработки  Grin
if (!(block%720)){...} - такая конструкция нужна


p.p.s и да, как будет выглядеть функционированние криптовалюты даже слабо-инфляционной не говоря про стабильную/сжимаемую денежную массу никто пока точно не скажет. Попросту ниже 10% эмиссии нет ещё нигде (даже в старейшем "дефляционном" биткоине) Cheesy
1713473628
Hero Member
*
Offline Offline

Posts: 1713473628

View Profile Personal Message (Offline)

Ignore
1713473628
Reply with quote  #2

1713473628
Report to moderator
In order to get the maximum amount of activity points possible, you just need to post once per day on average. Skipping days is OK as long as you maintain the average.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713473628
Hero Member
*
Offline Offline

Posts: 1713473628

View Profile Personal Message (Offline)

Ignore
1713473628
Reply with quote  #2

1713473628
Report to moderator
1713473628
Hero Member
*
Offline Offline

Posts: 1713473628

View Profile Personal Message (Offline)

Ignore
1713473628
Reply with quote  #2

1713473628
Report to moderator
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 01, 2013, 06:46:25 PM
 #42

Code:
package main

import (
"os"
"fmt"
"strconv"
"math/rand"
"math"
)



var block = 0//block count ( for genesis block = 0 )

var maxBlock = []int {
262980,
525960,
788940,
1051920,
1314900,
1577980,
1840850,
2103840,
2366820,
2629800,
2892780,
4733640,
4996620,
5259600,
}


var percent_year = 0.0314159
var percent_day_multi = math.Pow(1+percent_year, float64(1.0/365.0))
var percent = (percent_day_multi - 1) / 720.0

var PoS_percent = float64(0.01);

var Coin = int64(1000000)
var Cent = int64(10000)

var mplus, wMplus, sMplus float64

var wDiff = float64(1.0)
var sDiff = 0.0001

var supply = 0.0//moneysupply
var fees = 0.0

var wHour = 29//PoW blocks' rate per 1 hour
var shour = 1// PoS blocks' rate per 1 hour

// 1st year - hyper-maining.
var nblock_like_premine = 1000000
var bonus_premine = float64(20);


var cepochka_ostatok = float64(0);
var freq_pos = float64(0.2);
var max_pos2pow_dobavka = float64(0.25);

var ncount_pow = 0;
var ncount_pos = 0;

func main() {
rnd := rand.New(rand.NewSource(755875))
for {
x := 0.0;
if block < nblock_like_premine {x=1.0 - float64(block)/float64(nblock_like_premine)}
wReward := bonus_premine * x + supply * percent;
sReward := float64(0);
if rnd.Float64() < freq_pos{ // PoS-block
age_block := rnd.Int63n(60*720) + 30*720
coin := (0.3 + rnd.Float64()*0.4)*supply/(60*720*freq_pos) // 60 - srednij vozrast v dnyah, 720*freq_pos - blockov v den'. 0.3+rnd*0.4, v pos zadeistvovany 30%-70% vseh sredstv
coin_age := coin * float64(age_block) / float64(maxBlock[0]) //pseudorandom  coin_age in days
sReward = float64(coin_age) * PoS_percent
cepochka_ostatok += wReward - sReward // nedoemmissia, ili izlishki
// fmt.Println("Age:", age_block, "Coin:", coin, "PoS: ", sReward)
ncount_pos++
}else {// PoW-block
if cepochka_ostatok > 0{ // razmazywaem nevvedenyu emissiu iz pos po sledujshim pow
if cepochka_ostatok > wReward * max_pos2pow_dobavka{
cepochka_ostatok -= wReward * max_pos2pow_dobavka
wReward += wReward * max_pos2pow_dobavka
}else{
wReward += cepochka_ostatok;
cepochka_ostatok = 0
}
}
ncount_pow++
}

if sReward == 0{
supply += wReward
}else{
supply += sReward
}

// if block%(maxBlock[0]/10) == 0{
// fmt.Println("moneysupply: ", strconv.FormatFloat(supply, 'f' , -1, 64), " at block #", block, "year #", block / maxBlock[0])
// fmt.Println("PoS_blocks =", ncount_pos)
// fmt.Println("PoW_blocks =", ncount_pow)
// fmt.Println("==========================================================")
// }
block++
if block > maxBlock[10] { break }
}
fmt.Println("moneysupply: ", strconv.FormatFloat(supply, 'f' , -1, 64), " at block #", block, "year #", block / maxBlock[0])
fmt.Println("PoS_blocks =", ncount_pos," PoW_blocks =", ncount_pow)
fmt.Println("==========================================================")

os.Exit(0)
}

вот чего получилось. из первой версии симулятора, с прикрученными pos и "бешенным" майнингом первые Х годов/Х' блоков.
Комиссии вообще не принимал во внимание, проще считать что они не уничтожаются (как в btc), и соответсвенно на объем денежной массы никак не влияют.
(странный в Go инкремент какой-то, в проверке if не дают пользоватся. просто выходит синоним для i=i+1 без практической пользы в применении)


Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 02, 2013, 03:24:23 AM
 #43

Эх, ещё одна идейка, в порядке бреда:

Награда за блок - положительная обратная связь со сложностью генерации этого блока, как пример:
wReward = 10 * ln (wDiff_base / wDiff);

в переводе на человеческий язык:
*) майнинг на базовой сложности - награда 0
*) увеличение сложности в 1000 раз, прибавляет ~69 монет к награде за блок

схема примитивная конечно, но посылы следующие:
накопление монет в системе на старте, возрастает с появлением новых участников (мощностей);
если/когда система попадает в реальную экономику (хотя бы на уровнеь битков 11-12-го года), именно реальный интерес к валюте (увеличение мощностей) увеличивает её эмиссию;
всё ещё продолжающееся развитие микроэлектроники позволяет надеяться, что и при стабильном состоянии системы уже и с "огромным" охватом, будет постепенное наращивание мощностей -> незатухание эмиссии.

ну и абстрактный пример:
пусть i7-4770 выдаёт при майнинге 1Mh/s, и это базовая мощность системы.
ниже подразумевается что сложность уже пересчитана под текущие мощности
майнит один i7: награда_за_блок = 10*ln(1) = 0;
майнят два i7: награда_за_блок = 10*ln(2) = 6,931;
майнит десяток i7: награда_за_блок = 10*ln(10) = 23,026;
майнит тысяча i7, достигли 1Gh/s: награда_за_блок = 10*ln(1000) = 69,078;
умельцы подключили gpu, эквивалентная мощность 1Th/s: награда_за_блок = 10*ln(1000000) = 138,16;
нашествие асиков, эквивалентная мощность 1Ph/S: награда_за_блок = 10*ln(1000000000) = 207,23;
будущее, мощность системы достигает эксахеша: награда_за_блок = 10*ln(1000000000000) = 276,31.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 02, 2013, 01:19:35 PM
Last edit: April 02, 2013, 01:54:11 PM by Storan
 #44

В логарифме - отношение сложностей.
wDiff_base - это заданная начальная сложность. Наверняка она же есть в каком-то значении типа 0x00ffffff...f
и высчитывается ln не от самого числа текущей сложности (мощности), а от того, во всколько раз она меньше чем базовая
и в "отрицательную" зону она кажись зайти не может - даже если система "умерла", и мощность стремится к 0 (в сети один майнер на PIV), сложность до 0хffff... не поднимется, застынет на 0х00ffff.... с генерацией блока раз в 3 часа  Tongue


тот же пример про i7, и сложности-мощности подробнее (базовая мощность - 1Mh/s, базовая сложность 0x00ffffff)
Один i7, мощность 1 Мh/s, сложность 0x 00ff ffff, награда = 10 * ln(0x00ffffff/0x00ffffff) = 10 * ln(1) = 0
Восемь i7, мощность 8 Mh/s, сложность 0х001f ffff, награда = 10 * ln(0x00ffffff/0x001fffff) = 10 * ln(Cool = 20,794
1024 i7-x, мощность 1Gih/s, сложность 0х 0000 3fff, награда = 10 * ln(0x00ffffff/0x00003fff) = 10 * ln(1024) = 69,315
и т.д.

Естественно сложность будет 256-битная (или 512-битная), но для дроби это абсолютно безразлично, так же и останется, меньше в Х раз чем базовая сложность.


И прибавлять единицу не обязательно. Можно красивые коэффициенты найти. Первоначальная награда Х, увеличение мощности в 10 раз добавляет Y, Y довольно просто считается.

Да не забивайте голову энергоэффективностью.
К сожаленью, всё вычисление блоков так устроено, что куча вычисленний уходит в пустоту.
PoW - это сама идея, молоти данные в поисках ненужного вообще никому, кроме самой системы Nonce.
Но остальное тоже не лучше - даже если всё оставлять на PoS, то и в PoS-блоках/транзакциях для защиты от спама, "ddos'a" и зафлуживания отправкой по 1 сатоши (если неправ, думаю Бальтазар поправит) всё равно придётся вводить на каждом ноде для всех потенциально опасных операций взаимодействия вычисления неких Nonce, которые долго искать и гораздо быстрее проверять.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 02, 2013, 02:04:22 PM
 #45

да точно Target - это то про что я и говорил.

эх, глупая моя привычка без предпросмотра отправлять посты, а потом уже править (это я про предыдущий).


К сожаленью, выход от майнинга одинаков не будет

Если кто-то имеет 1Gh/s, а другой 1Mh/s - первый будет получать 99,9% тут уж ничего не поделаешь.

Но от asic'ов изменение хеш-функций конечно должно сработать.
Более того - на этапе становление системы, оно защитит систему и от налётов зловредных GPU-недоумков, гробивших как я понимаю некоторые форки, закидывая туда 50%+ мощностей, и начиная пакостничать. (Ну просто потому что перебиндить адрес в уже существующем майнере, и переписать майнер под новый алгоритм задачи для разного уровня интеллекта)
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 02, 2013, 06:19:56 PM
 #46

С процентами ничего не поделаешь. Тут 2 варианта:

Либо эмиссия стабильна в абсолютном значении, и тогда естественно в процентном значении она постоянно уменьшается. (с учётом неизбежного вымывания части денег вследствии отправки на несуществующие адреса, физическом уничтожении файлов кошельков/паролей к ним и т.п.) со временем это означает нулевой прирост денежной массы, и её полную стабилизацию [В NVC|PPC как я понимаю
к этой стабилизации ещё системно ускоряются].
Даже если эмиссия ограничена каким-то коридором. Например 100 база, ±20% (т.е. 80 - 120), то это ничего не меняет. Да, если сначала эмиссия была ближе к минимуму диапазона, а по мере развития приблизится к максимуму, то это отсрочит время выхода на 0% роста, но и только. Отменить его ("стабилизец") наличие этих границ не позволит.

Либо эмиссия стабильна в процентном значении, и тогда в абсолютных величинах она естественно всё время повышается. В адекватной идеальной системе это повышение будет плавным и очень малым, на уровне общего роста. Но оно всё равно будет.
При такой эмиссии (в реальных, популистко/субъективных и т.п. системах) имеет смысл сравнивать только соседние периоды (ну по устоявшемуся порядку - года). Если взять любую, самую стабильно/успешную страну, и начать высчитывать её текущие инфляцию/эмиссию/рост от её показателей 1900 года - мы получим бешенные %. (Хороший пример тот же биг мак. Рост цены почти в 10 раз за полвека. Да был и кризис 70х, и нынешние разгулы кредитования - но это не отменяет факта, что есть и 1000% инфляции на фастфуд за пол века, и развитие экономики (подтасовки безусловно есть, но 50 лет назад несомненно их ввп был всё-таки меньше). Если представить эти 1000% инфляции на продукты в год, а не от точки отсчёта - это экономический коллапс, без вариантов.)


В запасном варианте с логарифмом социализм специфический  Cool
Скажем формула выглядит как 10 базы + 10 за каждый_десяток_сложности (10 + 4,34294482 * ln(max_target/target) монет).
Мощность сети в 10 раз больше первоначальной. Каждый блок оценивается в 10+10=20 монет, за сутки генерируется 20*720=14400 монет.
Я при наличии мощности Х = базовой, получается имею 10% мощностей.
Итого, майню каждый десятый блок, с наградой 20; или в сутки 720 * 0,1 * 20 = 1440 монет
Мощность сети поднялась величины в 100 больше первоначальной. Каждый блок оценивается в 10+20=30 монет, за сутки генерируется уже 30*720=21600
Я при остаюсь со своей Х=базовой, и имею 1% мощности.
В итоге, майню уже лишь каждый сотый блок, но с наградой 30; или в сутки 720 * 0,01 * 30 = 216 монет
Но мощность сети выросла ещё на порядок, и уже в 1000 раз больше первоначальной. Каждый блок оценивается в 10+30=40 монет, за сутки генерируется уже 40*720=28800
Я всё ещё майню на мощностях Х, и имею лишь 0,1% мощности
Майню лишь каждый тысячный блок, но с увеличившейся наградой 40; или в сутки 720 * 0,001 * 40 = 28,8 монет

Да, в целом в системе награда увеличивается, но трудозатраты на каждую добытую монету всё равно возрастают, причём значительно.


p.s. С++, я совсем чуток знаю. К сожаленью, на "академическом" уровне, лет 15 назад Страуструпа и Буча серьёзно читал/изучал (из практики был доступен только borland c++), а вот после ни одной среды разработчки всерьёз "не щупал" /живу в таких диких краях, где открытие консоли Win+r, cmd, enter воспринимается 99% народом как программирование/. А в реальных проектах, один практик сотню теоретиков за пояс заткнёт
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 02, 2013, 08:01:52 PM
Last edit: April 03, 2013, 03:56:58 AM by Storan
 #47

Вы про ту кривую, что у них в wReward присутствует math.Pow(wDiff, float64(0.16666666666666666))?

Так нужна ли она вообще здесь? Там как я понимаю предназначение простое - пока система маленькая, PoW-блоки создают "первоначальную" денежную массу системы. Как только система "поднялась" по мощности - PoW-генерация по-факту удушается, и система начинает эмитировать практически только PoS-блоками.


Данный корень n-й степени и логарифм одновременно вообще станно использовать. одной рукой "урезаем" награду на Х, другой тут же добавляем Y.


Опять-таки имхо, системы эмиссии BTC, NVC, PPC идеологически плохи тем, что сильно завышают долю валюты у первопроходцев (тут о сотнях, даже тысячах первых пользователей-человеков идёт речь, а не об авторах если что). Сильно это нестабильности и спекулятивности добавляет. (Оно конечно такой перекос в любой такой валюте будет, пока не придумают как раздать премайн всем людям земли Grin но специально тормозить через X годков/после появления Y пользователей поступление от эмиссии, это уж совсем перебор).
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 03, 2013, 06:27:48 AM
Last edit: April 03, 2013, 06:41:11 AM by Storan
 #48

Ну тогда второй вариант из примера?
награда_блока_за_сложность = 10 + log10(target0·÷target)  = 10 + ln(target0/target) / ln(10) ≃ 10 + 0,43429448190325182765112891891661 * ln(target0/target)
Людям проще объяснить. суммарная мощность  1 Мх/с - награда 10, сложность 10 Мх/с - награда 20, сложность 1Гх/с - награда 40, сложность 1Тх/с - награда 70
(но в реализации к натуральным логарифмам один фиг приводить надо, всё равно код только через них считает, ибо ряды проще)


А с чередованием и соотношением PoS-PoW. Как я понимаю у PoS тоже есть своя сложность? Можно простейшие проверки ввести для PoS-блока, вроде
если текущий последний блок PoW? - повышаем сложность на m, (или в k раз (тут k, нечто вроде 1,00х тогда будет думается))
иначе /* до этого был PoS */ - понижаем сложность на М, (или в K раз).

с этими мощностями, target'ом, сложностью уже крыша едет Smiley
человеческим языком предыдущий абзац - идут PoW-блоки, облегчаем генерацию PoS. Появился PoS - усложняем генерацию последующих. Ну и если скажем облегчение по -1 идёт, а усложнение на +5 (или облегчаем каждый раз на 0,1% а усложняем на 0,5%), то среднее устоявшееся соотношение PoW:PoS = 5:1



Премайн плохую карму проекту создаёт  Embarrassed
А в теории, думаю и блоки пропускать не нужно, и с ручным соло-майнингом без сети возится. Можно же в 0-м блоке прописать какую угодно генерацию на какой нужно адрес, запечатать его в том числе и в коде (чек-поинты же делаются итак) - и уже все остальные будут подтверждать эту транзакцию премайна.


Ух, если со всей темы идеи и предложения запихать в форк - такой полиморфный франкенштейн получился бы  Grin

P.S. Не в курсе, для работы с исходниками биткоина/ppc/nvc что в винде лучше и проще, microsoft visual studio, или intel compiler? (этическая сторона дела, у какой компании воровать продукт не волнует  Angry )
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 03, 2013, 05:18:33 PM
 #49

Премайн в 2млн? это RIP на старте, без вариантов  Undecided

Вон, вокруг NVC сколько какахо-метания было, из-за залога на биржу сотни к.

по коду:
я в формуле логарифма накосячил, было 10 + 1 * за_каждый порядок_мощности.
если 10 + 10* считать, то правильный коэффициент конечно же var coef = float64(4.3429448190325182765112891891661)

дважды увеличение индекса (block) - это вроде попеременного подсчтёта PoS и PoW блоков ?

а что переменные fees, txFees пытаются подсчитывать?
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 03, 2013, 06:01:03 PM
 #50

не нравится мне премайн, тем более огромный такой. но уж если его планировать, то
supply = 2000000.0 и смотреть на все объёмы проценты уже с ним

А может другую акцию какую-нибудь объявить а не раздачу премайна?
Например - неограниченая скупка трушек первый месяц старта: бит-цент, за 500 новых монеток. (ну курс прикинуть, чтоб тру было раза в 2 прибыльнее фармить чем бтц, тем более с нынешним приходом асиков туда - много ли на CPU нафармишь Cheesy, а здесь-то как раз только для CPU майнер и будет, есть куда мощности приложить; и чтоб себя не разорить при этом, но тут думаю за пару месяцев фарма btc одной видюхой можно будет выплатные btc наколотить)
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
April 03, 2013, 06:37:24 PM
 #51

Чем больше зверствовать, тем большую централизацию ты создашь. Потому что для сложного алгоритма GPU-майнер будет приватным долгое время, как это было в случае LTC. В итоге это приведет к концентрации мощности и эмиссии в руках ограниченного круга лиц.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 03, 2013, 06:47:39 PM
 #52

Может тогда к авторам алгоритмов обратиться? Как вы считаете, каковы перспективы переноса на openCL и т.п.? Или сразу в лоб "каковы по вашему мнению параметны, обеспечивающие наименьшую производительность на GPU)

На  Keccak взглянуть - это же по сути не алгоритм, а шаблон, чуть ли не десяток констант настраиваемых. Да почти наверняка есть комбинации, жутко неудобные для GPU.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 03, 2013, 07:12:05 PM
Last edit: April 04, 2013, 12:45:11 AM by Storan
 #53

Ukigo, как до жирафа только сейчас дошло.
В последней версии симулятора где-то логическая ошибка.
После того как PoW вырубается, и остаётся один PoS, инфляция вообще не может превышать 1% никоим образом. а она почти 3%.

Что-то с PoS-куском начислений неладно.




P.S. rnd := rand.New(rand.NewSource(int64(time.Now().Nanosecond()))) - для разных рандомов при запусках
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 04, 2013, 03:00:48 PM
 #54


Это не логическая ошибка - это диверсия Wink
Я хотел посмотреть что будет если выключить PoW.
На самом деле надо симулировать соотношение
 50/50 и формулы надо вывести такие,
 чтобы они САМИ поддерживали это равновесие,
но сначала надо туда встроить из клиента
 его алгоритм изменения трудности (точнее таргет).

Случайность , да можно инициализировать от времени и/или от PID процесса симулятора.
Это я переделаю в след. вариантах.

Я не про то что PoW отключился, а то что инфляция после этого 2,8% осталась. А этого физически быть не должно, если годовое вознаграждение за PoS 1%.
Там же вообще и максимум в 1% получится только если все кошельки включены на генерацию PoS, и ни одной транзакции. Так что при одном PoS 2,8% - это явная ошибка в логике симулятора

P.S. самое неприятное - буквально же 10 строк кода и всё кажется абсолютно правильным, и вот где эта фигня скрылась так и не могу понять  Embarrassed
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 04, 2013, 04:16:42 PM
 #55

Итак:

в начале каждого цикла for{
wReward = 0
sReward = 0


но это ещё не всё.
coinAge := rnd.Int63n(89970) + 30
это строка должна зависить от supply.


проверку правильного PoS предлагаю считать так. отключаем PoW прям через год (262980), и смотрим прирост денежной массы годика за 3, не больше
1 -> 2, и 2 -> 3 - везде должно быть меньше 1%, в идеале (0,25%-0,5% всё-таки валюта расчётов, а не сбережений). Но если суммарно с одним PoS прирост больше 1%, мы не PoS расчитываем, а какую-то ерунду.

coinAge := rnd.Int63n(89970) + 30 - показывает 4% между вторым и третьим годом чистого PoS, значит это ерунда  Tongue


upd.
ок, отвлекать не буду, это на самом деле важнее хорошую хэш-функцию найти.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 04, 2013, 05:30:50 PM
 #56

с coinAge сложнее. как я понял, это количество_монет*их_возраст (эдакий вариант человеко-часов).
И если с возрастом понятно - это всегда от Х1 до Х2 блоков {дней/часов}
А среднее количество монет прямо пропорционально их объёму вообще. (предложил бытак: среднее число монет в PoS-блоке = supply/2 * (1 / число_блоков_за_60_дней)
Но это глюк симуляторный-то. У нас там либо PoS-монеты в 5 раз быстрее прокручиваются, из-за соотвественно большей скорости блоков, либо заморозка не "простимулирована", и одна сумма может месячную награду хоть 5 раз подряд за 10 минут получить.
Повторюсь, сейчас PoS-часть симулятора - это как банковский вклад с 1% награды, но по факту каждый год на 4% сумма возрастает  Tongue


Вот насчёт хешей, и их железных/CPU реализаций разведу руками. там всё на английском читать надо, а в этом я пас  Roll Eyes
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 04, 2013, 06:40:54 PM
 #57

У нас же PoS и PoW по очереди работают... Зачем инфляцию в PoW снижать?
Вернее так: награда за PoW - это и есть расчётная целевая инфляция. Когда проходит PoS-блок, он эту награду фактически отменяет, заменяя своей 1%. Так что в реальности как бы поднимать % не пришлось Cheesy

Hash = Skein-256(BMW-512(Groestl-512(Block_Header)))  Roll Eyes
Анализ Кессак по-русски можно. Может ещё кто подключится заодно. Не может ведь 99% форумчан интересовать один только курс BTC и его изменения  Cool
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 05, 2013, 05:29:50 PM
 #58

512 бит - это же не страшно. В конце концов, даже если формат блоков и их заголовков оставить полностью совместимым, можно будет старшие{младшие} 256 бит результата от хешей брать и всё.
Маразмом то это выглядит только если единичный расчёт хеша происходит, и нужна скорость. А у нас, в криптовалютах результаты вычисления всё равно миллиардами откидывают.

неужто все крипто-библиотеки такие жуткие - одни макросы  Shocked


p.s. На какое соотношение PoW|PoS блоков выйдет система, при стабильной работе, 29:1; 5:1, 2:1, 1:1 ?
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
April 05, 2013, 06:43:41 PM
 #59

Groestl реализован на куче языков и есть даже асики. Я думал его использовать, но отказался от этой идеи во избежание централизации эмиссии обладателями приватных майнеров.
Storan
Member
**
Offline Offline

Activity: 112
Merit: 10


View Profile
April 05, 2013, 08:30:56 PM
 #60

Она должна стабильно работать при ЛЮБОМ
 соотн. от скажем 28:2 до 2:28 или типа того Wink
не, в краткосрочном периоде она конечно плавать может, но для длительных промежутков нужно соотношение, к которому система будет динамически сложность PoS подгонять.
Иначе будет 100% доминации одного типа.
Простой пример. PoS-мощность пропорциональна всей денежной массе M. PoW-мощность равна сумме мощностей майнеров. Даже навскидку будет 3 периода:
1) старт первый(е) месяйы - экспотенциальный рост pow-мощностей. PoS-мощность практически нулевая из-за отсутсвия в природе достаточных сумм монет как таковых
2) первый год, стабилизация PoW, но денежная масса растёт очень быстро в арифметической прогресии (начальный майнинг буквально месяцы назад её было 0, и каждый месяц + Мм, инфляция пока бешенная). PoW-мощность практически неизменна, PoS-мощность растёт ровно с ростом денежной массы М.
3) окончание роста, инфляция постепенно падает на ~ +Пи%, PoW-мощность удваивается каждый год. (Итог - удвоение мощности-PoW, практически стабильная мощность-PoS)
То есть нужно эти мощности между собой как-то калибровать, и калибровка эта должна постоянно меняться, стремясь соотношение PoW:PoW-блоков привести к заранее прописанной константе.

Итого, навскидку, будут конструкции вида:
Смотрим период формирования последних блоков за неделю. Время5040. Корректируем текущую цель для PoW. target_pow  *= 168_часов / время5040
Дополнительно можно учитывать поправку, насколько фактическое число блоков с самого старта системы отличается от расчетного
target_pow *= (время_жизни_системы_в_минутах / 2) / число_блоков
(не знаю точно ли это нужна ли вообще эта глобальная поправка. В BTC|LTC|PPC|NVC она есть где-нибудь?)
ну и напоследок if (target_pow > maximum_target) target_pow = maximum_target
Смотрим долю PoS-блоков за прошедшую неделю. p = число_pos_блоков_в_последних_5040_блоках / 5040
Скажем условились, что в среднем каждый четвёртый блок должен быть PoS
target_pos /= p * 4
и напоследок if (target_pos > maximum_target) target_pos = maximum_target

Всё, таргет майнеров подстраивается под скорость появления блоков; таргет pos подстраивается под свою долю в этой черед pow-блоков, соответсвенно и под генерирующее количество монето-лет, и под текущую сложность pow.

Смотря на каком языке либа написана )
для передовых хэшей выбор либ ограничен. (

Keccak стал стандартом и терь его напишут
 на чем угодно.
остальные кандидаты - как получится...
 
На Go есть BLAKE, Keccak , Skein.
Но нет майнера. (

На Python есть майнер, но pyskein написан
 для 3.x версии (

BMW нет ни на Go ни на Python.
И все равно нужны функции на C++ (C).
Для клиента.
К сож. конкурсные исх. на C заточены
 под Windows и нам не годятся.

Транкировать 512 -> 256 наверное можно Huh
но не хотелось бы...

Заточенность под windows - это огромнейший плюс. Если брать массовость - то именно наличие windows-реализации, это необходимое и достаточное условие существования.
Pages: « 1 2 [3] 4 5 6 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!