Code Monkey home page Code Monkey logo

peercoin / peercoin Goto Github PK

View Code? Open in Web Editor NEW
565.0 99.0 551.0 190.34 MB

Reference implementation of the Peercoin protocol.

Home Page: https://peercoin.net

License: MIT License

QMake 0.01% Python 13.06% Shell 0.78% Makefile 0.62% C++ 45.39% C 38.30% Objective-C++ 0.02% Roff 0.10% HTML 0.09% M4 0.91% Assembly 0.11% Java 0.01% Sage 0.24% Scheme 0.10% CMake 0.23% Dockerfile 0.03% Cap'n Proto 0.01% Batchfile 0.01%
blockchain decentralized cryptocurrency minable proof-of-stake

peercoin's Introduction

Peercoin Official Development Repo

Peercoin Donate Continuous Integration

What is Peercoin?

Peercoin (abbreviated PPC), previously known as PPCoin, is the first cryptocurrency design introducing proof-of-stake consensus as a security model, with a combined proof-of-stake/proof-of-work minting system. Peercoin is based on Bitcoin, while introducing many important innovations to cryptocurrency field including new security model, energy efficiency, better minting model and more adaptive response to rapid change in network computation power.

Peercoin Resources

Testing

Testing and code review is the bottleneck for development; we get more pull requests than we can review and test. Please be patient and help out, and remember this is a security-critical project where any mistake might cost people lots of money.

Automated Testing

Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code.

Unit tests can be compiled and run (assuming they weren't disabled in configure) with: make check

Manual Quality Assurance (QA) Testing

Large changes should have a test plan, and should be tested by somebody other than the developer who wrote the code.

  • Developers work in their own forks, then submit pull requests when they think their feature or bug fix is ready.
  • If it is a simple/trivial/non-controversial change, then one of the development team members simply pulls it.
  • If it is a more complicated or potentially controversial change, then the change may be discussed in the pull request, or the requester may be asked to start a discussion in the Peercoin Forum for a broader community discussion.
  • The patch will be accepted if there is broad consensus that it is a good thing. Developers should expect to rework and resubmit patches if they don't match the project's coding conventions (see coding.txt) or are controversial.
  • From time to time a pull request will become outdated. If this occurs, and the pull is no longer automatically mergeable; a comment on the pull will be used to issue a warning of closure. Pull requests closed in this manner will have their corresponding issue labeled 'stagnant'.
  • For development ideas and help see here.

Branches:

develop (all pull requests should go here)

The develop branch is used by developers to merge their newly implemented features to. Pull requests should always be made to this branch (except for critical fixes), and could possibly break the code. The develop branch is therefore unstable and not guaranteed to work on any system.

master (only updated by group members)

The master branch get's updates from tested states of the develop branch. Therefore, the master branch should contain functional but experimental code.

release-* (the official releases)

The release branch is identified by it's major and minor version number e.g. release-0.6. The official release tags are always made on a release branch. Release branches will typically branch from or merge tested code from the master branch to freeze the code for release. Only critical patches can be applied through pull requests directly on this branch, all non critical features should follow the standard path through develop -> master -> release-*

peercoin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peercoin's Issues

How can I compile a ppcoind executable

I have downloaded the source and run qmake to generate the Makefiles. When then run make, the only executable created is "ppcoin-qt". How can I compile ppcoind executable (ie: the standalone daemon)?

Bitcoin reference

On the receive coins tab just above label it says: "These are your Bitcoin addresses ...." Should be Peercoin.

Can't send funds

Using the development version of ppcoind.
/root/ppcoin/src/ppcoind --help | grep vers
PPCoin version v0.4.0ppc-1915-g4536df1-beta

/root/ppcoin/src/ppcoind listaccounts
{
"" : 325.17000000
}

/root/ppcoin/src/ppcoind sendfrom "" PSomeaddress 100
error: {"code":-4,"message":"Insufficient funds"}

I tried sending using different options but none works.

Any ideas how to get this working?

Error on build osx

Hi,

I have this error when I build the project, let me know what I am doing wrong, cheers Seb

opt/local/lib -o build/macdockiconhandler.o src/qt/macdockiconhandler.mm
src/qt/macdockiconhandler.mm:50:39: error: assigning to 'objc_object *' from
incompatible type 'DockIconClickEventHandler *'
...= [[DockIconClickEventHandler alloc] initWithDockIconHandler:this];
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/qt/macdockiconhandler.mm:60:6: warning: receiver type 'objc_object *' is not
'id' or interface pointer, consider casting it to 'id' [-Wreceiver-expr]
[this->m_dockIconClickEventHandler release];
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Unlocked for minting only still allows payments

Problem:

  • Payments are allowed without password even though the wallet has been unlocked for minting only.

Step to reproduce:

  • Launch ppcoin-qt with rpc enabled in config
  • Execute ppcoind walletpassphrase 9999 true
  • Make a payment: works

Expected:

  • Ask for password again when making payment

Warning

I get a warning on the qt-wallet:

"Warning Checkpoint is too old. Wait for blockchain to download or inform the developers"

Compiled on Ubuntu today 27th September 2015. I am sure it is nothing but it is not a good introduction to the wonders of PPC (I have not waited for the blockchain to download).
ppc-checkpoint-too-old

Can't build Qt version

The daemon version build fine.
When I try to build the Qt wallet I am getting:

src/qt/transactiondesc.cpp:247:19: error: variable has incomplete type 'CTxDB'
            CTxDB txdb("r"); // To fetch source txouts
                  ^
src/main.h:98:7: note: forward declaration of 'CTxDB'
class CTxDB;
      ^

wrong block height in rpc console

In rpc console the estimated total blocks displays as 99999 not the current network height of blockchain.

Eventually if i have some time I may do a pr with a fix.

About database.

What about an integration and use of LevelDB in ppcoin client like bitcoin client?
The database will grow up and become slow.

Minting does not update balance amount in QT UI -- v0.4.0ppc-beta 64-bit linux

I'm afraid I don't have much more than an observation for this bug report so far. But when the v0.4.0ppc-beta client just minted a block the balances in the QT client didn't update (e.g. Stake: 0 even though there is a transaction for the minted reward in my transaction history).

Environment: v0.4.0ppc-beta 64-bit ubuntu 14.04 64bit

Expected behavior: When the peercoin client mints a block it should update the wallet balances accordingly.

Current work around: Restart the client.

Create a new version from master

Could you please create a new tree from master ppcoin v0.6.3rc1 is pretty out of date and is showing some bitcoin message that is not on the master branch. So create a new tree with the latest update and patch from bitcoin and your optimization will be pretty amazing. Please consider this request.

Sendmany Functionality broken by RPC console patch

Patch 1e5a015 broke the sendmany functionality for windows by changing the syntax The Linux style syntax now works for windows instead. There needs to be some sort of documentation for anyone working on windows applications

From windows cmd try

ppcoind sendmany "[insert testnet account label]" {"""[insert testnet address]""":1.00,"""[insert testnet address]""":5.75,"""[insert testnet address]""":0.25}

0.3.0 works fine

0.4 "error type mismatch"
VS
ppcoind sendmany '[insert testnet account label]' '{"[insert testnet account address]":1,"[insert testnet account addressl]":1}'

0.3.0 "error type mismatch"

0.4 works fine

I've build 0.4 on both 1) a windows 7 machine using mingw, and 2) through gitian on ubuntu 12.04. to confirm this change persists for both styles of building.

290825c..defc1c0 can not be compiled (boost problem?)

pulled current version (v0.6.3rc1?):

git pull
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 3), reused 5 (delta 3)
Unpacking objects: 100% (5/5), done.
From https://github.com/ppcoin/ppcoin
290825c..defc1c0 master -> origin/master
Updating 290825c..defc1c0
Fast-forward
src/base58.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

$ make -f makefile.unix
/bin/sh ../share/genbuild.sh obj/build.h
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/version.o version.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/checkpoints.o checkpoints.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/db.o db.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/init.o init.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/irc.o irc.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/keystore.o keystore.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/main.o main.cpp
main.cpp:2287:9: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/net.o net.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/bitcoinrpc.o bitcoinrpc.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/rpcdump.o rpcdump.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/script.o script.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/wallet.o wallet.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/walletdb.o walletdb.cpp
g++ -c -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/noui.o noui.cpp
g++ -pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security -g -DBOOST_SPIRIT_THREADSAFE -I/ppcoin/src -I/ppcoin/src/obj -DUSE_UPNP=0 -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -rdynamic -o ppcoind obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/irc.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/script.o obj/util.o obj/wallet.o obj/walletdb.o obj/noui.o -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -l miniupnpc -Wl,-Bdynamic -l z -l dl -l pthread
.text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED2Ev' referenced in section.text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED1Ev[non-virtual thunk to boost::exception_detail::clone_implboost::exception_detail::bad_exception_::~clone_impl()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED2Ev[_ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED5Ev]' of obj/netbase.o .text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED2Ev' referenced in section .text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED1Ev[non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::~clone_impl()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED2Ev[ZN5boost16exception_detail10clone_implINS0_14bad_exception_EED5Ev]' of obj/netbase.o
.text._ZN5boost16exception_detail10bad_alloc_D2Ev' referenced in section .text.ZN5boost16exception_detail10bad_alloc_D1Ev[non-virtual thunk to boost::exception_detail::bad_alloc::~bad_alloc
()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail10bad_alloc_D2Ev[_ZN5boost16exception_detail10bad_alloc_D5Ev]' of obj/netbase.o .text._ZN5boost16exception_detail14bad_exception_D2Ev' referenced in section .text._ZN5boost16exception_detail14bad_exception_D1Ev[non-virtual thunk to boost::exception_detail::bad_exception_::~bad_exception_()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail14bad_exception_D2Ev[_ZN5boost16exception_detail14bad_exception_D5Ev]' of obj/netbase.o
.text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED2Ev' referenced in section .text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED1Ev[non-virtual thunk to boost::exception_detail::clone_implboost::exception_detail::bad_alloc_::~clone_impl()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED2Ev[_ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED5Ev]' of obj/netbase.o .text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED2Ev' referenced in section .text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED1Ev[non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::~clone_impl()]' of obj/netbase.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED2Ev[_ZN5boost16exception_detail10clone_implINS0_10bad_alloc_EED5Ev]' of obj/netbase.o
.text._ZN5boost16exception_detail19error_info_injectorINS_21thread_resource_errorEED2Ev' referenced in section .text._ZN5boost16exception_detail19error_info_injectorINS_21thread_resource_errorEED1Ev[non-virtual thunk to boost::exception_detail::error_info_injectorboost::thread_resource_error::~error_info_injector()]' of obj/util.o: defined in discarded section.text._ZN5boost16exception_detail19error_info_injectorINS_21thread_resource_errorEED2Ev[_ZN5boost16exception_detail19error_info_injectorINS_21thread_resource_errorEED5Ev]' of obj/util.o .text._ZN5boost16exception_detail19error_info_injectorINS_10lock_errorEED2Ev' referenced in section.text._ZN5boost16exception_detail19error_info_injectorINS_10lock_errorEED1Ev[non-virtual thunk to boost::exception_detail::error_info_injectorboost::lock_error::~error_info_injector()]' of obj/util.o: defined in discarded section .text._ZN5boost16exception_detail19error_info_injectorINS_10lock_errorEED2Ev[_ZN5boost16exception_detail19error_info_injectorINS_10lock_errorEED5Ev]' of obj/util.o
.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED2Ev' referenced in section .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED1Ev[non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorboost::lock_error >::~clone_impl()]' of obj/util.o: defined in discarded section.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED2Ev[_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED5Ev]' of obj/util.o .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED2Ev' referenced in section.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED1Ev[non-virtual thunk to boost::exception_detail::clone_implboost::exception_detail::error_info_injector<boost::lock_error >::~clone_impl()]' of obj/util.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED2Ev[_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_10lock_errorEEEED5Ev]' of obj/util.o
.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED2Ev' referenced in section .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED1Ev[non-virtual thunk to boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorboost::thread_resource_error >::~clone_impl()]' of obj/util.o: defined in discarded section.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED2Ev[_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED5Ev]' of obj/util.o .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED2Ev' referenced in section.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED1Ev[non-virtual thunk to boost::exception_detail::clone_implboost::exception_detail::error_info_injector<boost::thread_resource_error >::~clone_impl()]' of obj/util.o: defined in discarded section .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED2Ev[_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED5Ev]' of obj/util.o
collect2: ld returned 1 exit status
make: *** [ppcoind] Error 1

Pull requests user avanesov spam?

All pull requests from user avanesov as of today are just find PPC replace by PPCoin or similar changes. And a few of them regarding copyrights might be inappropiate. Appear as spam to me.

Non-wallet transactional data from ppcoind?

Is there still no way to get transaction details for non-wallet transactions via ppcoind?

I would very much like to include peercoin in multiple ongoing projects but I'm having trouble getting transactional data from the daemon.

There is no getrawtransaction call and gettransaction only returns information for in-wallet transactions, even with txindex=1 in .conf and the index properly built.

Is anyone maintaining the peercoin code and if so, is a pull of the getrawtransaction code on the roadmap?

Also, how might current peercoin block explorers be parsing general transaction data?

Unit tests?

There are no unit tests for peercoin, or rather it takes the tests form Bitcoin without adjusting them at all. Wouldn't it be a good idea to create unit tests for peercoin?

listunspent

Why is listunspent not supported in ppcoin??

This is causing us real problems.

Option to prevent a split or adjust the number of TX splits for the minted TX for which 90 days was not reached

The code is here: https://github.com/ppcoin/ppcoin/blob/master/src/wallet.cpp#L1331

This is a client-side implementation/protection, with no option to disable this behavior. A transaction that mints before 90 days of maturity is split in two for some unknown reasons... If the split doesn't occur (i.e. using a modified client) the transaction is still valid and accepted by the network.

An option that allows the user to specify the number of TXouts resulting from this split could also be a cool feature. For example, we can imagine that a user has 100,000 PPC and wants to split them in 3 everytime they mint.

An option to adjust these 90 days could also be interesting. For example, if I want my coins to split only if they can mint within 60 days of maturity, but not past 60 days.

Updates for OpenSSL

The "heartbleed" openssl vulnerability is not something that affects the Peercoin protocol or wallet security. Like Bitcoin, the only potential effect is during the use of TLS in RPC-over-SSL, and when fetching payment requests over HTTPS.

Following a "rather safe than sorry," and with the recent release of v0.4.0, it's worth patching.

"timedrift" (nMaxClockDrift) exploit to increase minting probability

It has been suggested to change the timedrift parameter value from two hours (set by nMaxClockDrift in main.h) to one minute (http://www.peercointalk.org/index.php?topic=3931.msg37731#msg37731). This would prevent a malicious user to intentionally change his clock and mint far in the future and consequently drastically increase his chances to mint a PoS block.

A few minutes shouldn't be a big issue, it shouldn't lead to a lot of orphan PoS blocks due to desynchronized client clocks. However, I would recommend performing an appropriate study to determine which parameter's value is best. Several factors need to be taken into account such as: network speed or lags (i.e. wallet used behind a proxy), computer speed (i.e. slow Raspberry Pi), and anything else that could affect time during the minting process.

There are several studies online about time drifting distributions that would help figure out which is the optimal value to use to come up with a minimal orphan amount while preventing malicious users to increase their minting chances too much.

Some studies:
http://blog.codinghorror.com/keeping-time-on-the-pc/
http://vancouver-webpages.com/time/
http://vancouver-webpages.com/time/web.html

From what we can observe, if a web server is desynchronized by more than 20 seconds, then it is more likely that it is completely desynchronized (more than 2h, either voluntary or by mistake). If we consider computers, this study shows that this number is more likely to be around 400 seconds.

Consequently I would suggest that we adjust our timedrift parameter for a value of 360 seconds = 3 minutes. Which should cover the eventual network/computer lags. This number is not very accurate, and I believe we can perform a better analysis/study of which value we should use, but at least if a minter detects some orphan blocks he will understand by looking at his clock that this is the problem. Because a drifted clock of 3 minutes is pretty obvious to spot and correct.

Nowadays most computers are permanently synchronized with NTP servers, so it's pretty clear that two hours is way too much in any case and it's an unnecessary attack vector for whoever wants to exploit it (low impact but medium likelihood).

This issue is also discussed here: http://www.peercointalk.org/index.php?topic=2976.msg27924#msg27924

Occasional references to 'Bitcoin' or 'BTC' still exist through the user interface

I've created this issue to track commits against, that address areas of the UI that contain outdated language from the original port of the /bitcoin repo.

Please feel free to add comments to this issue that call out areas of the user interface where you have seen issues with labels or descriptive text, and I'll do my best to address them as time permits.

Block structure isn't optimum when parsing a block without parsing TX

What differentiates Peercoin from Bitcoin is also its block structure. Peercoin adds a few new elements to the block structure such as transaction time and block signature. The signature is found at the end of each block after the transaction elements, and has a variable length:

v_chBlockSigSize; // Variable length integer block signature - signed by coin base txout[0]'s owner
m_chBlockSig; // Raw byte code data for the block signature

These two elements have a big impact on the block parsing processing optimization, especially if someone wants to dump the Blockchain without processing transactions (only the block header and signature). In Bitcoin the block size is described in the block header, and since the transaction elements (of variable size) are found at the end of each block, it allows the parser to calculate where the transaction fields end and jump to the next block without processing transactions. Regarding Peercoin, there is both: transaction elements and block signature. These two are of variable size, and it is thus not possible to know at which position the transaction description ends. By consequence, if someone wants to dump blocks without processing transactions he can't because transactions have to be processed in order to know where the v_chBlockSigSize is located...

An appropriate solution would either be to add an element to the block header to provide the transaction elements size or signature size. Or to move the signature elements above the transaction elements, just after the header (because v_chBlockSigSize would be directly accessible from the header).

Icons and Descriptions

The wallet states BTC instead of PPC and the installer icon is the bitcoin logo as well

Invalid checkpoint found!

Hi!

I just received on the pool (peercoin.econing.com) a strange error never happens again:
It 's an error when rpc does some calls (getblock, listsinceblock, listaccounts)

Error: {"code":-2,"message":"Safe mode: WARNING: Invalid checkpoint found! Displayed transactions may not be correct! You may need to upgrade, or notify developers of the issue."}

thanks

start ppcoin.exe

I protect wallets by renaming wallet.dat to other name...
If wallet is missing ppcoin.exe will create a new wallet.
I need to wait while ppcoin.exe start, close it, delete the new created wallet, rename my wallet and start anew.

Can you modify...
if wallet exist { start ppcoin.exe }
else { select "Create new wallet" or "close" }

PPcoin Rebranding

Seems like we need to rename the repo from ppcoin/ppcoin to peercoin/peercoin. All the other coins seem to use the full name, and I think it would look at little better for branding purposes.

Build fails on OS/X 10.9 Mavericks

There are two issues when building ppcoind on OS/X 10.9.

  1. A duplicate definition of insert() in serialize.h.
  2. Reference to array instead of boost::array in net.cpp.
  3. Somewhat outdated instructions for building on OS/X in doc/build-osx.txt and src/makefile.osx.

Made a pull request with fixes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.