[Dev] Release Candidate Feathercoin 0.9.3.2 - Check List
-
Re: Building Feathercoin 0.9.3.2
The amount of warnings is reduced considerably during the build. I am awaiting @Wellenreiter to push the fix for the open names warnings, he has moved the declarations into UtilitiesDialog.cpp.
These warnings aren’t fixed, are due to comparisons between signed and unsigned integers (during Loops), can cause bugs at bounds : requires the loops variables to be slightly re- witten …
multisigdialog.cpp: In member function ‘void MultiSigDialog::createRawTransaction()’:
multisigdialog.cpp:186:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for ( int i = 0; i < vOutpoints.size(); ++ i )
^
multisigdialog.cpp: In member function ‘void MultiSigDialog::updateAddressList()’:
multisigdialog.cpp:754:32: warning: unused variable ‘strName’ [-Wunused-variable]
const std::string& strName = item.second.name;
^
multisigdialog.cpp: In member function ‘void MultiSigDialog::updateAddressDetail()’:
multisigdialog.cpp:835:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for ( i = 0; i < addresses.size(); ++ i )
^
multisigdialog.cpp:839:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for ( i = 0; i < addresses.size(); ++ i )
^
multisigdialog.cpp: In member function ‘void MultiSigDialog::checkRawTransaction()’:
multisigdialog.cpp:905:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for ( int i = 0; i < containAddresses.size(); ++ i )createmultisigaddrdialog.cpp: In member function ‘void CreateMultiSigAddrDialog::create()’:
createmultisigaddrdialog.cpp:78:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (unsigned int i = 0; i < total; i++)transactiondesc.cpp: In static member function ‘static QString TransactionDesc::toHTML(CWallet*, CWalletTx&, int, int)’:
transactiondesc.cpp:228:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int k = 0; k < wtx.vout.size(); ++k)Warning needs investigation
/home/tony/Feathercoin/src/qt/forms/shiftdialog.ui: Warning: The name ‘horizontalLayout_1_Wallet’ (QHBoxLayout) is already in use, defaulting to ‘horizontalLayout_1_Wallet1’.
I had to leave these warnings in as they are in contained sub Libraries
util/bloom.cc:50:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (size_t i = 0; i < n; i++) {db/memtable.cc:104:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
assert((p + val_size) - buf == encoded_len);util/logging.cc:67:40: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
(v == kMaxUint64/10 && delta > kMaxUint64%10)) {db/version_set.cc:58:13: warning: ‘std::__cxx11::string leveldb::{anonymous}::IntSetToString(const std::set<long unsigned int>&)’ defined but not used [-Wunused-function]
inlevel db -
@Wellenreiter said:
@aciddude the class named of some classes have changed and the definitions in the test directory haven’t updated.
I have checked:
base58_tests.cpp:155:35: error: ‘class CBitcoinSecret’ has no member named ‘GetKey’
CKey privkey = secret.GetKey();secret.GetKey() now is secret.GetSecret()
base58_tests.cpp:157:41: error: ‘class CKey’ has no member named ‘size’
BOOST_CHECK_MESSAGE(privkeBOOST_CHECK_MESSAGE(privkey.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())BOOST_CHECK_MESSAGE(privkey.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())y.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())…privkey now must be of type CPrivKey and not Ckey anymore
To solve the first problem above I’ve searched for ‘secret.’ in all files and compared the definitions and checked the names of the procedures
Ok so now line 155 on base58_tests.cpp I’ve changed it to read:
CPrivKey privkey = secret.GetSecret();
make[4]: Entering directory '/home/aciddude/FTC0932/Feathercoin/src/test' CXX test_bitcoin-base58_tests.o base58_tests.cpp: In member function ‘void base58_tests::base58_keys_valid_parse::test_method()’: base58_tests.cpp:155:49: error: no matching function for call to ‘CBitcoinSecret::GetSecret()’ CPrivKey privkey = secret.GetSecret(); ^ In file included from base58_tests.cpp:5:0: ../../src/base58.h:130:13: note: candidate: CSecret CBitcoinSecret::GetSecret(bool&) CSecret GetSecret(bool &fCompressedOut); ^
ideas ?
-
Thanxs @Aciddude
I note this Test failure is something to do with stealth addressesThey are a new feature : We need ask @Lizhi if he can help
I’m nearly ready to push the Test fixes you found so far, so he can just pull 0.9.3.2 and see where we got to…
Meanwhile try to bypass that test and see the rest pass…
-
In my previous post it wasnt getting past this test…
BOOST_AUTO_TEST_CASE(base58_keys_valid_parse)I’ve managed to move past this
Currently I’m getting this error;This is on the test
BOOST_AUTO_TEST_CASE(base58_keys_valid_gen) (next one in base58_tests) -
@aciddude said:
@Wellenreiter said:
@aciddude the class named of some classes have changed and the definitions in the test directory haven’t updated.
I have checked:
base58_tests.cpp:155:35: error: ‘class CBitcoinSecret’ has no member named ‘GetKey’
CKey privkey = secret.GetKey();secret.GetKey() now is secret.GetSecret()
base58_tests.cpp:157:41: error: ‘class CKey’ has no member named ‘size’
BOOST_CHECK_MESSAGE(privkeBOOST_CHECK_MESSAGE(privkey.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())BOOST_CHECK_MESSAGE(privkey.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())y.size() == exp_payload.size() && std::equal(privkey.begin(), privkey.end(), exp_payload.begin())…privkey now must be of type CPrivKey and not Ckey anymore
To solve the first problem above I’ve searched for ‘secret.’ in all files and compared the definitions and checked the names of the procedures
Ok so now line 155 on base58_tests.cpp I’ve changed it to read:
CPrivKey privkey = secret.GetSecret();
make[4]: Entering directory '/home/aciddude/FTC0932/Feathercoin/src/test' CXX test_bitcoin-base58_tests.o base58_tests.cpp: In member function ‘void base58_tests::base58_keys_valid_parse::test_method()’: base58_tests.cpp:155:49: error: no matching function for call to ‘CBitcoinSecret::GetSecret()’ CPrivKey privkey = secret.GetSecret(); ^ In file included from base58_tests.cpp:5:0: ../../src/base58.h:130:13: note: candidate: CSecret CBitcoinSecret::GetSecret(bool&) CSecret GetSecret(bool &fCompressedOut); ^
ideas ?
To get past this error
1 - edit base58_tests.cpp (line 156)
CPrivKey privkey = secret.GetPrivKey();
2 - Edit base58.h and add the below at line 134
//Added by AcidDude bool IsCompressed(); void SetPrivKey(const CPrivKey& vchPrivKey); CPrivKey GetPrivKey();
-
This post is deleted! -
I was working with @wrapper on trying to fix the build tests… can you guys check out my commits below ?
https://github.com/aciddude/Feathercoin/commits/0.9.3.2I also merged @Wellenreiters latest commits from the main Feathercoin github for 0.9.3.2. For me the Wallet Builds with --disable-tests
if I run it with tests, I get to the (3rd?) base58 test.
I need some help understanding why CKey was removed and replaced with CSecret and CPrivKey
-
currently getting these errors
Making all in test make[3]: Entering directory '/home/aciddude/FTC0932/Feathercoin/src/test' make all-am make[4]: Entering directory '/home/aciddude/FTC0932/Feathercoin/src/test' CXX test_bitcoin-base58_tests.o base58_tests.cpp: In member function ‘void base58_tests::base58_keys_valid_gen::test_method()’: base58_tests.cpp:213:79: error: no matching function for call to ‘CBitcoinSecret::SetSecret(std::vector<unsigned char>::iterator, std::vector<unsigned char>::iterator, bool&)’ key.SetSecret(exp_payload.begin(), exp_payload.end(), isCompressed); ^ In file included from base58_tests.cpp:5:0: ../../src/base58.h:131:10: note: candidate: void CBitcoinSecret::SetSecret(const CSecret&, bool) void SetSecret(const CSecret& vchSecret, bool fCompressed); ^ ../../src/base58.h:131:10: note: candidate expects 2 arguments, 3 provided base58_tests.cpp:216:34: error: no matching function for call to ‘CBitcoinSecret::SetPrivKey(CBitcoinSecret&)’ secret.SetPrivKey(key); ^ In file included from base58_tests.cpp:5:0: ../../src/base58.h:140:10: note: candidate: void CBitcoinSecret::SetPrivKey(const CPrivKey&) void SetPrivKey(const CPrivKey& vchPrivKey); ^ ../../src/base58.h:140:10: note: no known conversion for argument 1 from ‘CBitcoinSecret’ to ‘const CPrivKey& {aka const std::vector<unsigned char, secure_allocator<unsigned char> >&}’ In file included from /usr/include/boost/test/unit_test.hpp:19:0, from base58_tests.cpp:19:
I feel like am just missing an #Include…
also check out this
http://stackoverflow.com/questions/27951537/how-to-convert-unsigned-char-to-stdvectorunsigned-char -
@Lizhi @Wellenreiter @Bushstar
Re: Testing / Wallet Guide creation.
What is the current Minimum payment level and where /how is it set on release?
What is the current Dust fee level and where / how is it set on release?How the transition from Litecoin to Bitcoin base effected minimum payments as each has its own system and FTC had a modified version for 0.8.7.x and 0.6.x series?
-
Hi Guys,
I’ve managed to fix the base58 test. you can see all my commits, here:
https://github.com/aciddude/Feathercoin/commits/0.9.3.2I did a few of them on different days.
currently the following tests are passing:
CXX test_bitcoin-alert_tests.o CXX test_bitcoin-allocator_tests.o CXX test_bitcoin-base32_tests.o CXX test_bitcoin-base58_tests.o CXX test_bitcoin-base64_tests.o CXX test_bitcoin-bignum_tests.o
the next test that fails is
test_bitcoin-bloom_tests
it fails with these errors:
make[4]: Entering directory '/home/aciddude/FTCNEW/Feathercoin/src/test' CXX test_bitcoin-bloom_tests.o bloom_tests.cpp: In member function ‘void bloom_tests::bloom_create_insert_key::test_method()’: bloom_tests.cpp:84:26: error: ‘class CBitcoinSecret’ has no member named ‘GetKey’ CKey key = vchSecret.GetKey(); ^ In file included from ../../src/base58.h:18:0, from bloom_tests.cpp:7: ../../src/key.h:76:20: error: ‘unsigned char* CPubKey::begin()’ is private unsigned char *begin() { ^ bloom_tests.cpp:86:50: error: within this context vector<unsigned char> vchPubKey(pubkey.begin(), pubkey.end()); ^ bloom_tests.cpp:86:65: error: no matching function for call to ‘std::vector<unsigned char>::vector(unsigned char*, const unsigned char*)’ vector<unsigned char> vchPubKey(pubkey.begin(), pubkey.end());
most of this seems to involve the CKey class in key.h as well as stuff in base58.h
it’s also claiming the CPubKey begin (method?) is private …but from what I can see in key.h it’s public…I could also be blind.
anyone who wants to replicate or help can just make the changes I did (you can see my commits in the above link)
or clone and build this
https://github.com/aciddude/Feathercoin/tree/0.9.3.2I’ve included all the recent fixes @Wellenreiter , @lizhi and @wrapper have done.
it seems the main reason for the tests failing is they need to be updated when there is any code changes, to reflect the names of new variables as well as the way things like keys are now created.
The remaining warnings are due to type mismatch during “for loops” -
update:
I’ve fixed the bloom test! below are the tests which are passing.
CXX test_bitcoin-alert_tests.o CXX test_bitcoin-allocator_tests.o CXX test_bitcoin-base32_tests.o CXX test_bitcoin-base58_tests.o CXX test_bitcoin-base64_tests.o CXX test_bitcoin-bignum_tests.o CXX test_bitcoin-bloom_tests.o CXX test_bitcoin-canonical_tests.o CXX test_bitcoin-checkblock_tests.o CXX test_bitcoin-Checkpoints_tests.o CXX test_bitcoin-compress_tests.o CXX test_bitcoin-DoS_tests.o CXX test_bitcoin-getarg_tests.o
It seems to be more of the same, where i’m just updating how things are done and the names of variables.
the next test that’s failing is
key_tests.cpp
-
Here’s my github commit. so you can see what I did.
https://github.com/aciddude/Feathercoin/commit/c19b6d4f7740b0b71c076e9745fea59c48709da8
-
Hi Guys,
the key_tests are now working. I’ll post the fix this evening.
it passes a few more tests and the next test that’s broken is the multisig_test
-
I think all test cpp file are bitcoin not feathercoin. When I compile with disable-tests, I don’t think we can use it .
-
I think the auto test system is relevent, or should be. Other coins such as Dogecoin have fixed their tests.
Do we need to update the test data to make them Feathercoin specific?
-
@lizhi said in [Dev] Release Candidate Feathercoin 0.9.3.2 - Check List:
I think all test cpp file are bitcoin not feathercoin. When I compile with disable-tests, I don’t think we can use it .
Yeah I believe so to.
With some of the tests, it has hard coded strings that I believe relate to Bitcoin, like some hard coded private keys for testing etc. I’m sure those need to be changed to relate to Feathercoin.
-
Then we should adapt the tests to feathercoin.
We could avoid problems like the sync problem we had with 0.9.3.2, if we have suficient tests coded.
Tests that we need to have:- switch to block version 2
- select the first 5 or 10 blocks with block version 2 and see if the code accepts the blocks
- switch from 2.5 minute time to block to 1 Minute time to block
- select the last 5 blocks bfore the fork and after the fork and check, if the code accepts the blocks
- switch to neoscrypt
- select the last 5 blocks bfore the fork and after the fork and check, if the code accepts the blocks
Probably there are more, but these are important ones and can be done without interaction with other clients.
in additon we should replace the bitcoin specific tests with the Feathercoin equivalents.
- switch to block version 2
-
A friend of mine who does graphic art is helping do a subtle and “tested with different Desktop Themes” update to the wallet.
The graduated background image was not tilling well, so we will be testing some alternatives. Here is the first test of white with a blue logo, matching the forum.
I’ve set him up a development environment and we have now found all the places / images need to be adjusted to try make some improvements …
We also have also produced a Green alternate that matches the Chinese FTC forum that colour scheme that @Lizhi runs, that he could include in his window builds.
At the moment the priority is to replace the background screen with a more subtle look.
We have been discussing ideas such as to use the shadow from the FTC graphics library, and have the Logo as “Water mark”.
I’ve made a Github, for swapping test images :
https://github.com/wrapperband/FTC-Wallet-Layout-ExamplesFeathercoin wallet overveiw with White background image & Forum Blue Logo
There is a resource directory with the current graphics files from Feathercoin/src/qt/res/images including any new or possible options.
-
Love that new look. It looks cleaner.
How about have a few colours and have the user pick their fav. The default one should be blue and matching the forum…that matching idea was a great idea.
If you can use the forum icons in the wallet as well or get an icon set together and use them for both ?
Exciting time ahead !!!
-
You can find the standard graphics and vector versions here :
Feathercoin Graphics and Logos : https://www.feathercoin.com/feathercoin-graphic-resources/
I’ve added a new section to the Wallet guide to point to external features such as graphics :
Links, External features and further information
Feathercoin forum : find support
http://forum.feathercoin.com/category/18/support
Feathercoin Block Explorer
http://explorer.feathercoin.com/chain/Feathercoin
Feathercoin API
The Feathercoin API is a set of function calls you can make to the Feathercoin server to return the status of various parameters, such as difficult, block height
https://www.feathercoin.com/feathercoin-api/
Using Feathercoin with other Cryptographic currencies, pchMessageStart
In most circumstance, alternative currencies coexist on a system by their name and the port they communicate on. When exchanges or pools deal with multiple currencies they can use pchMessageStart to destinguish between them.
Feathercoin was originally forked from the Litecoin project and shared the same pchMessageStart. in order to identify Feathercoin a second pchMassageStart was added which Feathercoin will use preferentially,if given.
Feathercoin specific pchMessageStart
0xfe 0x46 0x54 0x43
Feathercoin Graphics and Logos
https://www.feathercoin.com/feathercoin-graphic-resources/
Feathercoin Merchent tools
Website Button generator.
https://www.feathercoin.com/feathercoin-button-generator/
Broadcast Transaction Service
Feathercoin Broadcast Transaction Service :
block.ftc-c.com/tx/send
If you wish to accelerate a transaction getting onto the blockchain or it is a stealth transaction, you may wish to us the Broadcast service.
How to use the broadcast service :
First Step : Find your transaction binary code :
feathercoind.exe getrawtransaction 53519a8f97038728a72a80bcc4d07919165617deb2142e588a9dca6e95d43043 0100000002c2936c0ccf2b2ab10740ee769ac10739da513d508f500e7ec9294617d62a94c2000000006a473044022002ed821998221aebc12bb994c00a8f9e6a6d8132ef0ae0d237dc31b01c54be6a022027d574128ac65ea1ec25a37c715bddba15f4827980b11ad6246bc933a50785f6012102c5a97cc1094c30da8351d5b288b7c89e375361eef6c947e7f671c26f9a6e3a3bffffffff2de0b2e003f5147ef8152bacacee9a481786a04c5e202fa7f0577fc9cc3b2702000000006b4830450220693e02092dc4eeb53abeaa834c05624f223aa09bb75858607f72b1d41a5ce47902210097075c48ccaa5088c0c563e4334400954bd127580d3753420b79b83d57e3caa6012103652bc983297937e0ceaf72eabad43ea3123333e85430332bcb4da37bcc3e59c7ffffffff0280969800000000001976a914affb568d0a05e0be72b682c7ced6bf2ca064870288ac0000000000000000236a21028726aae1c0ffe6138b70284519f09266f1ab6d7d7e4511f1a1d359045f26d42a00000000
Second Step : Broadcast it :
Go to http://block.ftc-c.com/tx/send copy binary code , click “Send transaction” .
Wait confirmation, until a mining pool makes a block.
Advanced Checkpointing ACP
What is Advanced Checkpointing?
Advanced Checkpointing allows Feathercoin to send out checkpoints without having to release a new version Feathercoin software. This works by having ‘master nodes’ which checkpoints each block it sees on the network protecting it from specifically from being double spent.
The ACP checkpointing for Feathercoin has been set at every 5 blocks. ACP does not dictate the blockchain, it provides checkpoints and helps prevent double spends, if the checkpoint is on a short branch it will be rejected.