Author

Topic: [ANN] [PPC] PPCoin Released! - First Long-Term Energy-Efficient Crypto-Currency - page 137. (Read 684864 times)

legendary
Activity: 1205
Merit: 1010
Some random notes from a quick look at the source code: (I might have missed something though)
  • I can't find any code path that actually mines proof of stake blocks. The code seems to be implemented, but nothing seems to be calling it yet. Proof of stake blocks definitely aren't mined through getwork, but rather through (currently inactive, or maybe I'm just blind) CPU mining.
  • The difficulty for work and stake blocks seems to be (mostly?) the same, but it's divided by the number of accumulated coin days for stake blocks.
  • The block reward for a work block is sqrt(sqrt(9999^4 / difficulty)), rounded down to the next cent boundary.
  • The block reward for a stake block is the number of coin years put into it divided by 100.
  • The number of "bruteforce attempts" for stake blocks is limited to once per second (up to 2 hours into the past), per transaction used as stake input, per block found on the network.
  • Proof of stake blocks can include stake from multiple transactions, as long as it's on the same address (IIUC).
  • Minimum age for coins used in a stake block is 30 days.

Sunny might want to confirm if the above is correct...

1) It's shared codepath with BitcoinMiner() and it's created in a separate thread and is active
2) The two difficulties starts the same at 256 but will adjust fairly independently from each other
3) About right
4) 1 cent per coin-year consumed in coinstake only (other transactions coin age do not count)
5) It's just the built-in minter's behavior, not an enforcement
6) There is only one output allowed, but inputs can be from multiple addresses. The built-in default minter does not combine from different addresses though to avoid compromising anonymity.
7) Right
legendary
Activity: 876
Merit: 1000
Etherscan.io
I see this in the ppcoin debug log a lot:

Code:
******* exception encountered *******
ProcessMessages(tx, 225 bytes) : Exception 'CDataStream::read() : end of data' caught, normally caused by a message being shorter than its stated length
ProcessMessage(tx, 225 bytes) FAILED

I am seeing a lot of similiar messages like the above too
hero member
Activity: 560
Merit: 500
Am I the only one who sees ppcoin and thinks "Popcoin"




At least you're not as childish as me when I first heard P P Coin.
hero member
Activity: 686
Merit: 500
Wat
Am I the only one who sees ppcoin and thinks "Popcoin"



legendary
Activity: 1078
Merit: 1005
I see this in the ppcoin debug log a lot:

Code:
******* exception encountered *******
ProcessMessages(tx, 225 bytes) : Exception 'CDataStream::read() : end of data' caught, normally caused by a message being shorter than its stated length
ProcessMessage(tx, 225 bytes) FAILED
hero member
Activity: 560
Merit: 500
Okay...so I finally got pushpoold to work the way it was suppose to be (or so I think).
I'm going to reset the database (as far as shares..hashrate...etc go) but I will keep a backup of all shares per miner/user/worker so as I can split the verified earnings ( I don't want to seem like a bad guy here Sad ).

This is data that will be used to pay out people who put in their shares.
Code:
root@mein:~# ./ppcoind getinfo
{
    "version" : "v0.1.0ppc-beta",
    "protocolversion" : 60001,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "newmint" : 16726.30000000,
    "stake" : 0.00000000,
    "blocks" : 1543,
    "connections" : 14,
    "proxy" : "",
    "ip" : "46.166.138.142",
    "difficulty" : 2929.41201025,
    "testnet" : false,
    "keypoololdest" : 1345415511,
    "keypoolsize" : 101,
    "paytxfee" : 0.01000000,
    "errors" : ""
}

You can now re-connect to the pool using your workers username, workers password, 46.166.138.142, and port 9944 (supports LP).

[Edit]: I'm moving the website off-site to off-set the load.
hero member
Activity: 686
Merit: 564
  • The number of "bruteforce attempts" for stake blocks is limited to once per second (up to 2 hours into the past), per transaction used as stake input, per block found on the network.
  • Proof of stake blocks can include stake from multiple transactions, as long as it's on the same address (IIUC).
Hmmmm. It does look that way. Interesting.

Edit: Looks like it's more complicated than that. Take a look at CTransaction::CheckProofOfStake - when calculating whether there's enough stake for the current difficulty, only the stake in the single transaction output used for that attempt counts. This is necessary to prevent various kinds of cheating. However, when calculating the reward I think you can indeed include stake from multiple transactions. This should mean that your expected number of and income from stake blocks over any given period of time depends only on the number of coin-days worth of coins older than the 30-day limit you have, and not on how that's divided up.
legendary
Activity: 1078
Merit: 1005
This is the first time I've ever setup a pool, let alone one for an Alt. Coin.
If you want to jump on Skype (MSN, or hell...even a phone call), and help me get this pool up and running...that would be awesome.
A couple of issues you might need to address (I don't know if these are different for ppcoin but for alt chains you often have to tinker with them):

* Longpoll notification when a block is found.
* Reward per block varies based on difficulty - it's not just bitcoins 50 coins.
legendary
Activity: 2940
Merit: 1090
Hi NothingG
  If you encountered any problem with accepting blocks please let me know. Transaction format is changed in ppcoin with a new timestamp field and I am not sure if this will cause any problem with existing mining API.

Aha, you changed block format?

Maybe that is the only reasonable explanation for the massive amount of hardware errors DiabloMiner gets mining your chain using exact same settings that work fine mining umpteen merged mined chains at once?

-MarkM-
hero member
Activity: 560
Merit: 500
Hi NothingG
  If you encountered any problem with accepting blocks please let me know. Transaction format is changed in ppcoin with a new timestamp field and I am not sure if this will cause any problem with existing mining API.

Newmint = amount you mined but not yet matured
This is the first time I've ever setup a pool, let alone one for an Alt. Coin.
If you want to jump on Skype (MSN, or hell...even a phone call), and help me get this pool up and running...that would be awesome.

This is my current errors I'm getting.

Code:
Wed Aug 22 02:47:30 2012 Server Starts - *:9934
CHECKWORK hash(False) 000000001a004ae93bc7ac566935af6a18e8fb0233479b2f5f0b938c5bec6dd1 ***
----------------------------------------
Exception happened during processing of request from ('***', ***)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 641, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('***', ***)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 641, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
...Just so people don't think I'm messing around. Sad
legendary
Activity: 1205
Merit: 1010
Hi NothingG
  If you encountered any problem with accepting blocks please let me know. Transaction format is changed in ppcoin with a new timestamp field and I am not sure if this will cause any problem with existing mining API.

Newmint = amount you mined but not yet matured
hero member
Activity: 560
Merit: 500
Just got back home, am looking at my pool now.
I wasn't expecting but one or two people to test it out, by the DB logs and the stats...I'm VERY happy with the amount of data.

Give me ~15-20min and I should have the pool back up with fixes.
Thanks everyone who helped.

[Edit]: Looks like there is quit a few memory leaks happening. It was the first time setting up a pool, so I was shooting in the dark. Along with that, it was the first time anyone has setup a pool for PPC...so, I think it went okay. I am using Poold.py modified to not only work with PPC, but to also work with MySQL so I can get a temporary website working.

[Edit2]: Does NewMint mean the same thing as balance? If not, then 23k shares for 24hrs means I didn't find a block at my pool? Could mean a few things...but, no block?
hero member
Activity: 607
Merit: 500
you are lucky!
after 24h with 660MHash
i have found only 2 blocks with 2700 coins!
donator
Activity: 1731
Merit: 1008
It would be like saying this vault is a great design except for people being able to steal money trivially is one of the weaknesses.

I would liken PPCoin's security to that of a hot dog stand. You cannot simply steal money as dude who sells hot dog is guarding it, but if you overpower the dude (which is almost trivial) you can grab the money. BUT that dude brings money to bank from time to time (like each 4 hours), and once money is in bank it's much harder to steal it from there. (But if bank itself wants to steal the money, that's another story.)

So, well, hot dog stand dude provides high availability and convenience. But, well, he's not very secure...

HotDogCoin

Any HDC / BTC exchange planned ?

Report after 18hrs at 700mhs
Code:
"balance" : 0.00000000,
"newmint" : 4366.01000000,
"stake" : 0.00000000,
"blocks" : 1487,
"connections" : 25,
full member
Activity: 124
Merit: 251
Can someone compile this for Mac OSX? I tried using the QT SDK and MacPorts, but received about ~6 build errors in QT. Based off MacPorts, I either need to downgrade Boost, and upgrade Bitcoin.

Thoughts?
legendary
Activity: 1022
Merit: 1033
It would be like saying this vault is a great design except for people being able to steal money trivially is one of the weaknesses.

I would liken PPCoin's security to that of a hot dog stand. You cannot simply steal money as dude who sells hot dog is guarding it, but if you overpower the dude (which is almost trivial) you can grab the money. BUT that dude brings money to bank from time to time (like each 4 hours), and once money is in bank it's much harder to steal it from there. (But if bank itself wants to steal the money, that's another story.)

So, well, hot dog stand dude provides high availability and convenience. But, well, he's not very secure...

HotDogCoin
legendary
Activity: 1205
Merit: 1010
Wait.  That is the whole purpose of the "proof".  It is to prevent a double spend.  It would be like saying this vault is a great design except for people being able to steal money trivially is one of the weaknesses.

If you need to rely on centralized checkpointing then there is no point to mining.  You could just make a centralized server and issue coins, handle redemptions, and validate tx by destroying old coins and issuing new ones as part of every tx at a tiny fraction of the cost of mining.

Decentralized transaction processing is very expensive (the entire daily tx volume of Bitcoin could be handled by a single low end VPS) but it is the cost of decentralization.   Having that cost combined with reliance on a central authority to protect the value of coins is the worst of both worlds.

None of this should be considered an attack on proof of stake, the problem is PPCoin isn't proof of stake.  It is centralized auditing with pretend mining thrown on top to make it look decentralized.

We are certainly aware of this viewpoint. But we don't agree that with centralized checkpointing the minters are useless as you claim because:
1) minters provide decentralized minting service and transaction processing
2) checkpoint master is not considered reliable so minters provide high availability

Furthermore we are not fully convinced that decentralization requires massive consumption of energy. We shall see how far we can go along our design.
legendary
Activity: 1205
Merit: 1010
Wait, does this post imply that you are trying to hold back information about how this is actually implemented, and instead want to serve the people backing your project with that kind of vague "don't worry" response?
Not very trustworthy at all... Why not answer my questions with six simple yes/no responses? I'm a bit worried now...

We encourage folks to read the code and understand the details of the inner workings. Looks like you've been doing it quite well, I would say most of your observations are quite right. We apologize for our current lack of resources.

Double spending is indeed a weakness in the design and that's one of the reasons why checkpoint is needed. I think we have been clear about that in our paper. We will look for other reasonable solutions within our power although that should not be construed as some sort of guarantee.
sr. member
Activity: 317
Merit: 250
GET IN - Smart Ticket Protocol - Live in market!
Whoever help me figure out how to get this running, I'll send them a free steam activation key for supreme commander and forged Alliance.

I installed the client and can created my ppcoin.conf file in my roaming/ppcoin folder. I'm pretty sure the ppcoin.conf file is setup wrong and that's why it can't connect or start mining. My 7950's are remaining idle.

Your ppcoin.conf file should look like this:

rpcuser = anyusernameyoulike
rpcpassword = anypasswordulike
server = 1
rpcallowip = 127.0.0.1


Then start your cgminer and add a pool:
URL: http://127.0.0.1:9902
username: same as set above for rpcuser
password: same as set above for rpcpassword


Punin I have another question for you. I have 2 other computers on my local home network that I'd like to point over to this one.

Lets assume PC #1 is my host running the PPCOIN client and running CGMINER
PC #2 assuming IP is 10.0.0.2
PC #3 assuming IP is 10.0.0.3

I should be able to run CGMINER on PC2 and PC3 and have them show up in my CGMINER on my main host PC which has the PPCOIN client installed. If this is correct, how do I go about doing this. This way I have only 1 wallet on my main PC and I could see all the cpus running on my main PC under CGMINER

Thanks in advance
sr. member
Activity: 317
Merit: 250
GET IN - Smart Ticket Protocol - Live in market!
Whoever help me figure out how to get this running, I'll send them a free steam activation key for supreme commander and forged Alliance.

I installed the client and can created my ppcoin.conf file in my roaming/ppcoin folder. I'm pretty sure the ppcoin.conf file is setup wrong and that's why it can't connect or start mining. My 7950's are remaining idle.

Your ppcoin.conf file should look like this:

rpcuser = anyusernameyoulike
rpcpassword = anypasswordulike
server = 1
rpcallowip = 127.0.0.1


Then start your cgminer and add a pool:
URL: http://127.0.0.1:9902
username: same as set above for rpcuser
password: same as set above for rpcpassword


Punin I sent you a PM Smiley
I have done the above and the mining works fine, when do I know if I have found a block? Smiley
//DeaDTerra

Open up another command prompt

type (after each line hit enter) This is my example for Windows 7 X64 bit
cd..
cd..
cd program files (x86)
cd ppcoin
cd dameon
ppcoind getinfo



Mine shows a 0 "balance" but I have some "newmint" . I'm assuming once this is verified on the network it will move over to my balance field. Not sure if I'm wrong someone corrrect me.
Jump to: