P2pool PPC

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

P2pool PPC

Postautor: rav3n_pl » sobota, 6 kwietnia 2013, 10:31

Zaglądając do zmian jakie wymagało wprowadzenie TRC do P2pool widzę, że to NIE JEST TRUDNE.
Niestety, nie wiem skąd wziąć potrzebne dane.
Poniżej wklejam kawałki kodu odpowiedzialne za BTC i TRC do porównania.
Może ktoś wie, jakie są dane PPC?
bitcoin/networks.py

Kod: Zaznacz cały

bitcoin=math.Object(
        P2P_PREFIX='f9beb4d9'.decode('hex'),
        P2P_PORT=8333,
        ADDRESS_VERSION=0,
        RPC_PORT=8332,
        RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue(
            'bitcoinaddress' in (yield bitcoind.rpc_help()) and
            not (yield bitcoind.rpc_getinfo())['testnet']
        )),
        SUBSIDY_FUNC=lambda height: 50*100000000 >> (height + 1)//210000,
        POW_FUNC=data.hash256,
        BLOCK_PERIOD=600, # s
        SYMBOL='BTC',
        CONF_FILE_FUNC=lambda: os.path.join(os.path.join(os.environ['APPDATA'], 'Bitcoin') if platform.system() == 'Windows' else os.path.expanduser('~/Library/Application Support/Bitcoin/') if platform.system() == 'Darwin' else os.path.expanduser('~/.bitcoin'), 'bitcoin.conf'),
        BLOCK_EXPLORER_URL_PREFIX='http://blockexplorer.com/block/',
        ADDRESS_EXPLORER_URL_PREFIX='http://blockexplorer.com/address/',
        SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1),
        DUMB_SCRYPT_DIFF=1,
    ),
terracoin=math.Object(
        P2P_PREFIX='42babe56'.decode('hex'),
        P2P_PORT=13333,
        ADDRESS_VERSION=0,
        RPC_PORT=13332,
        RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue(
            'terracoinaddress' in (yield bitcoind.rpc_help()) and
            not (yield bitcoind.rpc_getinfo())['testnet']
        )),
        SUBSIDY_FUNC=lambda height: 20*100000000 >> (height + 1)//1050000,
        POW_FUNC=data.hash256,
        BLOCK_PERIOD=120, # s
        SYMBOL='TRC',
        CONF_FILE_FUNC=lambda: os.path.join(os.path.join(os.environ['APPDATA'], 'Terracoin') if platform.system() == 'Windows' else os.path.expanduser('~/Library/Application Support/Terracoin/') if platform.system() == 'Darwin' else os.path.expanduser('~/.terracoin'), 'terracoin.conf'),
        BLOCK_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/block/',
        ADDRESS_EXPLORER_URL_PREFIX='http://cryptocoinexplorer.com:3750/address/',
        SANE_TARGET_RANGE=(2**256//2**32//1000 - 1, 2**256//2**32 - 1),
        DUMB_SCRYPT_DIFF=1,
    ),
p2pool/networks.py

Kod: Zaznacz cały

 bitcoin=math.Object(
        PARENT=networks.nets['bitcoin'],
        SHARE_PERIOD=10, # seconds
        CHAIN_LENGTH=24*60*60//10, # shares
        REAL_CHAIN_LENGTH=24*60*60//10, # shares
        TARGET_LOOKBEHIND=200, # shares
        SPREAD=3, # blocks
        IDENTIFIER='fc70035c7a81bc6f'.decode('hex'),
        PREFIX='2472ef181efcd37b'.decode('hex'),
        P2P_PORT=9333,
        MIN_TARGET=0,
        MAX_TARGET=2**256//2**32 - 1,
        PERSIST=True,
        WORKER_PORT=9332,
        BOOTSTRAP_ADDRS='forre.st vps.forre.st 74.220.242.6:9334 93.97.192.93 66.90.73.83 67.83.108.0 219.84.64.174 24.167.17.248 109.74.195.142 83.211.86.49 94.23.34.145 168.7.116.243 94.174.40.189:9344 89.79.79.195 portals94.ns01.us'.split(' '),
        ANNOUNCE_CHANNEL='#p2pool',
        VERSION_CHECK=lambda v: 50700 <= v < 60000 or 60010 <= v < 60100 or 60400 <= v,
    ),
    terracoin=math.Object(
        PARENT=networks.nets['terracoin'],
        SHARE_PERIOD=30, # seconds
        CHAIN_LENGTH=24*60*60//30, # shares
        REAL_CHAIN_LENGTH=24*60*60//30, # shares
        TARGET_LOOKBEHIND=200, # shares
        SPREAD=15, # blocks
        IDENTIFIER='a41b2356a1b7d35e'.decode('hex'),
        PREFIX='5623b62178d2b8a3'.decode('hex'),
        P2P_PORT=9323,
        MIN_TARGET=0,
        MAX_TARGET=2**256//2**32 - 1,
        PERSIST=True,
        WORKER_PORT=9322,
        BOOTSTRAP_ADDRS='seed1.p2pool.terracoin.org seed2.p2pool.terracoin.org forre.st vps.forre.st 93.97.192.93 66.90.73.83 67.83.108.0 219.84.64.174 24.167.17.248 109.74.195.142 83.211.86.49 94.23.34.145 168.7.116.243 94.174.40.189:9344 89.79.79.195 portals94.ns01.us'.split(' '),
        ANNOUNCE_CHANNEL='#p2pool-alt',
        VERSION_CHECK=lambda v: True,
    ),
Potrzebne są p2pprefix, identifier, prefix, jakieś "stałe" nody do bootstrapu i porty.
Niestety nie udało mi się tego w kodzie ppcoind łatwo znaleźć, może ktoś wie gdzie to zaszyte jest?
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

pm7
Weteran
Posty: 7893
Rejestracja: 20 maja 2012
Reputacja: 969
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: P2pool PPC

Postautor: pm7 » sobota, 6 kwietnia 2013, 20:51

p2pprefix to podejrzewam, że identyfikator blockchaina p2pool związanego z daną walutą. Jeżeli jeszcze go nie ma, to może być problem. Może spytaj autora?

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Re: P2pool PPC

Postautor: rav3n_pl » środa, 14 sierpnia 2013, 00:24

Odświeżam, bo przy eksperymentach z ZET znalazłem ten p2p prefix.
Nie wiem tylko, jak zrobić obliczanie wypłaty, bo jest ona zależna od trudności :/

Kod: Zaznacz cały

int64 GetProofOfWorkReward(unsigned int nBits)
{
    CBigNum bnSubsidyLimit = MAX_MINT_PROOF_OF_WORK;
    CBigNum bnTarget;
    bnTarget.SetCompact(nBits);
    CBigNum bnTargetLimit = bnProofOfWorkLimit;
    bnTargetLimit.SetCompact(bnTargetLimit.GetCompact());

    // ppcoin: subsidy is cut in half every 16x multiply of difficulty
    // A reasonably continuous curve is used to avoid shock to market
    // (nSubsidyLimit / nSubsidy) ** 4 == bnProofOfWorkLimit / bnTarget
    CBigNum bnLowerBound = CENT;
    CBigNum bnUpperBound = bnSubsidyLimit;
    while (bnLowerBound + CENT <= bnUpperBound)
    {
        CBigNum bnMidValue = (bnLowerBound + bnUpperBound) / 2;
        if (fDebug && GetBoolArg("-printcreation"))
            printf("GetProofOfWorkReward() : lower=%"PRI64d" upper=%"PRI64d" mid=%"PRI64d"\n", bnLowerBound.getuint64(), bnUpperBound.getuint64(), bnMidValue.getuint64());
        if (bnMidValue * bnMidValue * bnMidValue * bnMidValue * bnTargetLimit > bnSubsidyLimit * bnSubsidyLimit * bnSubsidyLimit * bnSubsidyLimit * bnTarget)
            bnUpperBound = bnMidValue;
        else
            bnLowerBound = bnMidValue;
    }

    int64 nSubsidy = bnUpperBound.getuint64();
    nSubsidy = (nSubsidy / CENT) * CENT;
    if (fDebug && GetBoolArg("-printcreation"))
        printf("GetProofOfWorkReward() : create=%s nBits=0x%08x nSubsidy=%"PRI64d"\n", FormatMoney(nSubsidy).c_str(), nBits, nSubsidy);

    return min(nSubsidy, MAX_MINT_PROOF_OF_WORK);
}
Jak to przełożyć na coś w stylu

Kod: Zaznacz cały

 SUBSIDY_FUNC=lambda height: 50*100000000 >> (height + 1)//210000, 
?
Wydaje mi się, że tylko tego nie ma, a wpisać na stałe nie można bo przecież się zmienia.
Chyba że to jest brane tylko do wyświetlania na stronie, a do obliczeń idzie wartość pobrana z demona. Tego nie wiem, a nie mam jak testować :/
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Re: P2pool PPC

Postautor: rav3n_pl » wtorek, 20 sierpnia 2013, 01:10

subsidy musi być wyliczone i ew. dodane fee z transakcji...
Tu https://bitcointalk.org/index.php?topic=110039.0 znalazłem jakie to wartości wychodzą +-, ale potrzebuję funkcji...
Ma ktoś może zdolności w tym temacie? Zasadniczo mam już wszystko działające, "tylko" blok nie jest akceptowany ;]
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Re: P2pool PPC

Postautor: rav3n_pl » środa, 21 sierpnia 2013, 21:00

Ok, ogarnąłem temat podglądając kod użyty w NVC :)
Ktoś wie, ile to jest CBigNum (~uint256(0) >> 32) ? Nie mogę rozgryźć tej klasy a c++ dla mnie magią jest :/ Czy to będzie 2^32 ?
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Wygadany
Awatar użytkownika
Posty: 586
Rejestracja: 1 sierpnia 2011
Reputacja: 3
Reputacja postu: 
0
Napiwki za post: 0 BTC

Re: P2pool PPC

Postautor: kactech » wtorek, 12 listopada 2013, 12:51

Pytanie z sierpnia ale odpowiem:
~uint256(0) == 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
czyli 32 bajtowa liczba o wartości 0, potem zanegowane bitowo
potem przesunięcie o 4 bajty
~uint256(0) >> 32 = 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
czyli 2^(256-32)-1
DISTbIT - prywatny punkt błyskawicznej sprzedaży kryptowalut
bitowe.info - agregator wiadomości ze świata BTC
ToxID: 8013F26F9CFE8B3B979EE313EBD866D9D4F1D426501711C1CC80A14B7031EF53092C1A2B3C9A

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Re: P2pool PPC

Postautor: rav3n_pl » wtorek, 12 listopada 2013, 12:55

Ok, dzięki. Wieczorem potestuję:)
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Bardzo Zły Moderator
Awatar użytkownika
Posty: 14380
Rejestracja: 16 kwietnia 2012
Reputacja: 2659
Reputacja postu: 
0
Napiwki za post: 0 BTC
Lokalizacja: Polska/Wwa/GW

Re: P2pool PPC

Postautor: rav3n_pl » piątek, 15 listopada 2013, 02:46

No qrde, nie działa. Napisałem taki test:

Kod: Zaznacz cały

def PPC_subsidy(bnTarget):
    print "Targert: ",bnTarget
    bnSubsidyLimit = 9999*1000000
    bnSL3T=bnSubsidyLimit * bnSubsidyLimit * bnSubsidyLimit * bnSubsidyLimit * bnTarget
    bnTargetLimit=0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    bnLowerBound=10000
    bnUpperBound=bnSubsidyLimit
    while bnLowerBound + 10000 <= bnUpperBound:
        bnMidValue=(bnLowerBound+bnUpperBound)/2
        print "low: ",bnLowerBound,"high: ",bnUpperBound,"mid: ",bnMidValue
        if bnMidValue * bnMidValue * bnMidValue * bnMidValue * bnTargetLimit > bnSL3T:
                bnUpperBound = bnMidValue
        else:
                bnLowerBound = bnMidValue

    return int((bnUpperBound/10000)*10000)

for i in range(1,10):
    print PPC_subsidy(10**i)
zwraca zawsze jedną wartość :/
Piffko: PLC/BTC 1Rav3nkMayCijuhzcYemMiPYsvcaiwHni
BIP39 Mnemonic z talii kart
Bitcoin Core 0.26.1
Linki do YT, TT, LI i reszty

Wróć do „SHA256”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości