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

    [Dev] Documenting Feathercoin Specific Software settings - Part 6

    Technical Development
    1
    50
    9996
    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.*

      Add stealth address : - commit

      https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

      src/script.cpp

       - typedef vector<unsigned char> valtype;
       + //typedef vector<unsigned char> valtype;
      

      Code replaced, commented out?

       +     bool operator()(const CStealthAddress &stxAddr) const
       +     {
       +         return stxAddr.scan_secret.size() == ec_secret_size;
       +     }
      

      Code added stealth address

       +     
       +     void operator()(const CStealthAddress &stxAddr) {
       +         CScript script;        
       +     }
      

      Code added

       +     
       +     bool operator()(const CStealthAddress &stxAddr) const {
       +         script->clear();
       +         //*script << OP_HASH160 << scriptID << OP_EQUAL;
       +         //printf("TODO\n");
       +         return false;
       +     }
      

      Code added

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

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

        Add stealth address : - commit

        https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

        src/script.h

         +#include "stealth.h"
        

        Code added

         - typedef boost::variant<CNoDestination, CKeyID, CScriptID> CTxDestination;
         + typedef boost::variant<CNoDestination, CKeyID, CScriptID, CStealthAddress> CTxDestination;
         + //typedef boost::variant<CNoDestination, CKeyID, CScriptID> CTxDestination;
        

        Code replaced commented out?

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

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

          Add stealth address : - commit

          https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

          src/stealth.cpp

          Large new file, with 683 lines of code

           + // Copyright (c) 2014 The ShadowCoin developers
           + // Distributed under the MIT/X11 software license, see the accompanying
           + // file license.txt or http://www.opensource.org/licenses/mit-license.php.
           + 
           + #include "stealth.h"
           + #include "base58.h"
           + 
           + 
           + #include <openssl/rand.h>
           + #include <openssl/ec.h>
           + #include <openssl/ecdsa.h>
           + #include <openssl/obj_mac.h>
           + 
           + //const uint8_t stealth_version_byte = 0x2a;
           + const uint8_t stealth_version_byte = 0x1d;
           + 
           + 
           + bool CStealthAddress::SetEncoded(const std::string& encodedAddress)
           + {
           +     data_chunk raw;
          

          Start of large new file from ShadowCoin developers ??

           + std::string CStealthAddress::Encoded() const
           + {
           +     // https://wiki.unsystem.net/index.php/DarkWallet/Stealth#Address_format
           +     // [version] [options] [scan_key] [N] ... [Nsigs] [prefix_length] ...
           +     
           +     data_chunk raw;
           +     raw.push_back(stealth_version_byte);
           +     
           +     raw.push_back(options);
           +     
           +     raw.insert(raw.end(), scan_pubkey.begin(), scan_pubkey.end());
           +     raw.push_back(1); // number of spend pubkeys
           +     raw.insert(raw.end(), spend_pubkey.begin(), spend_pubkey.end());
           +     raw.push_back(0); // number of signatures
           +     raw.push_back(0); // ?
           +     
           +     AppendChecksum(raw);
           +     
          

          Referance to DarkWallet, original (DK) code, has it been updated for 0.11? plan for head pick, ssl etc.

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

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

            Add stealth address : - commit

            https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

            src/stealth.h

            Large new file, with 122 lines of code

             + // Copyright (c) 2014 The ShadowCoin developers
             + // Distributed under the MIT/X11 software license, see the accompanying
             + // file license.txt or http://www.opensource.org/licenses/mit-license.php.
             + 
             + #ifndef BITCOIN_STEALTH_H
             + #define BITCOIN_STEALTH_H
             + 
             + #include "util.h"
             + #include "serialize.h"
             + 
             + #include <stdlib.h> 
             + #include <stdio.h> 
             + #include <vector>
             + #include <inttypes.h>
             + 
             + 
             + typedef std::vector<uint8_t> data_chunk;
             + 
             + const size_t ec_secret_size = 32;
             + const size_t ec_compressed_size = 33;
             + const size_t ec_uncompressed_size = 65;
             + 
             + typedef struct ec_secret { uint8_t e[ec_secret_size]; } ec_secret;
             + typedef data_chunk ec_point;
             + 
             + typedef uint32_t stealth_bitfield;
             + 
             + struct stealth_prefix
             + {
             +     uint8_t number_bits;
             +     stealth_bitfield bitfield;
             + };
             + 
             + template <typename T, typename Iterator>
             + T from_big_endian(Iterator in)
             + {
             +     //VERIFY_UNSIGNED(T);
             +     T out = 0;
             +     size_t i = sizeof(T);
             +     while (0 < i)
             +         out |= static_cast<T>(*in     +      + ) << (8 * --i);
             +     return out;
             + }
             + 
             + template <typename T, typename Iterator>
             + T from_little_endian(Iterator in)
             + {
             +     //VERIFY_UNSIGNED(T);
             +     T out = 0;
             +     size_t i = 0;
             +     while (i < sizeof(T))
             +         out |= static_cast<T>(*in     +      + ) << (8 * i     +      + );
             +     return out;
             + }
             + 
             + class CStealthAddress
             + {
             + public:
             +     CStealthAddress()
             +     {
             +         options = 0;
             +     }
             +     
             +     uint8_t options;
             +     ec_point scan_pubkey;
             +     ec_point spend_pubkey;
             +     //std::vector<ec_point> spend_pubkeys;
             +     size_t number_signatures;
             +     stealth_prefix prefix;
             +     
             +     mutable std::string label;
             +     data_chunk scan_secret;
             +     data_chunk spend_secret;
             +     
             +     bool SetEncoded(const std::string& encodedAddress);
             +     std::string Encoded() const;
             +     
             +     bool operator <(const CStealthAddress& y) const
             +     {
             +         return memcmp(&scan_pubkey[0], &y.scan_pubkey[0], ec_compressed_size) < 0;
             +     }
             +     
             +     bool operator == (const CStealthAddress& y) const
             +     {
             +         return (scan_pubkey == y.scan_pubkey) &&
             +                 (spend_pubkey == y.spend_pubkey) &&
             +                 (scan_secret == y.scan_secret) &&
             +                 (spend_secret == y.spend_secret);
             +     }
             +     
             +     IMPLEMENT_SERIALIZE
             +     (
             +         READWRITE(this->options);
             +         READWRITE(this->scan_pubkey);
             +         READWRITE(this->spend_pubkey);
             +         READWRITE(this->label);
             +         
             +         READWRITE(this->scan_secret);
             +         READWRITE(this->spend_secret);
             +     );
             +     
             +     
             + 
             + };
             + 
             + void AppendChecksum(data_chunk& data);
             + 
             + bool VerifyChecksum(const data_chunk& data);
             + 
             + int GenerateRandomSecret(ec_secret& out);
             + 
             + int SecretToPublicKey(const ec_secret& secret, ec_point& out);
             + 
             + int StealthSecret(ec_secret& secret, ec_point& pubkey, const ec_point& pkSpend, ec_secret& sharedSOut, ec_point& pkOut);
             + int StealthSecretSpend(ec_secret& scanSecret, ec_point& ephemPubkey, ec_secret& spendSecret, ec_secret& secretOut);
             + int StealthSharedToSecretSpend(ec_secret& sharedS, ec_secret& spendSecret, ec_secret& secretOut);
             + 
             + bool IsStealthAddress(const std::string& encodedAddress);
             + 
             + 
             + #endif  // BITCOIN_STEALTH_H
             + 
            

            New file include, how to handle going forward?

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

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

              Add stealth address : - commit

              https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

              src/ui_interface.h

               +    /** Ask the user whether they want to pay a fee or not. */
               +    boost::signals2::signal<bool (int64_t nFeeRequired, const std::string& strCaption), boost::signals2::last_value<bool> > ThreadSafeAskFee;
               +    
              

              Code added

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

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

                Add stealth address : - commit

                https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

                src/ui_interface.h

                 +    /** Ask the user whether they want to pay a fee or not. */
                 +    boost::signals2::signal<bool (int64_t nFeeRequired, const std::string& strCaption), boost::signals2::last_value<bool> > ThreadSafeAskFee;
                 +    
                

                Code added

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

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

                  Add stealth address : - commit

                  https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

                  src/wallet.cpp

                  Large number of changes

                   + #if defined(_MSC_VER) || defined(__MSVCRT__)
                   +   /* (s)size_t and ptrdiff_t have the same size specifier in MSVC:
                   +      http://msdn.microsoft.com/en-us/library/tcxf1dw6%28v=vs.100%29.aspx
                   +    */
                   +   #define PRIszx    "Ix"
                   +   #define PRIszu    "Iu"
                   +   #define PRIszd    "Id"
                   +   #define PRIpdx    "Ix"
                   +   #define PRIpdu    "Iu"
                   +   #define PRIpdd    "Id"
                   + #else /* C99 standard */
                   +   #define PRIszx    "zx"
                   +   #define PRIszu    "zu"
                   +   #define PRIszd    "zd"
                   +   #define PRIpdx    "tx"
                   +   #define PRIpdu    "tu"
                   +   #define PRIpdd    "td"
                   + #endif
                   + 
                  

                  Code added

                   + bool CWallet::Lock()
                   + {
                   +     if (IsLocked())
                   +         return true;
                   +     
                   +     if (fDebug)
                   +         printf("Locking wallet.\n");
                   +     
                   +     {
                   +         LOCK(cs_wallet);
                   +         CWalletDB wdb(strWalletFile);
                   +         
                   +         // -- load encrypted spend_secret of stealth addresses
                   +         CStealthAddress sxAddrTemp;
                   +         std::set<CStealthAddress>::iterator it;
                   +         for (it = stealthAddresses.begin(); it != stealthAddresses.end();      +      + it)
                   +         {
                   +             if (it->scan_secret.size() < 32)
                   +                 continue; // stealth address is not owned
                   +             // -- CStealthAddress are only sorted on spend_pubkey
                   +             CStealthAddress &sxAddr = const_cast<CStealthAddress&>(*it);
                   +             if (fDebug)
                   +                 printf("Recrypting stealth key %s\n", sxAddr.Encoded().c_str());
                   +             
                   +             sxAddrTemp.scan_pubkey = sxAddr.scan_pubkey;
                   +             if (!wdb.ReadStealthAddress(sxAddrTemp))
                   +             {
                   +                 printf("Error: Failed to read stealth key from db %s\n", sxAddr.Encoded().c_str());
                   +                 continue;
                   +             }
                   +             sxAddr.spend_secret = sxAddrTemp.spend_secret;
                   +         };
                   +     }
                   +     return LockKeyStore();
                   + };
                  

                  Code added

                   +        UnlockStealthAddresses(vMasterKey);
                  

                  Code added

                   -            if (CCryptoKeyStore::Unlock(vMasterKey))
                   +            if (CCryptoKeyStore::Unlock(vMasterKey)&& UnlockStealthAddresses(vMasterKey))
                  

                  Code replaced

                   +         std::set<CStealthAddress>::iterator it;
                   +         for (it = stealthAddresses.begin(); it != stealthAddresses.end();      +      + it)
                   +         {
                   +             if (it->scan_secret.size() < 32)
                   +                 continue; // stealth address is not owned
                   +             // -- CStealthAddress is only sorted on spend_pubkey
                   +             CStealthAddress &sxAddr = const_cast<CStealthAddress&>(*it);
                   +             
                   +             if (fDebug)
                   +                 printf("Encrypting stealth key %s\n", sxAddr.Encoded().c_str());
                   +             
                   +             std::vector<unsigned char> vchCryptedSecret;
                   +             
                   +             CSecret vchSecret;
                   +             vchSecret.resize(32);
                   +             memcpy(&vchSecret[0], &sxAddr.spend_secret[0], 32);
                   +             
                   +             uint256 iv = Hash(sxAddr.spend_pubkey.begin(), sxAddr.spend_pubkey.end());
                   +             if (!EncryptSecret(vMasterKey, vchSecret, iv, vchCryptedSecret))
                   +             {
                   +                 printf("Error: Failed encrypting stealth key %s\n", sxAddr.Encoded().c_str());
                   +                 continue;
                   +             };
                   +             
                   +             sxAddr.spend_secret = vchCryptedSecret;
                   +             pwalletdbEncryption->WriteStealthAddress(sxAddr);
                   +         };
                   +            +  
                  

                  Code added

                   +         	
                   +         FindStealthTransactions(tx);
                   +        
                  

                  Code added

                   -bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
                   + bool CWallet::CreateTransaction(const vector<pair<CScript, int64> >& vecSend, 
                   -                                CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl* coinControl)
                   +                                 CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl* coinControl)
                  

                  Code replaced

                   -    vector<CTxOut>::iterator position = wtxNew.vout.begin()+GetRandInt(wtxNew.vout.size()+1);
                  

                  Code removed

                   +                         vector<CTxOut>::iterator position = wtxNew.vout.begin() + GetRandInt(wtxNew.vout.size() +  1);
                   +                     
                   +                         if (position > wtxNew.vout.begin() && position < wtxNew.vout.end())
                   +                         {
                   +                             while (position > wtxNew.vout.begin())
                   +                             {
                   +                                 if (position->nValue != 0)
                   +                                     break;
                   +                                 position--;
                   +                             };
                   +                         };
                  
                                            wtxNew.vout.insert(position, newTxOut);
                  
                   +                         nChangePos = std::distance(wtxNew.vout.begin(), position);
                  

                  Code added

                   - bool CWallet::CreateTransaction(CScript scriptPubKey, int64_t nValue,
                   -     CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl* coinControl)
                  
                   + bool CWallet::CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, std::string& strFailReason, const CCoinControl* coinControl)
                  

                  Code replaced

                   -    return CreateTransaction(vecSend, wtxNew, reservekey, nFeeRet, strFailReason, coinControl);
                  

                  Code removed

                   +     int nChangePos;
                   +     string strError;
                   +     bool rv = CreateTransaction(vecSend, wtxNew, reservekey, nFeeRet, nChangePos, strError, coinControl);
                   +     return rv;
                   + }
                   + 
                   + bool CWallet::NewStealthAddress(std::string& sError, std::string& sLabel, CStealthAddress& sxAddr)
                   + {
                   +     ec_secret scan_secret;
                   +     ec_secret spend_secret;
                   +     
                   +     if (GenerateRandomSecret(scan_secret) != 0
                   +         || GenerateRandomSecret(spend_secret) != 0)
                   +     {
                   +         sError = "GenerateRandomSecret failed.";
                   +         printf("Error CWallet::NewStealthAddress - %s\n", sError.c_str());
                   +         return false;
                   +     };
                   +     
                   +     ec_point scan_pubkey, spend_pubkey;
                   +     if (SecretToPublicKey(scan_secret, scan_pubkey) != 0)
                   +     {
                   +         sError = "Could not get scan public key.";
                   +         printf("Error CWallet::NewStealthAddress - %s\n", sError.c_str());
                   +         return false;
                   +     };
                   +     
                   +     if (SecretToPublicKey(spend_secret, spend_pubkey) != 0)
                   +     {
                   +         sError = "Could not get spend public key.";
                   +         printf("Error CWallet::NewStealthAddress - %s\n", sError.c_str());
                   +         return false;
                   +     };
                   +     
                   +     if (fDebug)
                  

                  Start of large section of code added from lines 1500 to 2128

                   +    FindStealthTransactions(wtxNew);
                   +    
                  

                  Code added

                   +        LogPrintf("CommitTransaction start................\n");
                  
                   +        LogPrintf("CommitTransaction Broadcast start.............\n");
                  
                   +        LogPrintf("CommitTransaction RelayWalletTransaction............\n");
                  

                  Code added for LofPrintf

                    - string CWallet::SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew)
                  

                  Code replaced

                   + //string CWallet::SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew)
                   + string CWallet::SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew, bool fAskFee)
                  

                  Code replaced

                   +     //if (fAskFee && !uiInterface.ThreadSafeAskFee(nFeeRequired))
                   +     if (fAskFee && !uiInterface.ThreadSafeAskFee(nFeeRequired, _("Sending...")))
                   +         return "ABORTED";
                   +         
                   +     LogPrintf("SendMoney, scriptPubKey=%s \n",scriptPubKey.ToString());
                   +     
                  

                  Code added

                   -string CWallet::SendMoneyToDestination(const CTxDestination& address, int64_t nValue, CWalletTx& wtxNew)
                   + //string CWallet::SendMoneyToDestination(const CTxDestination& address, int64_t nValue, CWalletTx& wtxNew)
                   + string CWallet::SendMoneyToDestination(const CTxDestination& address, int64 nValue, CWalletTx& wtxNew, bool fAskFee)
                  

                  Code replaced

                    -    return SendMoney(scriptPubKey, nValue, wtxNew);
                  
                   +		LogPrintf("SendMoneyToDestination.....................\n"); 
                   +		
                   +    return SendMoney(scriptPubKey, nValue, wtxNew, fAskFee);
                  

                  Code replaced

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

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

                    Add stealth address : - commit

                    https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

                    src/wallet.h

                    Large number of updates

                     + #include "stealth.h"
                    
                     + typedef std::map<CKeyID, CStealthKeyMetadata> StealthKeyMetaMap;
                     + typedef std::map<std::string, std::string> mapValue_t;
                    
                     +     std::set<CStealthAddress> stealthAddresses;
                     +     StealthKeyMetaMap mapStealthKeyMeta;
                     +     uint32_t nStealth, nFoundStealth; // for reporting, zero before use
                     +     
                    
                     +     bool Lock();
                    

                    Code added

                     -    bool CreateTransaction(const std::vector<std::pair<CScript, int64_t> >& vecSend,
                     -                           CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);
                     -    bool CreateTransaction(CScript scriptPubKey, int64_t nValue,
                     -                           CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);
                    
                     -    std::string SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew);
                     -    std::string SendMoneyToDestination(const CTxDestination &address, int64_t nValue, CWalletTx& wtxNew);
                    

                    Code replaced

                     +     /*bool CreateTransaction(const std::vector<std::pair<CScript, int64_t> >& vecSend,
                     +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);*/
                     +     bool CreateTransaction(const std::vector<std::pair<CScript, int64> >& vecSend,
                     +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl *coinControl=NULL);                           	
                     +     /*bool CreateTransaction(CScript scriptPubKey, int64_t nValue,
                     +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);*/
                     +     bool CreateTransaction(CScript scriptPubKey, int64 nValue,
                     +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);
                     +     	
                           bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey);
                    
                     +   //std::string SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew);
                     +     std::string SendMoney(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew, bool fAskFee=false);  	
                     +   //std::string SendMoneyToDestination(const CTxDestination &address, int64_t nValue, CWalletTx& wtxNew);
                     +     std::string SendMoneyToDestination(const CTxDestination& address, int64_t nValue, CWalletTx& wtxNew, bool fAskFee=false);
                     + 	
                     +     bool NewStealthAddress(std::string& sError, std::string& sLabel, CStealthAddress& sxAddr);
                     +     bool AddStealthAddress(CStealthAddress& sxAddr);
                     +     bool UnlockStealthAddresses(const CKeyingMaterial& vMasterKeyIn);
                     +     bool UpdateStealthAddress(std::string &addr, std::string &label, bool addIfNotExist);
                     +     
                     +     bool CreateStealthTransaction(CScript scriptPubKey, int64_t nValue, std::vector<uint8_t>& P, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, const CCoinControl* coinControl=NULL);
                     +     std::string SendStealthMoney(CScript scriptPubKey, int64_t nValue, std::vector<uint8_t>& P, CWalletTx& wtxNew, bool fAskFee=false);
                     +     bool SendStealthMoneyToDestination(CStealthAddress& sxAddress, int64_t nValue, CWalletTx& wtxNew, std::string& sError, bool fAskFee=false);
                     +     bool FindStealthTransactions(const CTransaction& tx);
                     +     
                    

                    Replace code added

                       - typedef std::map<std::string, std::string> mapValue_t;
                      + //typedef std::map<std::string, std::string> mapValue_t;
                    

                    Code commented out?

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

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

                      Add stealth address : - commit

                      https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

                      src/walletdb.cpp

                       -        else if (strType == "acentry")
                      
                       +         {
                       +             if (fDebug)
                       +                 printf("WalletDB ReadKeyValue sxAddr\n");
                       +             
                       +             CStealthAddress sxAddr;
                       +             ssValue >> sxAddr;
                       +             
                       +             pwallet->stealthAddresses.insert(sxAddr);
                       +         } else if (strType == "acentry")
                      

                      Code replaced

                       +         } else if (strType == "sxKeyMeta")
                       +         {
                       +             if (fDebug)
                       +                 printf("WalletDB ReadKeyValue sxKeyMeta\n");
                       +             
                       +             CKeyID keyId;
                       +             ssKey >> keyId;
                       +             CStealthKeyMetadata sxKeyMeta;
                       +             ssValue >> sxKeyMeta;
                       + 
                       +             pwallet->mapStealthKeyMeta[keyId] = sxKeyMeta;
                      

                      Code added

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

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

                        Add stealth address : - commit

                        https://github.com/FeatherCoin/Feathercoin/commit/e993143a1688a6aa57c03da6f181f8bf2f375bf6

                        src/walletdb.h

                         +#include "stealth.h"
                        

                        Code added

                         + class CStealthKeyMetadata
                         + {
                         + // -- used to get secret for keys created by stealth transaction with wallet locked
                         + public:
                         +     CStealthKeyMetadata() {};
                         +     
                         +     CStealthKeyMetadata(CPubKey pkEphem_, CPubKey pkScan_)
                         +     {
                         +         pkEphem = pkEphem_;
                         +         pkScan = pkScan_;
                         +     };
                         +     
                         +     CPubKey pkEphem;
                         +     CPubKey pkScan;
                         + 
                         +     IMPLEMENT_SERIALIZE
                         +     (
                         +         READWRITE(pkEphem);
                         +         READWRITE(pkScan);
                         +     )
                         + 
                         + };
                         + 
                        

                        Stealth class added

                         +     Dbc* GetAtCursor()
                         +     {
                         +         return GetCursor();
                         +     }
                         +     
                         +     Dbc* GetTxnCursor()
                         +     {
                         +         if (!pdb)
                         +             return NULL;
                         +         
                         +         DbTxn* ptxnid = activeTxn; // call TxnBegin first
                         +         
                         +         Dbc* pcursor = NULL;
                         +         int ret = pdb->cursor(ptxnid, &pcursor, 0);
                         +         if (ret != 0)
                         +             return NULL;
                         +         return pcursor;
                         +     }
                         +     
                         +     DbTxn* GetAtActiveTxn()
                         +     {
                         +         return activeTxn;
                         +     }
                         +     
                        

                        Code added

                         +     bool WriteStealthKeyMeta(const CKeyID& keyId, const CStealthKeyMetadata& sxKeyMeta)
                         +     {
                         +         nWalletDBUpdated     +      + ;
                         +         return Write(std::make_pair(std::string("sxKeyMeta"), keyId), sxKeyMeta, true);
                         +     }
                         +     
                         +     bool EraseStealthKeyMeta(const CKeyID& keyId)
                         +     {
                         +         nWalletDBUpdated     +      + ;
                         +         return Erase(std::make_pair(std::string("sxKeyMeta"), keyId));
                         +     }
                         +     
                         +     bool WriteStealthAddress(const CStealthAddress& sxAddr)
                         +     {
                         +         nWalletDBUpdated     +      + ;
                         + 
                         +         return Write(std::make_pair(std::string("sxAddr"), sxAddr.scan_pubkey), sxAddr, true);
                         +     }
                         +     
                         +     bool ReadStealthAddress(CStealthAddress& sxAddr)
                         +     {
                         +         // -- set scan_pubkey before reading
                         +         return Read(std::make_pair(std::string("sxAddr"), sxAddr.scan_pubkey), sxAddr);
                         +     }
                         +   
                        

                        Code added

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

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

                          Fix int_t64 : - commit

                          https://github.com/FeatherCoin/Feathercoin/commits/0.9.6?after=f296bdcef38b8c0770b43d4edc012e8c7434ac49+209

                          src/walletdb.cpp

                           -bool CWallet::CreateTransaction(const vector<pair<CScript, int64> >& vecSend, 
                           + bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend, 
                           -                                CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl* coinControl)
                           +                                 CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl* coinControl)
                          

                          Code replaced

                           -bool CWallet::CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, std::string& strFailReason, const CCoinControl* coinControl)
                           + bool CWallet::CreateTransaction(CScript scriptPubKey, int64_t nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl* coinControl)
                          

                          Code replaced

                           -    int nChangePos;
                           +     int32_t nChangePos;
                          

                          Code replaced

                           -    vector< pair<CScript, int64> > vecSend;
                           +     vector< pair<CScript, int64_t> > vecSend;
                          

                          Code replaced

                           -    int nChangePos;
                           +     int32_t nChangePos;
                          

                          Code replaced

                           -string CWallet::SendMoneyToDestination(const CTxDestination& address, int64 nValue, CWalletTx& wtxNew, bool fAskFee)
                           + string CWallet::SendMoneyToDestination(const CTxDestination& address, int64_t nValue, CWalletTx& wtxNew, bool fAskFee)
                          

                          Code replaced

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

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

                            Fix int_t64 : - commit

                            https://github.com/FeatherCoin/Feathercoin/commits/0.9.6?after=f296bdcef38b8c0770b43d4edc012e8c7434ac49+209

                            src/walletdb.h

                             -    bool CreateTransaction(const std::vector<std::pair<CScript, int64> >& vecSend,
                             -                           CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl *coinControl=NULL);   
                            

                            Code replaced

                             +     bool CreateTransaction(const std::vector<std::pair<CScript, int64_t> >& vecSend,
                             +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, int32_t& nChangePos, std::string& strFailReason, const CCoinControl *coinControl=NULL);
                             +      
                            

                            Code replaced

                             -    bool CreateTransaction(CScript scriptPubKey, int64 nValue,
                             -                           CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);
                            

                            Code replaced

                             +     bool CreateTransaction(CScript scriptPubKey, int64_t nValue,
                             +                            CWalletTx& wtxNew, CReserveKey& reservekey, int64_t& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL);
                            

                            Code replaced

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

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

                              fix horizontalHeader : - commit

                              https://github.com/FeatherCoin/Feathercoin/commit/5abd3183c550fb9de271c10072f7e2db3cb25f47

                              src/qt/addressbookpage.cpp

                               -		ui     ->tableView     ->horizontalHeader()     ->resizeSection(0, 140);
                               -		ui     ->tableView     ->horizontalHeader()     ->resizeSection(1, 600);
                              

                              Code replaced

                               + 		ui     ->tableView     ->horizontalHeader()     ->resizeSection(0, 150);
                               + 		ui     ->tableView     ->horizontalHeader()     ->resizeSection(1, 900);
                              

                              Code replaced, minor positional fix

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

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

                                Define to 0 libzxing : - commit

                                https://github.com/FeatherCoin/Feathercoin/commit/b9528bb6426bf759d2ca241c0b49f50e8cea9cca

                                configure.ac

                                 - define(_USE_ZXING,1)
                                 + define(_USE_ZXING,0)
                                

                                Code replaced

                                 - AC_DEFINE(USE_ZXING, _USE_ZXING,[Define to 1 libzxing must be available for support])
                                 + AC_DEFINE(USE_ZXING, _USE_ZXING,[Define to 0 libzxing must be available for support])
                                

                                Code replaced

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