i like the name :-)
but more than that i like p2pool - every new coin DEV sould already consider to deliver the p2pool developed for that coin in order to make it easy to mine also for the low level mining rigs below 2MH/s because there is so many of use low level miners...
decentralized coin and decentralized pool is something you should not separate.
definitelly here is a big question how to implement the special logic into p2pool - thats too much for me - what about you King Dev team?
i know you need to modify this two files for make it working on network level:
p2pool/p2pool/networks.pynovacoin=math.Object(
PARENT=networks.nets['novacoin'],
SHARE_PERIOD=30, # seconds
CHAIN_LENGTH=24*60*60//30, # shares
REAL_CHAIN_LENGTH=24*60*60//30, # shares
TARGET_LOOKBEHIND=200, # shares
SPREAD=3, # blocks
IDENTIFIER='e037d5b8c6923510'.decode('hex'),
PREFIX='7208c1a53ef649b0'.decode('hex'),
P2P_PORT=9777,
MIN_TARGET=0,
MAX_TARGET=2**256//2**20 - 1,
PERSIST=True,
WORKER_PORT=8336,
BOOTSTRAP_ADDRS='188.120.239.144 81.200.245.198 85.234.62.99 81.200.241.54 217.77.220.40'.split(' '),
ANNOUNCE_CHANNEL='#p2pool-alt',
VERSION_CHECK=lambda v: v >= 60004,
),
p2pool/p2pool/bitcoin/networks.pythis
def get_subsidy(nCap, nMaxSubsidy, bnTarget):
bnLowerBound = 0.01
bnUpperBound = bnSubsidyLimit = nMaxSubsidy
bnTargetLimit = 0x00000fffff000000000000000000000000000000000000000000000000000000
while bnLowerBound + 0.01 <= bnUpperBound:
bnMidValue = (bnLowerBound + bnUpperBound) / 2
if pow(bnMidValue, nCap) * bnTargetLimit > pow(bnSubsidyLimit, nCap) * bnTarget:
bnUpperBound = bnMidValue
else:
bnLowerBound = bnMidValue
nSubsidy = round(bnMidValue, 2)
if nSubsidy > bnMidValue:
nSubsidy = nSubsidy - 0.01
return int(nSubsidy * 1000000)
and this
novacoin=math.Object(
P2P_PREFIX='e4e8e9e5'.decode('hex'),
P2P_PORT=7777,
ADDRESS_VERSION=8,
RPC_PORT=8344,
RPC_CHECK=defer.inlineCallbacks(lambda bitcoind: defer.returnValue(
'novacoinaddress' in (yield bitcoind.rpc_help()) and
not (yield bitcoind.rpc_getinfo())['testnet']
)),
SUBSIDY_FUNC=lambda target: get_subsidy(6, 100, target),
BLOCKHASH_FUNC=lambda data: pack.IntType(256).unpack(__import__('ltc_scrypt').getPoWHash(data)),
POW_FUNC=lambda data: pack.IntType(256).unpack(__import__('ltc_scrypt').getPoWHash(data)),
BLOCK_PERIOD=600, # s
SYMBOL='NVC',
CONF_FILE_FUNC=lambda: os.path.join(os.path.join(os.environ['APPDATA'], 'NovaCoin') if platform.system() == 'Windows' else os.path.expanduser('~/Library/Application Support/NovaCoin/') if platform.system() == 'Darwin' else os.path.expanduser('~/.novacoin'), 'novacoin.conf'),
BLOCK_EXPLORER_URL_PREFIX='http://novacoin.ru/block/',
ADDRESS_EXPLORER_URL_PREFIX='http://novacoin.ru/address/',
SANE_TARGET_RANGE=(2**256//2**20//1000 - 1, 2**256//2**20 - 1),
),
the novacoin is also PoW&PoS so it could be a help but i am lost in that special "algo" so what about the King Dev team and p2pool?
You should check the source code to find out the correcty parameters, maybe I can help you later, but I'm working on the website now.