Forum Home
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular

    [Dev] Documenting Feathercoin Specific Software settings - Part 10

    Technical Development
    1
    37
    7672
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • wrapper
      wrapper Moderators last edited by

      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

      Changed gitignore to ignore compiled binaries : - commit

      https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

      Changed integer types in wallet.cpp and wallet.h to resolve type conflicts in function call.

      src/wallet.cpp

       -    bool SelectSharedCoins(int64 nTargetValue, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, int64& nValueRet, const CCoinControl* coinControl=NULL) const;
      
       +    bool SelectSharedCoins(int64 nTargetValue, std::set<std::pair<const CWalletTx*,unsigned int> >& setCoinsRet, int64_t& nValueRet, const CCoinControl* coinControl=NULL) const;
      

      Code replaced

      1 Reply Last reply Reply Quote 0
      • wrapper
        wrapper Moderators last edited by

        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

        Changed gitignore to ignore compiled binaries : - commit

        https://github.com/FeatherCoin/Feathercoin/commit/83737e90c292f18fe0285677cefbd70125492e1a

        Changed integer types in wallet.cpp and wallet.h to resolve type conflicts in function call.

        .gitignore

         +src/feathercoin
         +src/feathercoind
         +src/feathercoin-cli
        

        Typo corrected

        1 Reply Last reply Reply Quote 0
        • wrapper
          wrapper Moderators last edited by wrapper

          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

          Plugin and base40 encode : - commit

          https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

          src/Makefile.am

           +  base40.h \
          

          Code added

          1 Reply Last reply Reply Quote 0
          • wrapper
            wrapper Moderators last edited by

            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

            Plugin and base40 encode : - commit

            https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

            src/base40.h

            Copyright not included.

             +/* Encode strings as base40.
             +   Lizhi
             +*/
             +
             +#ifndef FEATHERCOIN_BASE40_H
             +#define FEATHERCOIN_BASE40_H
             +
             +#include <stdint.h>
             +#include <stdio.h>
             +#include <string>
             +#include <string.h>
             +#include <cctype>
             +#include <iostream>
             +
             +#include <sstream>
             +#include <algorithm>
             +
             +static const char* pszBase40 = "0123456789abcdefghijklmnopqrstuvwxyz-_.+";
             +static const char* pszBase16 = "0123456789abcdef";
             +
             +
             +//Turn a string into a non-negative integer.
             +uint64_t charset_to_int(const unsigned char* pbegin, const unsigned char* pend)
             +{
             +	uint64_t output = 0;
             +	while (pbegin != pend)
             +	{
             +		const char *ch = strchr(pszBase40, *pbegin);
             +		if (ch == NULL)
             +            return 404;
             +		int carry = ch - pszBase40; //indexof
             +		output = output * strlen(pszBase40) + carry;
             +		pbegin++;
             +	}
             +	return output;
             +}
             +
             +void i64tohex(uint64_t n,char *s)
             +{
             +    char base[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
             +    uint64_t a = n;
             +    int i = 0;
             +    while(a != 0)
             +    {
             +        s[i++] = base[a%16];
             +        a/=16;
             +    }
             +}
             +
             +//Turn a non-negative integer into a string.
             +std::string int_to_charset(uint64_t val)
             +{
             +	if (val < 0)	 return "ERROR";
             +	if (val == 0)	 return "0";
             +		 
             +	std::string output;
             +	char a[80] = {0};
             +	i64tohex(val,a);
             +	std::string tmp;
             +	tmp.assign(a);
             +	
             +	const char *s1 = tmp.c_str();
             +	char b[80] = {0};
             +	int p=0;
             +	for (int i=(strlen(s1)-1);i>=0;i--)
             +	{
             +			b[p]=a[i];
             +			p++;
             +	}
             +	
             +	output.assign(b);
             +	return output;
             +}
             +
             +std::string hexpad(std::string val)
             +{
             +	std::string output="0";
             +	if ((val.length()%2)==1)
             +	{
             +		output=output+val;
             +		return output;
             +	}
             +	else
             +	{
             +		return val;
             +	}
             +}
             +
             +std::string charset_to_hex(const std::vector<unsigned char>& vch)
             +{
             +	uint64_t intermediate_integer=charset_to_int(&vch[0],&vch[0] + vch.size());
             +	
             +	std::string output;
             +	output=int_to_charset(intermediate_integer);
             +	output=hexpad(output);
             +	return output;
             +}
             +
             +
             +
             +
             +
             +void unhexlify(const std::string &hex, std::vector<unsigned char> &bytes)
             +{
             +  for (std::size_t i = 0; i < hex.size(); i += 2)
             +  {
             +    int byte;
             +    std::stringstream ss;
             +    ss << std::hex << hex[i] << hex[i + 1];
             +    ss >> byte;
             +    bytes.push_back(byte);
             +  }
             +}
             +
             +std::string unhexlify(std::string inData)
             +{
             +	std::vector<unsigned char> vch;
             +	unhexlify(inData,vch);
             +	
             +	std::string output(vch.begin(),vch.end());	
             +	return output;
             +}
             +
             +
             +
             +#endif // FEATHERCOIN_BASE40_H 
            

            Code added 126 lines new code

            1 Reply Last reply Reply Quote 0
            • wrapper
              wrapper Moderators last edited by

              Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

              Plugin and base40 encode : - commit

              https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

              src/bitcoin-config.h

               -/* Define to 1 libzxing must be available for support */
               -#define USE_ZXING 1
              
               +/* Define to 0 libzxing must be available for support */
               +#define USE_ZXING 0
              

              Code replaced

              1 Reply Last reply Reply Quote 0
              • wrapper
                wrapper Moderators last edited by wrapper

                Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                plugin and base40 encode : - commit

                https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                src/chainparams.cpp

                 -	0xc49c0ed8, 0x1df9d243, 0xd9b75a40, 0xdc525e46, 0x72c321b1, 0x4eedeeb2, 0x18271787, 0xce725232,
                
                 +    0xc49c0ed8, 0x1df9d243, 0xd9b75a40, 0xdc525e46, 0x72c321b1, 0x4eedeeb2, 0x18271787, 0xce725232,
                

                Code replaced

                 +        vSeeds.push_back(CDNSSeedData("feathercoin.com", "dnsseed.feathercoin.com"));
                

                Code added

                 +        vSeeds.push_back(CDNSSeedData("feathercoin.com", "testnet-dnsseed.feathercoin.com"));
                

                Code added

                1 Reply Last reply Reply Quote 0
                • wrapper
                  wrapper Moderators last edited by wrapper

                  Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                  plugin and base40 encode : - commit

                  https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                  src/clientversion.h

                    // Copyright year (2009-this)
                    // Todo: update this when changing our copyright comments in the source
                  
                     -#define COPYRIGHT_YEAR 2014
                  
                     +#define COPYRIGHT_YEAR 2015
                  

                  Code replaced

                  1 Reply Last reply Reply Quote 0
                  • wrapper
                    wrapper Moderators last edited by

                    Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                    plugin and base40 encode : - commit

                    https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                    src/key.cpp

                    ACP code updated

                     +std::vector<unsigned char> CKey::GetPubKeyU(bool fCompressed) const 
                     +{
                     +    if (fCompressed)
                     +        EC_KEY_set_conv_form(pkey, POINT_CONVERSION_COMPRESSED);
                     +    else
                     +        EC_KEY_set_conv_form(pkey, POINT_CONVERSION_UNCOMPRESSED);
                     +
                     +    int nSize = i2o_ECPublicKey(pkey, NULL);
                     +    std::vector<unsigned char> pubKey(nSize, 0);
                     +    unsigned char* pBegin = &pubKey[0];
                     +    i2o_ECPublicKey(pkey, &pBegin);
                     +    return pubKey;
                     +}
                     +
                    
                    
                     +}
                    

                    Code added

                     +    std::vector<unsigned char> GetPubKeyU(bool fCompressed = false) const;
                    
                    • }

                    Code added

                     -//for 0.8.7 ACP
                     -bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
                     -{
                     -    // All modifications to the coin state will be done in this cache.
                     -    // Only when all have succeeded, we push it to pcoinsTip.
                     -    CCoinsViewCache view(*pcoinsTip, true);
                     -    
                     -    // Find the fork (typically, there is none)
                     -    uint256 hashfork = view.GetBestBlock();
                     -    CBlockIndex* pfork = mapBlockIndex.find(hashfork)->second;
                     -    CBlockIndex* plonger = pindexNew;
                     -    while (pfork && pfork != plonger)
                     -    {
                     -        while (plonger->nHeight > pfork->nHeight) {
                     -            plonger = plonger->pprev;
                     -            assert(plonger != NULL);
                     -        }
                     -        if (pfork == plonger)
                     -            break;
                     -        pfork = pfork->pprev;
                     -        assert(pfork != NULL);
                     -    }
                     -    
                     -    // List of what to disconnect (typically nothing)
                     -    vector<CBlockIndex*> vDisconnect;
                     -    for (CBlockIndex* pindex = mapBlockIndex.find(hashfork)->second; pindex != pfork; pindex = pindex->pprev)
                     -        vDisconnect.push_back(pindex);
                     -    
                     -    // List of what to connect (typically only pindexNew)
                     -    vector<CBlockIndex*> vConnect;
                     -    for (CBlockIndex* pindex = pindexNew; pindex != pfork; pindex = pindex->pprev)
                     -        vConnect.push_back(pindex);
                     -    reverse(vConnect.begin(), vConnect.end());
                     -    
                     -    if (vDisconnect.size() > 0) {
                     -        LogPrintf("REORGANIZE: Disconnect %"PRIszu" blocks; %s..\n", vDisconnect.size(), pfork->GetBlockHash().ToString().c_str());
                     -        LogPrintf("REORGANIZE: Connect %"PRIszu" blocks; ..%s\n", vConnect.size(), pindexNew->GetBlockHash().ToString().c_str());
                     -    }
                     -    
                     -    // Disconnect shorter branch
                     -    vector<CTransaction> vResurrect;
                     -    BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) {
                     -        CBlock block;
                     -        //if (!block.ReadFromDisk(pindex))
                     -        if (!ReadBlockFromDisk(block, pindex))
                     -            return state.Abort(_("Failed to read block"));
                     -        int64 nStart = GetTimeMicros();
                     -        //if (!block.DisconnectBlock(state, pindex, view))
                     -        bool fClean = true;
                     -        if (!DisconnectBlock(block, state, pindex, view, &fClean))
                     -            return error("SetBestBlock() : DisconnectBlock %s failed", pindex->GetBlockHash().ToString().c_str());
                     -        if (fBenchmark)
                     -            LogPrintf("- Disconnect: %.2fms\n", (GetTimeMicros() - nStart) * 0.001);
                     -
                     -        // Queue memory transactions to resurrect.
                     -        // We only do this for blocks after the last checkpoint (reorganisation before that
                     -        // point should only happen with -reindex/-loadblock, or a misbehaving peer.
                     -        BOOST_FOREACH(const CTransaction& tx, block.vtx)
                     -            if (!tx.IsCoinBase() && pindex->nHeight > Checkpoints::GetTotalBlocksEstimate())
                     -                vResurrect.push_back(tx);
                     -    }
                     -    
                     -    // Connect longer branch
                     -    vector<CTransaction> vDelete;
                     -    BOOST_FOREACH(CBlockIndex *pindex, vConnect) {
                     -        CBlock block;
                     -        //if (!block.ReadFromDisk(pindex))
                     -        if (!ReadBlockFromDisk(block, pindex))
                     -            return state.Abort(_("Failed to read block"));
                     -        int64 nStart = GetTimeMicros();
                     -        //if (!block.ConnectBlock(state, pindex, view)) {
                     -        if (!ConnectBlock(block, state, pindex, view)) {
                     -            if (state.IsInvalid()) {
                     -                InvalidChainFound(pindexNew);
                     -                InvalidBlockFound(pindex,state);
                     -            }
                     -            return error("SetBestBlock() : ConnectBlock %s failed", pindex->GetBlockHash().ToString().c_str());
                     -        }
                     -        if (fBenchmark)
                     -            LogPrintf("- Connect: %.2fms\n", (GetTimeMicros() - nStart) * 0.001);
                     -
                     -        // Queue memory transactions to delete
                     -        BOOST_FOREACH(const CTransaction& tx, block.vtx)
                     -            vDelete.push_back(tx);
                     -    }
                     -    
                     -    // Flush changes to global coin state
                     -    int64 nStart = GetTimeMicros();
                     -    int nModified = view.GetCacheSize();
                     -    assert(view.Flush());
                     -    int64 nTime = GetTimeMicros() - nStart;
                     -    if (fBenchmark)
                     -        LogPrintf("- Flush %i transactions: %.2fms (%.4fms/tx)\n", nModified, 0.001 * nTime, 0.001 * nTime / nModified);    
                     -    
                     -    // Make sure it's successfully written to disk before changing memory structure
                     -    bool fIsInitialDownload = IsInitialBlockDownload();
                     -    if (!fIsInitialDownload || pcoinsTip->GetCacheSize() > nCoinCacheSize) {
                     -        // Typical CCoins structures on disk are around 100 bytes in size.
                     -        // Pushing a new one to the database can cause it to be written
                     -        // twice (once in the log, and once in the tables). This is already
                     -        // an overestimation, as most will delete an existing entry or
                     -        // overwrite one. Still, use a conservative safety factor of 2.
                     -        if (!CheckDiskSpace(100 * 2 * 2 * pcoinsTip->GetCacheSize()))
                     -            return state.Error();
                     -        FlushBlockFile();
                     -        pblocktree->Sync();
                     -        if (!pcoinsTip->Flush())
                     -            return state.Abort(_("Failed to write to coin database"));
                     -    }
                     -    
                     -    // At this point, all changes have been done to the database.
                     -    // Proceed by updating the memory structures.
                     -
                     -    // Disconnect shorter branch
                     -    BOOST_FOREACH(CBlockIndex* pindex, vDisconnect)
                     -        if (pindex->pprev)
                     -            pindex->pprev->pnext = NULL;
                     -
                     -    // Connect longer branch
                     -    BOOST_FOREACH(CBlockIndex* pindex, vConnect)
                     -        if (pindex->pprev)
                     -            pindex->pprev->pnext = pindex;
                     -
                     -    // Resurrect memory transactions that were in the disconnected branch
                     -    BOOST_FOREACH(CTransaction& tx, vResurrect) {
                     -        // ignore validation errors in resurrected transactions
                     -        CValidationState stateDummy;
                     -        /*if (!tx.AcceptToMemoryPool(stateDummy, true, false))
                     -            mempool.remove(tx, true);*/
                     -        list<CTransaction> removed;
                     -        if (!AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL))
                     -            mempool.remove(tx, removed, true);            
                     -    }
                     -
                     -    // Delete redundant memory transactions that are in the connected branch
                     -    list<CTransaction> txConflicted;
                     -    BOOST_FOREACH(CTransaction& tx, vDelete) {
                     -        //mempool.remove(tx);
                     -        //mempool.removeConflicts(tx);
                     -        list<CTransaction> removed;
                     -        mempool.remove(tx, removed);
                     -        mempool.removeConflicts(tx, txConflicted);
                     -    }
                     -    
                     -    LogPrintf("SetTip and UpdateTip.pindexNew=%i\n",pindexNew->nHeight);    
                     -    UpdateTip(pindexNew);
                     -    	
                     -    std::string strCmd = GetArg("-blocknotify", "");
                     -
                     -    if (!fIsInitialDownload && !strCmd.empty())
                     -    {
                     -        boost::replace_all(strCmd, "%s", hashBestChain.GetHex());
                     -        boost::thread t(runCommand, strCmd); // thread runs free
                     -    }  
                     -    
                     -    return true;
                     -}
                     -
                    

                    Code deleted then reinserted - needs checking

                     +//for 0.8.7 ACP
                     +bool SetBestChain(CValidationState &state, CBlockIndex* pindexNew)
                     +{
                     +    LOCK(cs_main);
                     +    CBlockIndex *pindexOldTip = chainActive.Tip();
                     +    bool fComplete = false;
                     +    while (!fComplete) {
                     +        FindMostWorkChain();
                     +        fComplete = true;
                     +
                     +        // Check whether we have something to do.
                     +        if (chainMostWork.Tip() == NULL) break;
                     +
                     +        // Disconnect active blocks which are no longer in the best chain.
                     +        while (chainActive.Tip() && !chainMostWork.Contains(chainActive.Tip())) {
                     +            if (!DisconnectTip(state))
                     +                return false;
                     +        }
                     +
                     +        // Connect new blocks.
                     +        while (!chainActive.Contains(chainMostWork.Tip())) {
                     +            CBlockIndex *pindexConnect = chainMostWork[chainActive.Height() + 1];
                     +            //if (!ConnectTip(state, pindexConnect)) {
                     +            if (!ConnectTip(state, pindexNew)) {
                     +                if (state.IsInvalid()) {
                     +                    // The block violates a consensus rule.
                     +                    if (!state.CorruptionPossible())
                     +                        InvalidChainFound(chainMostWork.Tip());
                     +                    fComplete = false;
                     +                    state = CValidationState();
                     +                    break;
                     +                } else {
                     +                    // A system error occurred (disk space, database error, ...).
                     +                    return false;
                     +                }
                     +            }
                     +        }
                     +    }
                     +
                     +    if (chainActive.Tip() != pindexOldTip) {
                     +        std::string strCmd = GetArg("-blocknotify", "");
                     +        if (!IsInitialBlockDownload() && !strCmd.empty())
                     +        {
                     +            boost::replace_all(strCmd, "%s", chainActive.Tip()->GetBlockHash().GetHex());
                     +            boost::thread t(runCommand, strCmd); // thread runs free
                     +        }
                     +    }
                     +
                     +    return true;
                     +}
                     +
                    

                    ACP code added,

                    1 Reply Last reply Reply Quote 0
                    • wrapper
                      wrapper Moderators last edited by

                      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                      plugin and base40 encode : - commit

                      https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                      src/main.h

                       +static const char* OPENNAME_MAGIC_BYTES_MAINSET="08";
                       +static const char* OPENNAME_NAME_PREORDER="a";
                       +static const char* OPENNAME_NAME_REGISTRATION="b";
                       +static const char* OPENNAME_NAME_UPDATE="c";
                       +static const char* OPENNAME_NAME_TRANSFER="d";
                       +static const char* OPENNAME_NAME_RENEWAL="e";
                       +
                       +
                      

                      Code added

                      1 Reply Last reply Reply Quote 0
                      • wrapper
                        wrapper Moderators last edited by

                        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                        plugin and base40 encode : - commit

                        https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                        src/qt/Makefile.am

                         +  forms/coinnectordialog.ui \
                        
                         +  forms/opennamedialog.ui \
                        
                         +  moc_coinnectordialog.cpp \
                        
                         +  coinnectordialog.h \
                        
                         +  coinnectordialog.cpp \
                        

                        Code added

                        1 Reply Last reply Reply Quote 0
                        • wrapper
                          wrapper Moderators last edited by wrapper

                          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                          plugin and base40 encode : - commit

                          https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                          src/qt/addressbookpage.cpp

                           -    QAction *copyPriKeyAction = new QAction(tr("Copy Private Key"), this);
                          
                           +    QAction *copyPriKeyAction = new QAction(tr("Copy P&rivate Key"), this);
                           +    QAction *copySecretAction = new QAction(tr("Copy Public &Hash160"), this);
                          

                          Code replaced

                           +        contextMenu->addAction(copySecretAction);
                          
                           +    connect(copySecretAction, SIGNAL(triggered()), this, SLOT(on_copySecKey_clicked()));
                          

                          Code added

                           +void AddressBookPage::on_copySecKey_clicked()
                           +{
                           +    //hash160 = FeathercoinPrivateKey(private_key).public_key().hash160()
                           +    LogPrintf("addressbookpage...........................\n");
                           +    //CWallet* pwalletMain; init.cpp
                           +    QModelIndexList selection = ui->tableView->selectionModel()->selectedRows(AddressTableModel::Address);
                           +    if(!selection.isEmpty())
                           +    {
                           +        QString addrStr = selection.at(0).data(Qt::EditRole).toString();
                           +        LogPrintf("addressbookpage public_address=%s\n",addrStr.toStdString());//6zdaoWaNBND4KPTR49rqoGFTyHgwGzAf81
                           +        
                           +        CBitcoinAddress address(addrStr.toStdString());
                           +        CKeyID keyID; //the Hash160 of its serialized public key
                           +        if ( !address.GetKeyID(keyID) )
                           +        {
                           +            QMessageBox::warning(this, windowTitle(),
                           +                tr("Address \"%1\" doesn't have public key ").arg(addrStr),
                           +                QMessageBox::Ok, QMessageBox::Ok);
                           +            return;
                           +        }
                           +        LogPrintf("addressbookpage CKeyID=%s\n", keyID.ToString());//82c35d4284907f248746f6b21f7aafed86d63ee5
                           +        
                           +        //FeathercoinPrivateKey(private_key)
                           +        CSecret vchSecret;
                           +	      bool fCompressed=false;
                           +	      if (!pwalletMain->GetSecret(keyID, vchSecret, fCompressed))
                           +	      {
                           +	          QMessageBox::warning(this, windowTitle(),
                           +	              tr("Address \"%1\" doesn't have private key ").arg(addrStr),
                           +	              QMessageBox::Ok, QMessageBox::Ok);
                           +	          return;
                           +	      }
                           +        LogPrintf("addressbookpage vchSecret=%s\n", HexStr(vchSecret).c_str());//e2ee135cc175081810bbaa603df551f657c8e8a37aca1321883fc588022f95d6
                           +        	
                           +        //FeathercoinPrivateKey(private_key).public_key()
                           +        CPubKey vchPubKey;
                           +        if ( !pwalletMain->GetPubKey(keyID, vchPubKey))
                           +        {
                           +            QMessageBox::warning(this, windowTitle(),
                           +                tr("Address \"%1\" doesn't have public key ").arg(addrStr),
                           +                QMessageBox::Ok, QMessageBox::Ok);
                           +            return;
                           +        }
                           +        //GUIUtil::setClipboard(QString::fromStdString(HexStr(vchPubKey)));
                           +        LogPrintf("addressbookpage vchPubKey=%s\n", HexStr(vchPubKey).c_str());//02edb297ba63c35998ec23cfca60666bb4d0d1c3e810b93d2d20c94e3a12977440
                           +        
                           +        //FeathercoinPrivateKey(private_key).public_key().hash160()
                           +        LogPrintf("addressbookpage hash160,vchPubKey.GetID()=%s\n", HexStr(vchPubKey.GetID()).c_str());//e53ed686edaf7a1fb2f64687247f9084425dc382
                           +        
                           +        //FeathercoinPrivateKey(private_key).public_key()
                           +        CKey key;
                           +        fCompressed=false;
                           +        key.SetSecret(vchSecret, fCompressed);
                           +        std::vector<unsigned char> uret=key.GetPubKeyU(fCompressed);
                           +        LogPrintf("addressbookpage unCompressedPubKey =%s\n", HexStr(uret).c_str());//04edb297ba63c35998ec23cfca60666bb4d0d1c3e810b93d2d20c94e3a129774407b719ecf902de8a20c6d99ed0ad0d8c5af178640fdcb0c5dee26c41d39306998
                           +        
                           +        //FeathercoinPrivateKey(private_key).public_key().hash160()
                           +        CKeyID unkeyID=CKeyID(Hash160(uret)); 
                           +        LogPrintf("addressbookpage hash160,unCompressedPubKey=%s\n", HexStr(unkeyID).c_str());//6f01b45dd6685d5ac1717baa46e4cda8287c160b
                           +        GUIUtil::setClipboard(HexStr(unkeyID).c_str());
                           +        
                           +        //unCompressed address
                           +        LogPrintf("addressbookpage address, unPubKey=%s\n",CBitcoinAddress(unkeyID).ToString());
                           +    }
                           +}
                           +
                          

                          Code added

                          1 Reply Last reply Reply Quote 0
                          • wrapper
                            wrapper Moderators last edited by

                            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                            plugin and base40 encode : - commit

                            https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                            src/qt/addressbookpage.h

                             +    /** Copy a serialization of just the secret parameter (32 bytes) to clipboard */
                            
                             +    void on_copySecKey_clicked();
                            

                            Code added

                            1 Reply Last reply Reply Quote 0
                            • wrapper
                              wrapper Moderators last edited by

                              Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                              plugin and base40 encode : - commit

                              https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                              src/qt/bitcoingui.cpp

                               +#include "coinnectordialog.h"
                              
                               +    opennameAction = new QAction(QIcon(":/icons/openname"), tr("&Openname"), this);
                               +    opennameAction->setStatusTip(tr("Your identity and reputation in blockchain"));
                              

                              Code added

                               +    coinnectorAction = new QAction(QIcon(":/icons/coinnector"), tr("Coinnector..."), this);
                               +    coinnectorAction->setStatusTip(tr("Exchange other coins whit your feathercoin on Coinnector"));
                               +    coinnectorAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_9));
                              

                              Code added

                                -    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
                              
                               +    //connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
                               +    connect(quitAction, SIGNAL(triggered()), walletFrame, SLOT(backupquitWallet()));
                              + 
                              

                              Code replaced / commented out

                                +        connect(coinnectorAction, SIGNAL(triggered()), this, SLOT(openCoinnectorClicked()));
                              
                               +        connect(opennameAction, SIGNAL(triggered()), walletFrame, SLOT(opennameClicked()));
                              

                              Code added

                               +        advanced->addAction(opennameAction);
                              
                               +        plugins->addAction(coinnectorAction);
                              
                               +    coinnectorAction->setEnabled(enabled);
                              
                               +    opennameAction->setEnabled(enabled);
                              

                              Code added

                               +void BitcoinGUI::openCoinnectorClicked()
                               +{
                               +    if(!clientModel || !clientModel->getOptionsModel())
                               +        return;
                               +
                               +    CoinnectorDialog dlg(this);
                               +    dlg.setModel(clientModel->getOptionsModel());
                               +    dlg.exec();
                               +}
                               +
                              

                              Code added

                               -{
                              +{		
                               if(clientModel)
                               {
                              
                               +    	//if (walletFrame) walletFrame->backupWallet();
                              

                              Bracket change to Q_OS_MAC exception

                                 void BitcoinGUI::detectShutdown()
                               -{
                              
                              +{			
                               if (ShutdownRequested())
                               {
                              
                              +        //if (walletFrame) walletFrame->backupWallet();
                              +	
                              

                              Comment out code - alter code bracketing

                              1 Reply Last reply Reply Quote 0
                              • wrapper
                                wrapper Moderators last edited by

                                Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                plugin and base40 encode : - commit

                                https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                src/qt/bitcoingui.h

                                 +    QAction *opennameAction;
                                
                                 +    QAction *coinnectorAction;
                                
                                 +    /** Visit Coinnector' API */
                                

                                Coinnector code added

                                1 Reply Last reply Reply Quote 0
                                • wrapper
                                  wrapper Moderators last edited by

                                  Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                  plugin and base40 encode : - commit

                                  https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                  src/qt/bitcoinstrings.cpp

                                   -QT_TRANSLATE_NOOP("bitcoin-core", "SSL options: (see the Bitcoin Wiki for SSL setup instructions)"),
                                  
                                   +QT_TRANSLATE_NOOP("bitcoin-core", "SSL options: (see the Feathercoin Wiki for SSL setup instructions)"),
                                  

                                  Code replaced

                                  1 Reply Last reply Reply Quote 0
                                  • wrapper
                                    wrapper Moderators last edited by

                                    Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                    plugin and base40 encode : - commit

                                    https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                    src/qt/coinnectordialog.cpp

                                    Large new file, 283 lines code

                                     +// Copyright (c) 2011-2013 The Bitcoin developers
                                     +// Distributed under the MIT/X11 software license, see the accompanying
                                     +// file COPYING or http://www.opensource.org/licenses/mit-license.php.
                                     +
                                     +#if defined(HAVE_CONFIG_H)
                                     +#include "bitcoin-config.h"
                                     +#endif
                                     +
                                     +#include "coinnectordialog.h"
                                     +#include "ui_coinnectordialog.h"
                                     +
                                     +#include "bitcoinunits.h"
                                     +#include "guiutil.h"
                                     +#include "monitoreddatamapper.h"
                                     +#include "optionsmodel.h"
                                     +
                                     +#include "main.h" // for CTransaction::nMinTxFee and MAX_SCRIPTCHECK_THREADS
                                     +#include "netbase.h"
                                     +#include "txdb.h" // for -dbcache defaults
                                     +
                                     +#include <QDir>
                                     +#include <QIntValidator>
                                     +#include <QLocale>
                                     +#include <QMessageBox>
                                     +#include <QTimer>
                                     +#include <QNetworkReply>
                                     +#include <QNetworkRequest>
                                     +#include <QJsonObject>
                                     +#include <QJsonArray>
                                     +#include <QJsonDocument>
                                     +#include <QByteArray>
                                     +#include <QDateTime>
                                     +#include <QStandardItemModel>
                                     +#include <QDesktopServices>
                                     +#include <QUrl>
                                     +
                                     +CoinnectorDialog::CoinnectorDialog(QWidget *parent) :
                                     +    QDialog(parent),
                                     +    ui(new Ui::CoinnectorDialog),
                                     +    model(0),
                                     +    mapper(0),
                                     +    fProxyIpValid(true)
                                     +{
                                     +    ui->setupUi(this);
                                     +    GUIUtil::restoreWindowGeometry("nCoinnectorDialogWindow", this->size(), this);
                                     +       
                                     +    ui->label_6->installEventFilter(this);
                                     +    ui->tableView->installEventFilter(this);
                                     +
                                     +		manager = new QNetworkAccessManager(this); 
                                     +		connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
                                     +		manager->get(QNetworkRequest(QUrl("https://coinnector.com/API/ticker/")));
                                     +
                                     +    /* Widget-to-option mapper */
                                     +    mapper = new MonitoredDataMapper(this);
                                     +    mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
                                     +    mapper->setOrientation(Qt::Vertical);
                                     +}
                                     +
                                     +CoinnectorDialog::~CoinnectorDialog()
                                     +{
                                     +    GUIUtil::saveWindowGeometry("nCoinnectorDialogWindow", this);
                                     +    delete ui;
                                     +}
                                     +
                                     +void CoinnectorDialog::replyFinished(QNetworkReply *reply)
                                     +{   
                                     +    int sw=0;
                                     +    QByteArray data = reply->readAll();
                                     +    QString result(data);
                                     +    ui->textReplyEdit->setText(result);
                                     +    //{"result":"success","timestamp":1432562645,"BTC_DASH":["81.2366199952",1],"DASH_BTC":["0.0116620098",-1],"BTC_DOGE":["1633333.333333333",0],"DOGE_BTC":["0.0000005782",0],"BTC_FTC":["50943.9640074796",0],"FTC_BTC":["0.0000164383",0],"BTC_LTC":["128.6659808144",-1],"LTC_BTC":["0.0073686355",1],"BTC_NMC":["623.9861305917",1],"NMC_BTC":["0.0013302033",-1],"BTC_PPC":["696.1033450117",-1],"PPC_BTC":["0.0013102915",1],"DASH_DOGE":["19047.9493465333",0],"DOGE_DASH":["0.000046971",0],"DASH_FTC":["594.1090077099",0],"FTC_DASH":["0.0013353946",0],"DASH_LTC":["1.5005039297",-1],"LTC_DASH":["0.5986030454",1],"DASH_NMC":["7.2769323725",1],"NMC_DASH":["0.1080612229",-1],"DASH_PPC":["8.1179640341",-1],"PPC_DASH":["0.1064436502",1],"DOGE_FTC":["0.0294558",0],"FTC_DOGE":["26.8492772333",0],"DOGE_LTC":["0.0000743947",-1],"LTC_DOGE":["12035.4380519333",1],"DOGE_NMC":["0.0003607888",1],"NMC_DOGE":["2172.6654488",-1],"DOGE_PPC":["0.000402487",-1],"PPC_DOGE":["2140.1427343333",1],"FTC_LTC":["0.0021150542",-1],"LTC_FTC":["375.3875038359",1],"FTC_NMC":["0.0102572918",-1],"NMC_FTC":["67.7658308718",1],"FTC_PPC":["0.0114427786",-1],"PPC_FTC":["66.751441487",1],"LTC_NMC":["4.5979263796",1],"NMC_LTC":["0.1711519169",-1],"LTC_PPC":["5.129331849",1],"PPC_LTC":["0.1685899371",-1],"NMC_PPC":["0.9259589917",-1],"PPC_NMC":["0.8176037043",1]}
                                     +    
                                     +		//listModel->setRowCount(6);
                                     +		    
                                     +    QJsonParseError err;  
                                    

                                    Start of new file code

                                    1 Reply Last reply Reply Quote 0
                                    • wrapper
                                      wrapper Moderators last edited by

                                      Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                      plugin and base40 encode : - commit

                                      https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                      src/qt/coinnectordialog.h

                                      New file 69 lines of code

                                       +// Copyright (c) 2011-2013 The Feathercoin developers
                                       +// Distributed under the MIT/X11 software license, see the accompanying
                                       +// file COPYING or http://www.opensource.org/licenses/mit-license.php.
                                       +
                                       +#ifndef COINNECTORDIALOG_H
                                       +#define COINNECTORDIALOG_H
                                       +
                                       +#include <QWidget>
                                       +#include <QDialog>
                                       +#include <QtNetwork>
                                       +
                                       +class MonitoredDataMapper;
                                       +class OptionsModel;
                                       +class QValidatedLineEdit;
                                       +class QStandardItemModel;
                                       +
                                       +namespace Ui {
                                       +class CoinnectorDialog;
                                       +}
                                       +
                                       +/** Preferences dialog. */
                                       +class CoinnectorDialog : public QDialog
                                       +{
                                       +    Q_OBJECT
                                       +
                                       +public:
                                       +    explicit CoinnectorDialog(QWidget *parent);
                                       +    ~CoinnectorDialog();
                                       +
                                       +    void setModel(OptionsModel *model);
                                       +    void setMapper();
                                       +
                                       +protected:
                                       +    bool eventFilter(QObject *object, QEvent *event);
                                       +
                                       +private slots:
                                       +    /* enable OK button */
                                       +    void enableOkButton();
                                       +    /* disable OK button */
                                       +    void disableOkButton();
                                       +    /* set OK button state (enabled / disabled) */
                                       +    void setOkButtonState(bool fState);
                                       +    void on_resetButton_clicked();
                                       +    void on_okButton_clicked();
                                       +    void on_cancelButton_clicked();
                                       +    void on_txStatButton_clicked();
                                       +    void on_postTransButton_clicked();
                                       +    void on_postFixButton_clicked();
                                       +    void on_pushButton_clicked();
                                       +
                                       +    void showRestartWarning(bool fPersistent = false);
                                       +    void clearStatusLabel();
                                       +    void updateDisplayUnit();
                                       +    void doProxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort);
                                       +    void replyFinished(QNetworkReply *);
                                       +
                                       +signals:
                                       +    void proxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort);
                                       +
                                       +private:
                                       +    Ui::CoinnectorDialog *ui;
                                       +    OptionsModel *model;
                                       +    MonitoredDataMapper *mapper;
                                       +    bool fProxyIpValid;
                                       +    QNetworkAccessManager *manager;
                                       +    QStandardItemModel *listModel; 
                                       +};
                                       +
                                       +#endif // COINNECTORDIALOG_H
                                      

                                      Code added new file

                                      1 Reply Last reply Reply Quote 0
                                      • wrapper
                                        wrapper Moderators last edited by

                                        Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                        plugin and base40 encode : - commit

                                        https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                        src/qt/feathercoin.qrc

                                         +        <file alias="coinnector">res/icons/coinnector.png</file>
                                        
                                         +        <file alias="coinnector">res/icons/coinnector.png</file>
                                        

                                        Code added

                                        1 Reply Last reply Reply Quote 0
                                        • wrapper
                                          wrapper Moderators last edited by wrapper

                                          Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                          plugin and base40 encode : - commit

                                          https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                          src/qt/forms/coinnectordialog.ui

                                          New file to define coinnector ,ui 108 lines of code

                                           +<?xml version="1.0" encoding="UTF-8"?>
                                           +<ui version="4.0">
                                           + <class>CoinnectorDialog</class>
                                           + <widget class="QDialog" name="CoinnectorDialog">
                                           +  <property name="geometry">
                                           +   <rect>
                                           +    <x>0</x>
                                           +    <y>0</y>
                                           +    <width>560</width>
                                           +    <height>428</height>
                                           +   </rect>
                                           +  </property>
                                           +  <property name="windowTitle">
                                           +   <string>Coinnector</string>
                                           +  </property>
                                           +  <property name="modal">
                                           +   <bool>true</bool>
                                           +  </property>
                                           +  <layout class="QVBoxLayout" name="verticalLayout">
                                           +   <item>
                                           +    <widget class="QFrame" name="frame">
                                           +     <property name="frameShadow">
                                           +      <enum>QFrame::Raised</enum>
                                           +     </property>
                                           +     <layout class="QVBoxLayout" name="verticalLayout_Bottom">
                                           +      <item>
                                           +       <widget class="QTableView" name="tableView"/>
                                           +      </item>
                                           +     </layout>
                                           +    </widget>
                                           +   </item>
                                           +   <item>
                                           +    <layout class="QHBoxLayout" name="horizontalLayout_Buttons">
                                           +     <item>
                                           +      <spacer name="horizontalSpacer_1">
                                           +       <property name="orientation">
                                           +        <enum>Qt::Horizontal</enum>
                                           +       </property>
                                           +       <property name="sizeHint" stdset="0">
                                           +        <size>
                                           +         <width>40</width>
                                           +         <height>48</height>
                                           +        </size>
                                           +       </property>
                                           +      </spacer>
                                           +     </item>
                                           +     <item>
                                           +      <widget class="QLineEdit" name="textReplyEdit">
                                           +       <property name="text">
                                           +        <string/>
                                           +       </property>
                                           +      </widget>
                                           +     </item>
                                           +     <item>
                                           +      <widget class="QLabel" name="label_6">
                                           +       <property name="font">
                                           +        <font>
                                           +         <underline>true</underline>
                                           +        </font>
                                           +       </property>
                                           +       <property name="cursor">
                                           +        <cursorShape>PointingHandCursor</cursorShape>
                                           +       </property>
                                           +       <property name="text">
                                           +        <string>Connect  Coinnector API (experts only!)</string>
                                           +       </property>
                                           +      </widget>
                                           +     </item>
                                           +     <item>
                                           +      <layout class="QHBoxLayout" name="horizontalLayout"/>
                                           +     </item>
                                           +     <item>
                                           +      <widget class="QPushButton" name="pushButton">
                                           +       <property name="text">
                                           +        <string>Refresh</string>
                                           +       </property>
                                           +      </widget>
                                           +     </item>
                                           +     <item>
                                           +      <spacer name="horizontalSpacer_2">
                                           +       <property name="orientation">
                                           +        <enum>Qt::Horizontal</enum>
                                           +       </property>
                                           +       <property name="sizeHint" stdset="0">
                                           +        <size>
                                           +         <width>40</width>
                                          

                                          Start of new file code

                                          1 Reply Last reply Reply Quote 0
                                          • wrapper
                                            wrapper Moderators last edited by wrapper

                                            Feathercoin specific changes made to convert Bitcoin to FTC 0.9.6.*

                                            plugin and base40 encode : - commit

                                            https://github.com/FeatherCoin/Feathercoin/commit/386f5cc1dc3d25bab04c44fc5d84abd269ad8f7b

                                            src/qt/forms/opennamedialog.ui

                                            New file to define opennamedialog 246 lines of code

                                             +<?xml version="1.0" encoding="UTF-8"?>
                                             +<ui version="4.0">
                                             + <class>OpennameDialog</class>
                                             + <widget class="QDialog" name="OpennameDialog">
                                             +  <property name="geometry">
                                             +   <rect>
                                             +    <x>0</x>
                                             +    <y>0</y>
                                             +    <width>556</width>
                                             +    <height>375</height>
                                             +   </rect>
                                             +  </property>
                                             +  <property name="windowTitle">
                                             +   <string>Insert your Opennames into blockchain</string>
                                             +  </property>
                                             +  <widget class="QPushButton" name="insertButton">
                                             +   <property name="geometry">
                                             +    <rect>
                                             +     <x>230</x>
                                            

                                            Start of new file code

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post