Browse Source

update year, locales, fix tabulations

pull/29/head
R4SAS 6 years ago
parent
commit
e21f609ed3
  1. 2
      COPYING
  2. 2
      README.md
  3. 74
      src/Gost.cpp
  4. 22
      src/Gost.h
  5. 1
      src/alert.h
  6. 1
      src/base58.h
  7. 1
      src/bignum.h
  8. 1
      src/bitcoinrpc.cpp
  9. 1
      src/checkpoints.cpp
  10. 1
      src/compat.h
  11. 1
      src/crypter.cpp
  12. 1
      src/db.cpp
  13. 4
      src/hash.cpp
  14. 104
      src/hash.h
  15. 152
      src/i2p.cpp
  16. 1
      src/i2p.h
  17. 2
      src/i2psam/i2psam.cpp
  18. 2
      src/i2psam/i2psam.h
  19. 1
      src/init.cpp
  20. 1
      src/init.h
  21. 1
      src/key.cpp
  22. 1
      src/key.h
  23. 1
      src/main.cpp
  24. 1
      src/main.h
  25. 1
      src/net.cpp
  26. 1
      src/net.h
  27. 1
      src/netbase.cpp
  28. 1
      src/netbase.h
  29. 1
      src/noui.cpp
  30. 2
      src/qt/aboutdialog.cpp
  31. 14
      src/qt/bitcoingui.cpp
  32. 4
      src/qt/clientmodel.cpp
  33. 3
      src/qt/clientmodel.h
  34. 4
      src/qt/forms/signverifymessagedialog.ui
  35. 6
      src/qt/gostcoin.cpp
  36. 3827
      src/qt/locale/gostcoin_en.ts
  37. 478
      src/qt/locale/gostcoin_ru.ts
  38. 1
      src/qt/paymentserver.cpp
  39. 2
      src/qt/sendcoinsdialog.cpp
  40. 2
      src/qt/setupdarknet.cpp
  41. 14
      src/qt/walletframe.cpp
  42. 14
      src/qt/walletframe.h
  43. 14
      src/qt/walletstack.cpp
  44. 14
      src/qt/walletstack.h
  45. 14
      src/qt/walletview.cpp
  46. 14
      src/qt/walletview.h
  47. 1
      src/rpcdump.cpp
  48. 1
      src/rpcmining.cpp
  49. 1
      src/rpcnet.cpp
  50. 1
      src/rpcrawtransaction.cpp
  51. 1
      src/rpcwallet.cpp
  52. 1
      src/script.cpp
  53. 1
      src/script.h
  54. 1
      src/uint256.h
  55. 36
      src/util.cpp
  56. 1
      src/util.h
  57. 1
      src/version.cpp
  58. 1
      src/wallet.cpp
  59. 1
      src/wallet.h
  60. 1
      src/walletdb.cpp
  61. 1
      src/walletdb.h

2
COPYING

@ -1,5 +1,5 @@
Copyright (c) 2013-2015 The Anoncoin Developers Copyright (c) 2013-2015 The Anoncoin Developers
Copyright (c) 2017 GOSTCoin Developers Copyright (c) 2017-2018 GOSTCoin Developers
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

2
README.md

@ -8,7 +8,7 @@ Why GOSTCoin?
------------- -------------
GOSTCoin uses Soviet and Russian government standard cryptography: GOSTCoin uses Soviet and Russian government standard cryptography:
GOST R 34.10-2012 for signature and GOST R 34.11-2012 for hash. [GOST R 34.10-2012](https://tools.ietf.org/html/rfc7091) for signature and [GOST R 34.11-2012](https://tools.ietf.org/html/rfc6986) for hash.
[More info about crypto](https://github.com/GOSTSec/gostcoin/wiki/Cryptography). [More info about crypto](https://github.com/GOSTSec/gostcoin/wiki/Cryptography).
GOSTCoin is using [Invisible Internet](https://github.com/PurpleI2P/i2pd) (I2P) as a secure network layer. GOSTCoin is using [Invisible Internet](https://github.com/PurpleI2P/i2pd) (I2P) as a secure network layer.

74
src/Gost.cpp

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2016, The PurpleI2P Project * Copyright (c) 2013-2018, The PurpleI2P Project
* *
* This file is part of Purple i2pd project and licensed under BSD3 * This file is part of Purple i2pd project and licensed under BSD3
* *
@ -35,7 +35,7 @@ namespace crypto
GOSTR3410Curve::~GOSTR3410Curve () GOSTR3410Curve::~GOSTR3410Curve ()
{ {
EC_GROUP_free (m_Group); EC_GROUP_free (m_Group);
} }
EC_POINT * GOSTR3410Curve::MulP (const BIGNUM * n) const EC_POINT * GOSTR3410Curve::MulP (const BIGNUM * n) const
{ {
@ -65,9 +65,9 @@ namespace crypto
BIGNUM * q = BN_CTX_get (ctx); BIGNUM * q = BN_CTX_get (ctx);
EC_GROUP_get_order(m_Group, q, ctx); EC_GROUP_get_order(m_Group, q, ctx);
BIGNUM * k = BN_CTX_get (ctx); BIGNUM * k = BN_CTX_get (ctx);
BN_rand_range (k, q); // 0 < k < q BN_rand_range (k, q); // 0 < k < q
EC_POINT * C = MulP (k); // C = k*P EC_POINT * C = MulP (k); // C = k*P
GetXY (C, r, nullptr); // r = Cx GetXY (C, r, nullptr); // r = Cx
EC_POINT_free (C); EC_POINT_free (C);
BN_mod_mul (s, r, priv, q, ctx); // (r*priv)%q BN_mod_mul (s, r, priv, q, ctx); // (r*priv)%q
BIGNUM * tmp = BN_CTX_get (ctx); BIGNUM * tmp = BN_CTX_get (ctx);
@ -84,26 +84,26 @@ namespace crypto
BIGNUM * q = BN_CTX_get (ctx); BIGNUM * q = BN_CTX_get (ctx);
EC_GROUP_get_order(m_Group, q, ctx); EC_GROUP_get_order(m_Group, q, ctx);
BIGNUM * h = BN_CTX_get (ctx); BIGNUM * h = BN_CTX_get (ctx);
BN_mod (h, digest, q, ctx); // h = digest % q BN_mod (h, digest, q, ctx); // h = digest % q
BN_mod_inverse (h, h, q, ctx); // 1/h mod q BN_mod_inverse (h, h, q, ctx); // 1/h mod q
BIGNUM * z1 = BN_CTX_get (ctx); BIGNUM * z1 = BN_CTX_get (ctx);
BN_mod_mul (z1, s, h, q, ctx); // z1 = s/h BN_mod_mul (z1, s, h, q, ctx); // z1 = s/h
BIGNUM * z2 = BN_CTX_get (ctx); BIGNUM * z2 = BN_CTX_get (ctx);
BN_sub (z2, q, r); // z2 = -r BN_sub (z2, q, r); // z2 = -r
BN_mod_mul (z2, z2, h, q, ctx); // z2 = -r/h BN_mod_mul (z2, z2, h, q, ctx); // z2 = -r/h
EC_POINT * C = EC_POINT_new (m_Group); EC_POINT * C = EC_POINT_new (m_Group);
EC_POINT_mul (m_Group, C, z1, pub, z2, ctx); // z1*P + z2*pub EC_POINT_mul (m_Group, C, z1, pub, z2, ctx); // z1*P + z2*pub
BIGNUM * x = BN_CTX_get (ctx); BIGNUM * x = BN_CTX_get (ctx);
GetXY (C, x, nullptr); // Cx GetXY (C, x, nullptr); // Cx
BN_mod (x, x, q, ctx); // Cx % q BN_mod (x, x, q, ctx); // Cx % q
bool ret = !BN_cmp (x, r); // Cx = r ? bool ret = !BN_cmp (x, r); // Cx = r ?
EC_POINT_free (C); EC_POINT_free (C);
BN_CTX_end (ctx); BN_CTX_end (ctx);
BN_CTX_free (ctx); BN_CTX_free (ctx);
return ret; return ret;
} }
EC_POINT * GOSTR3410Curve::RecoverPublicKey (const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s, bool isNegativeY) const EC_POINT * GOSTR3410Curve::RecoverPublicKey (const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s, bool isNegativeY) const
{ {
// s*P = r*Q + h*C // s*P = r*Q + h*C
BN_CTX * ctx = BN_CTX_new (); BN_CTX * ctx = BN_CTX_new ();
@ -111,36 +111,36 @@ namespace crypto
EC_POINT * C = EC_POINT_new (m_Group); // C = k*P = (rx, ry) EC_POINT * C = EC_POINT_new (m_Group); // C = k*P = (rx, ry)
EC_POINT * Q = nullptr; EC_POINT * Q = nullptr;
if (EC_POINT_set_compressed_coordinates_GFp (m_Group, C, r, isNegativeY ? 1 : 0, ctx)) if (EC_POINT_set_compressed_coordinates_GFp (m_Group, C, r, isNegativeY ? 1 : 0, ctx))
{ {
EC_POINT * S = EC_POINT_new (m_Group); // S = s*P EC_POINT * S = EC_POINT_new (m_Group); // S = s*P
EC_POINT_mul (m_Group, S, s, nullptr, nullptr, ctx); EC_POINT_mul (m_Group, S, s, nullptr, nullptr, ctx);
BIGNUM * q = BN_CTX_get (ctx); BIGNUM * q = BN_CTX_get (ctx);
EC_GROUP_get_order(m_Group, q, ctx); EC_GROUP_get_order(m_Group, q, ctx);
BIGNUM * h = BN_CTX_get (ctx); BIGNUM * h = BN_CTX_get (ctx);
BN_mod (h, digest, q, ctx); // h = digest % q BN_mod (h, digest, q, ctx); // h = digest % q
BN_sub (h, q, h); // h = -h BN_sub (h, q, h); // h = -h
EC_POINT * H = EC_POINT_new (m_Group); EC_POINT * H = EC_POINT_new (m_Group);
EC_POINT_mul (m_Group, H, nullptr, C, h, ctx); // -h*C EC_POINT_mul (m_Group, H, nullptr, C, h, ctx); // -h*C
EC_POINT_add (m_Group, C, S, H, ctx); // s*P - h*C EC_POINT_add (m_Group, C, S, H, ctx); // s*P - h*C
EC_POINT_free (H); EC_POINT_free (H);
EC_POINT_free (S); EC_POINT_free (S);
BIGNUM * r1 = BN_CTX_get (ctx); BIGNUM * r1 = BN_CTX_get (ctx);
BN_mod_inverse (r1, r, q, ctx); BN_mod_inverse (r1, r, q, ctx);
Q = EC_POINT_new (m_Group); Q = EC_POINT_new (m_Group);
EC_POINT_mul (m_Group, Q, nullptr, C, r1, ctx); // (s*P - h*C)/r EC_POINT_mul (m_Group, Q, nullptr, C, r1, ctx); // (s*P - h*C)/r
} }
EC_POINT_free (C); EC_POINT_free (C);
BN_CTX_end (ctx); BN_CTX_end (ctx);
BN_CTX_free (ctx); BN_CTX_free (ctx);
return Q; return Q;
} }
static GOSTR3410Curve * CreateGOSTR3410Curve (GOSTR3410ParamSet paramSet) static GOSTR3410Curve * CreateGOSTR3410Curve (GOSTR3410ParamSet paramSet)
{ {
// a, b, p, q, x, y // a, b, p, q, x, y
static const char * params[eGOSTR3410NumParamSets][6] = static const char * params[eGOSTR3410NumParamSets][6] =
{ {
{ {
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94",
"A6", "A6",
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD97", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD97",
@ -154,10 +154,10 @@ namespace crypto
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC7", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC7",
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27E69532F48D89116FF22B8D4E0560609B4B38ABFAD2B85DCACDB1411F10B275", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27E69532F48D89116FF22B8D4E0560609B4B38ABFAD2B85DCACDB1411F10B275",
"3", "3",
"7503CFE87A836AE3A61B8816E25450E6CE5E1C93ACF1ABC1778064FDCBEFA921DF1626BE4FD036E93D75E6A50E3A41E98028FE5FC235F5B889A589CB5215F2A4" "7503CFE87A836AE3A61B8816E25450E6CE5E1C93ACF1ABC1778064FDCBEFA921DF1626BE4FD036E93D75E6A50E3A41E98028FE5FC235F5B889A589CB5215F2A4"
} // tc26-2012-paramSetA-512 } // tc26-2012-paramSetA-512
}; };
BIGNUM * a = nullptr, * b = nullptr, * p = nullptr, * q =nullptr, * x = nullptr, * y = nullptr; BIGNUM * a = nullptr, * b = nullptr, * p = nullptr, * q =nullptr, * x = nullptr, * y = nullptr;
BN_hex2bn(&a, params[paramSet][0]); BN_hex2bn(&a, params[paramSet][0]);
BN_hex2bn(&b, params[paramSet][1]); BN_hex2bn(&b, params[paramSet][1]);
@ -168,20 +168,20 @@ namespace crypto
auto curve = new GOSTR3410Curve (a, b, p, q, x, y); auto curve = new GOSTR3410Curve (a, b, p, q, x, y);
BN_free (a); BN_free (b); BN_free (p); BN_free (q); BN_free (x); BN_free (y); BN_free (a); BN_free (b); BN_free (p); BN_free (q); BN_free (x); BN_free (y);
return curve; return curve;
} }
static std::array<std::unique_ptr<GOSTR3410Curve>, eGOSTR3410NumParamSets> g_GOSTR3410Curves; static std::array<std::unique_ptr<GOSTR3410Curve>, eGOSTR3410NumParamSets> g_GOSTR3410Curves;
std::unique_ptr<GOSTR3410Curve>& GetGOSTR3410Curve (GOSTR3410ParamSet paramSet) std::unique_ptr<GOSTR3410Curve>& GetGOSTR3410Curve (GOSTR3410ParamSet paramSet)
{ {
if (!g_GOSTR3410Curves[paramSet]) if (!g_GOSTR3410Curves[paramSet])
{ {
auto c = CreateGOSTR3410Curve (paramSet); auto c = CreateGOSTR3410Curve (paramSet);
if (!g_GOSTR3410Curves[paramSet]) // make sure it was not created already if (!g_GOSTR3410Curves[paramSet]) // make sure it was not created already
g_GOSTR3410Curves[paramSet].reset (c); g_GOSTR3410Curves[paramSet].reset (c);
else else
delete c; delete c;
} }
return g_GOSTR3410Curves[paramSet]; return g_GOSTR3410Curves[paramSet];
} }
} }
} }
@ -193,7 +193,7 @@ namespace crypto
* ==========================(LICENSE BEGIN)============================ * ==========================(LICENSE BEGIN)============================
* *
* Copyright (c) 2007-2010 Projet RNRT SAPHIR * Copyright (c) 2007-2010 Projet RNRT SAPHIR
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
@ -201,10 +201,10 @@ namespace crypto
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be * The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software. * included in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

22
src/Gost.h

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2017, The PurpleI2P Project * Copyright (c) 2013-2018, The PurpleI2P Project
* *
* This file is part of Purple i2pd project and licensed under BSD3 * This file is part of Purple i2pd project and licensed under BSD3
* *
@ -18,25 +18,25 @@ namespace crypto
{ {
// ГОСТ Р 34.10 // ГОСТ Р 34.10
enum GOSTR3410ParamSet enum GOSTR3410ParamSet
{ {
eGOSTR3410CryptoProA = 0, // 1.2.643.2.2.35.1 eGOSTR3410CryptoProA = 0, // 1.2.643.2.2.35.1
// XchA = A, XchB = C // XchA = A, XchB = C
//eGOSTR3410CryptoProXchA, // 1.2.643.2.2.36.0 //eGOSTR3410CryptoProXchA, // 1.2.643.2.2.36.0
//eGOSTR3410CryptoProXchB, // 1.2.643.2.2.36.1 //eGOSTR3410CryptoProXchB, // 1.2.643.2.2.36.1
eGOSTR3410TC26A512, // 1.2.643.7.1.2.1.2.1 eGOSTR3410TC26A512, // 1.2.643.7.1.2.1.2.1
eGOSTR3410NumParamSets eGOSTR3410NumParamSets
}; };
class GOSTR3410Curve class GOSTR3410Curve
{ {
public: public:
GOSTR3410Curve (BIGNUM * a, BIGNUM * b, BIGNUM * p, BIGNUM * q, BIGNUM * x, BIGNUM * y); GOSTR3410Curve (BIGNUM * a, BIGNUM * b, BIGNUM * p, BIGNUM * q, BIGNUM * x, BIGNUM * y);
~GOSTR3410Curve (); ~GOSTR3410Curve ();
size_t GetKeyLen () const { return m_KeyLen; }; size_t GetKeyLen () const { return m_KeyLen; };
const EC_GROUP * GetGroup () const { return m_Group; }; const EC_GROUP * GetGroup () const { return m_Group; };
EC_POINT * MulP (const BIGNUM * n) const; EC_POINT * MulP (const BIGNUM * n) const;
bool GetXY (const EC_POINT * p, BIGNUM * x, BIGNUM * y) const; bool GetXY (const EC_POINT * p, BIGNUM * x, BIGNUM * y) const;
@ -44,7 +44,7 @@ namespace crypto
void Sign (const BIGNUM * priv, const BIGNUM * digest, BIGNUM * r, BIGNUM * s); void Sign (const BIGNUM * priv, const BIGNUM * digest, BIGNUM * r, BIGNUM * s);
bool Verify (const EC_POINT * pub, const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s); bool Verify (const EC_POINT * pub, const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s);
EC_POINT * RecoverPublicKey (const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s, bool isNegativeY = false) const; EC_POINT * RecoverPublicKey (const BIGNUM * digest, const BIGNUM * r, const BIGNUM * s, bool isNegativeY = false) const;
private: private:
EC_GROUP * m_Group; EC_GROUP * m_Group;
@ -55,7 +55,7 @@ namespace crypto
// Big Endian // Big Endian
void GOSTR3411_2012_256 (const uint8_t * buf, size_t len, uint8_t * digest); void GOSTR3411_2012_256 (const uint8_t * buf, size_t len, uint8_t * digest);
void GOSTR3411_2012_512 (const uint8_t * buf, size_t len, uint8_t * digest); void GOSTR3411_2012_512 (const uint8_t * buf, size_t len, uint8_t * digest);
} }
} }

1
src/alert.h

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/base58.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin Developers // Copyright (c) 2009-2012 The Bitcoin Developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/bignum.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_BIGNUM_H #ifndef BITCOIN_BIGNUM_H

1
src/bitcoinrpc.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/checkpoints.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/compat.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef _BITCOIN_COMPAT_H #ifndef _BITCOIN_COMPAT_H

1
src/crypter.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 The Bitcoin Developers // Copyright (c) 2009-2012 The Bitcoin Developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/db.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

4
src/hash.cpp

@ -1,3 +1,7 @@
// Copyright (c) 2017-2018 The Gostcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "hash.h" #include "hash.h"
uint256 Hash (const uint256& left, const uint256& right) uint256 Hash (const uint256& left, const uint256& right)

104
src/hash.h

@ -1,6 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017 The Gostcoin developers // Copyright (c) 2017-2018 The Gostcoin developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_HASH_H #ifndef BITCOIN_HASH_H
@ -20,80 +20,80 @@ template<typename T1>
inline uint256 Hash(const T1 pbegin, const T1 pend) inline uint256 Hash(const T1 pbegin, const T1 pend)
{ {
// GOST 34.11-256 (GOST 34.11-512 (...)) // GOST 34.11-256 (GOST 34.11-512 (...))
static unsigned char pblank[1]; static unsigned char pblank[1];
uint8_t hash1[64]; uint8_t hash1[64];
i2p::crypto::GOSTR3411_2012_512 ((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), hash1); i2p::crypto::GOSTR3411_2012_512 ((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), hash1);
uint32_t digest[8]; uint32_t digest[8];
i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (uint8_t *)digest); i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (uint8_t *)digest);
// to little endian // to little endian
uint256 hash2; uint256 hash2;
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
hash2.pn[i] = ByteReverse (digest[7-i]); hash2.pn[i] = ByteReverse (digest[7-i]);
return hash2; return hash2;
} }
class CHashWriter class CHashWriter
{ {
private: private:
std::stringstream ctx; std::stringstream ctx;
public: public:
int nType; int nType;
int nVersion; int nVersion;
void Init() { void Init() {
ctx.str(""); ctx.str("");
} }
CHashWriter(int nTypeIn, int nVersionIn) : nType(nTypeIn), nVersion(nVersionIn) { CHashWriter(int nTypeIn, int nVersionIn) : nType(nTypeIn), nVersion(nVersionIn) {
Init(); Init();
} }
CHashWriter& write(const char *pch, size_t size) { CHashWriter& write(const char *pch, size_t size) {
ctx.write (pch, size); ctx.write (pch, size);
return (*this); return (*this);
} }
// invalidates the object // invalidates the object
uint256 GetHash() { // shouldn't be called after hard fork 1 uint256 GetHash() { // shouldn't be called after hard fork 1
uint8_t hash1[64]; uint8_t hash1[64];
i2p::crypto::GOSTR3411_2012_512 ((uint8_t *)ctx.str ().c_str (), ctx.str ().length (), hash1); i2p::crypto::GOSTR3411_2012_512 ((uint8_t *)ctx.str ().c_str (), ctx.str ().length (), hash1);
uint256 hash2; uint256 hash2;
i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (unsigned char*)&hash2); i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (unsigned char*)&hash2);
return hash2; return hash2;
} }
uint256 GetHashHF1() uint256 GetHashHF1()
{ {
const uint8_t * buf = (const uint8_t *)ctx.str ().c_str (); const uint8_t * buf = (const uint8_t *)ctx.str ().c_str ();
return Hash (buf, buf + ctx.str ().length ()); return Hash (buf, buf + ctx.str ().length ());
} }
template<typename T> template<typename T>
CHashWriter& operator<<(const T& obj) { CHashWriter& operator<<(const T& obj) {
// Serialize to this stream // Serialize to this stream
::Serialize(*this, obj, nType, nVersion); ::Serialize(*this, obj, nType, nVersion);
return (*this); return (*this);
} }
}; };
template<typename T1, typename T2> template<typename T1, typename T2>
inline uint256 Hash(const T1 p1begin, const T1 p1end, inline uint256 Hash(const T1 p1begin, const T1 p1end,
const T2 p2begin, const T2 p2end) // shouldn't be called after hard fork 1 const T2 p2begin, const T2 p2end) // shouldn't be called after hard fork 1
{ {
static unsigned char pblank[1]; static unsigned char pblank[1];
size_t s1 = (p1end - p1begin) * sizeof(p1begin[0]), size_t s1 = (p1end - p1begin) * sizeof(p1begin[0]),
s2 = (p2end - p2begin) * sizeof(p2begin[0]); s2 = (p2end - p2begin) * sizeof(p2begin[0]);
uint8_t * buf = new uint8_t[s1+s2]; uint8_t * buf = new uint8_t[s1+s2];
memcpy (buf, (unsigned char*)&p1begin[0], s1); memcpy (buf, (unsigned char*)&p1begin[0], s1);
memcpy (buf + s1, (unsigned char*)&p1begin[0], s2); memcpy (buf + s1, (unsigned char*)&p1begin[0], s2);
uint8_t hash1[64]; uint8_t hash1[64];
i2p::crypto::GOSTR3411_2012_512 ((s1 + s2) ? buf : pblank, s1 + s2, hash1); i2p::crypto::GOSTR3411_2012_512 ((s1 + s2) ? buf : pblank, s1 + s2, hash1);
delete[] buf; delete[] buf;
uint256 hash2; uint256 hash2;
i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (unsigned char*)&hash2); i2p::crypto::GOSTR3411_2012_256 (hash1, 64, (unsigned char*)&hash2);
return hash2; return hash2;
} }
uint256 Hash (const uint256& left, const uint256& right); // for Merkle tree uint256 Hash (const uint256& left, const uint256& right); // for Merkle tree
@ -102,33 +102,33 @@ template<typename T>
uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION) uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION)
// shouldn't be called after hard fork 1 // shouldn't be called after hard fork 1
{ {
CHashWriter ss(nType, nVersion); CHashWriter ss(nType, nVersion);
ss << obj; ss << obj;
return ss.GetHash(); return ss.GetHash();
} }
template<typename T> template<typename T>
uint256 SerializeHashHF1(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION) uint256 SerializeHashHF1(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION)
{ {
CHashWriter ss(nType, nVersion); CHashWriter ss(nType, nVersion);
ss << obj; ss << obj;
return ss.GetHashHF1(); return ss.GetHashHF1();
} }
template<typename T1> template<typename T1>
inline uint160 Hash160(const T1 pbegin, const T1 pend) inline uint160 Hash160(const T1 pbegin, const T1 pend)
{ {
static unsigned char pblank[1]; static unsigned char pblank[1];
uint8_t hash1[64]; uint8_t hash1[64];
i2p::crypto::GOSTR3411_2012_512((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), hash1); i2p::crypto::GOSTR3411_2012_512((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), hash1);
uint160 hash2; uint160 hash2;
RIPEMD160(hash1, 64, (unsigned char*)&hash2); RIPEMD160(hash1, 64, (unsigned char*)&hash2);
return hash2; return hash2;
} }
inline uint160 Hash160(const std::vector<unsigned char>& vch) inline uint160 Hash160(const std::vector<unsigned char>& vch)
{ {
return Hash160(vch.begin(), vch.end()); return Hash160(vch.begin(), vch.end());
} }
unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector<unsigned char>& vDataToHash); unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector<unsigned char>& vDataToHash);

152
src/i2p.cpp

@ -1,5 +1,5 @@
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
// Copyright (c) 2017 orignal // Copyright (c) 2017-2018 orignal
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -15,22 +15,22 @@ namespace SAM
class StreamSessionAdapter::SessionHolder class StreamSessionAdapter::SessionHolder
{ {
public: public:
explicit SessionHolder(std::shared_ptr<SAM::StreamSession> session); explicit SessionHolder(std::shared_ptr<SAM::StreamSession> session);
~SessionHolder(); ~SessionHolder();
const SAM::StreamSession& getSession() const; const SAM::StreamSession& getSession() const;
SAM::StreamSession& getSession(); SAM::StreamSession& getSession();
private: private:
void heal() const; void heal() const;
void reborn() const; void reborn() const;
mutable std::shared_ptr<SAM::StreamSession> session_; mutable std::shared_ptr<SAM::StreamSession> session_;
typedef boost::shared_mutex mutex_type; typedef boost::shared_mutex mutex_type;
mutable mutex_type mtx_; mutable mutex_type mtx_;
}; };
StreamSessionAdapter::SessionHolder::SessionHolder(std::shared_ptr<SAM::StreamSession> session) StreamSessionAdapter::SessionHolder::SessionHolder(std::shared_ptr<SAM::StreamSession> session)
: session_(session) : session_(session)
{ {
} }
@ -40,38 +40,38 @@ StreamSessionAdapter::SessionHolder::~SessionHolder()
const SAM::StreamSession& StreamSessionAdapter::SessionHolder::getSession() const const SAM::StreamSession& StreamSessionAdapter::SessionHolder::getSession() const
{ {
boost::upgrade_lock<mutex_type> lock(mtx_); boost::upgrade_lock<mutex_type> lock(mtx_);
if (session_->isSick()) if (session_->isSick())
{ {
boost::upgrade_to_unique_lock<mutex_type> ulock(lock); boost::upgrade_to_unique_lock<mutex_type> ulock(lock);
heal(); heal();
} }
return *session_; return *session_;
} }
SAM::StreamSession& StreamSessionAdapter::SessionHolder::getSession() SAM::StreamSession& StreamSessionAdapter::SessionHolder::getSession()
{ {
boost::upgrade_lock<mutex_type> lock(mtx_); boost::upgrade_lock<mutex_type> lock(mtx_);
if (session_->isSick()) if (session_->isSick())
{ {
boost::upgrade_to_unique_lock<mutex_type> ulock(lock); boost::upgrade_to_unique_lock<mutex_type> ulock(lock);
heal(); heal();
} }
return *session_; return *session_;
} }
void StreamSessionAdapter::SessionHolder::heal() const void StreamSessionAdapter::SessionHolder::heal() const
{ {
reborn(); // if we don't know how to heal it just reborn it reborn(); // if we don't know how to heal it just reborn it
} }
void StreamSessionAdapter::SessionHolder::reborn() const void StreamSessionAdapter::SessionHolder::reborn() const
{ {
if (!session_->isSick()) if (!session_->isSick())
return; return;
std::shared_ptr<SAM::StreamSession> newSession(new SAM::StreamSession(*session_)); std::shared_ptr<SAM::StreamSession> newSession(new SAM::StreamSession(*session_));
if (!newSession->isSick() && session_->isSick()) if (!newSession->isSick() && session_->isSick())
session_ = newSession; session_ = newSession;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -87,13 +87,13 @@ StreamSessionAdapter::~StreamSessionAdapter()
} }
bool StreamSessionAdapter::StartSession ( bool StreamSessionAdapter::StartSession (
const std::string& nickname, const std::string& nickname,
const std::string& SAMHost /*= SAM_DEFAULT_ADDRESS*/, const std::string& SAMHost /*= SAM_DEFAULT_ADDRESS*/,
uint16_t SAMPort /*= SAM_DEFAULT_PORT*/, uint16_t SAMPort /*= SAM_DEFAULT_PORT*/,
const std::string& myDestination /*= SAM_GENERATE_MY_DESTINATION*/, const std::string& myDestination /*= SAM_GENERATE_MY_DESTINATION*/,
const std::string& i2pOptions /*= SAM_DEFAULT_I2P_OPTIONS*/, const std::string& i2pOptions /*= SAM_DEFAULT_I2P_OPTIONS*/,
const std::string& minVer /*= SAM_DEFAULT_MIN_VER*/, const std::string& minVer /*= SAM_DEFAULT_MIN_VER*/,
const std::string& maxVer /*= SAM_DEFAULT_MAX_VER*/) const std::string& maxVer /*= SAM_DEFAULT_MAX_VER*/)
{ {
std::cout << "Creating SAM session..." << std::endl; std::cout << "Creating SAM session..." << std::endl;
auto s = std::make_shared<SAM::StreamSession>(nickname, SAMHost, SAMPort, myDestination, i2pOptions, minVer, maxVer); auto s = std::make_shared<SAM::StreamSession>(nickname, SAMHost, SAMPort, myDestination, i2pOptions, minVer, maxVer);
@ -116,11 +116,11 @@ void StreamSessionAdapter::StopSession ()
bool StreamSessionAdapter::Start () bool StreamSessionAdapter::Start ()
{ {
return StartSession( return StartSession(
GetArg(I2P_SESSION_NAME_PARAM, I2P_SESSION_NAME_DEFAULT), GetArg(I2P_SESSION_NAME_PARAM, I2P_SESSION_NAME_DEFAULT),
GetArg(I2P_SAM_HOST_PARAM, I2P_SAM_HOST_DEFAULT), GetArg(I2P_SAM_HOST_PARAM, I2P_SAM_HOST_DEFAULT),
(uint16_t)GetArg(I2P_SAM_PORT_PARAM, I2P_SAM_PORT_DEFAULT), (uint16_t)GetArg(I2P_SAM_PORT_PARAM, I2P_SAM_PORT_DEFAULT),
GetArg(I2P_SAM_MY_DESTINATION_PARAM, I2P_SAM_MY_DESTINATION_DEFAULT), GetArg(I2P_SAM_MY_DESTINATION_PARAM, I2P_SAM_MY_DESTINATION_DEFAULT),
GetArg(I2P_SAM_I2P_OPTIONS_PARAM, SAM_DEFAULT_I2P_OPTIONS)); GetArg(I2P_SAM_I2P_OPTIONS_PARAM, SAM_DEFAULT_I2P_OPTIONS));
} }
void StreamSessionAdapter::Stop () void StreamSessionAdapter::Stop ()
@ -130,88 +130,88 @@ void StreamSessionAdapter::Stop ()
SAM::SOCKET StreamSessionAdapter::accept(bool silent) SAM::SOCKET StreamSessionAdapter::accept(bool silent)
{ {
SAM::RequestResult<std::shared_ptr<SAM::Socket> > result = sessionHolder_->getSession().accept(silent); SAM::RequestResult<std::shared_ptr<SAM::Socket> > result = sessionHolder_->getSession().accept(silent);
// call Socket::release // call Socket::release
return result.isOk ? result.value->release() : SAM_INVALID_SOCKET; return result.isOk ? result.value->release() : SAM_INVALID_SOCKET;
} }
SAM::SOCKET StreamSessionAdapter::connect(const std::string& destination, bool silent) SAM::SOCKET StreamSessionAdapter::connect(const std::string& destination, bool silent)
{ {
SAM::RequestResult<std::shared_ptr<SAM::Socket> > result = sessionHolder_->getSession().connect(destination, silent); SAM::RequestResult<std::shared_ptr<SAM::Socket> > result = sessionHolder_->getSession().connect(destination, silent);
// call Socket::release // call Socket::release
return result.isOk ? result.value->release() : SAM_INVALID_SOCKET; return result.isOk ? result.value->release() : SAM_INVALID_SOCKET;
} }
bool StreamSessionAdapter::forward(const std::string& host, uint16_t port, bool silent) bool StreamSessionAdapter::forward(const std::string& host, uint16_t port, bool silent)
{ {
return sessionHolder_->getSession().forward(host, port, silent).isOk; return sessionHolder_->getSession().forward(host, port, silent).isOk;
} }
std::string StreamSessionAdapter::namingLookup(const std::string& name) const std::string StreamSessionAdapter::namingLookup(const std::string& name) const
{ {
SAM::RequestResult<const std::string> result = sessionHolder_->getSession().namingLookup(name); SAM::RequestResult<const std::string> result = sessionHolder_->getSession().namingLookup(name);
return result.isOk ? result.value : std::string(); return result.isOk ? result.value : std::string();
} }
SAM::FullDestination StreamSessionAdapter::destGenerate() const SAM::FullDestination StreamSessionAdapter::destGenerate() const
{ {
SAM::RequestResult<const SAM::FullDestination> result = sessionHolder_->getSession().destGenerate(); SAM::RequestResult<const SAM::FullDestination> result = sessionHolder_->getSession().destGenerate();
return result.isOk ? result.value : SAM::FullDestination(); return result.isOk ? result.value : SAM::FullDestination();
} }
void StreamSessionAdapter::stopForwarding(const std::string& host, uint16_t port) void StreamSessionAdapter::stopForwarding(const std::string& host, uint16_t port)
{ {
sessionHolder_->getSession().stopForwarding(host, port); sessionHolder_->getSession().stopForwarding(host, port);
} }
void StreamSessionAdapter::stopForwardingAll() void StreamSessionAdapter::stopForwardingAll()
{ {
sessionHolder_->getSession().stopForwardingAll(); sessionHolder_->getSession().stopForwardingAll();
} }
const SAM::FullDestination& StreamSessionAdapter::getMyDestination() const const SAM::FullDestination& StreamSessionAdapter::getMyDestination() const
{ {
return sessionHolder_->getSession().getMyDestination(); return sessionHolder_->getSession().getMyDestination();
} }
const sockaddr_in& StreamSessionAdapter::getSAMAddress() const const sockaddr_in& StreamSessionAdapter::getSAMAddress() const
{ {
return sessionHolder_->getSession().getSAMAddress(); return sessionHolder_->getSession().getSAMAddress();
} }
const std::string& StreamSessionAdapter::getSAMHost() const const std::string& StreamSessionAdapter::getSAMHost() const
{ {
return sessionHolder_->getSession().getSAMHost(); return sessionHolder_->getSession().getSAMHost();
} }
uint16_t StreamSessionAdapter::getSAMPort() const uint16_t StreamSessionAdapter::getSAMPort() const
{ {
return sessionHolder_->getSession().getSAMPort(); return sessionHolder_->getSession().getSAMPort();
} }
const std::string& StreamSessionAdapter::getNickname() const const std::string& StreamSessionAdapter::getNickname() const
{ {
return sessionHolder_->getSession().getNickname(); return sessionHolder_->getSession().getNickname();
} }
const std::string& StreamSessionAdapter::getSAMMinVer() const const std::string& StreamSessionAdapter::getSAMMinVer() const
{ {
return sessionHolder_->getSession().getSAMMinVer(); return sessionHolder_->getSession().getSAMMinVer();
} }
const std::string& StreamSessionAdapter::getSAMMaxVer() const const std::string& StreamSessionAdapter::getSAMMaxVer() const
{ {
return sessionHolder_->getSession().getSAMMaxVer(); return sessionHolder_->getSession().getSAMMaxVer();
} }
const std::string& StreamSessionAdapter::getSAMVersion() const const std::string& StreamSessionAdapter::getSAMVersion() const
{ {
return sessionHolder_->getSession().getSAMVersion(); return sessionHolder_->getSession().getSAMVersion();
} }
const std::string& StreamSessionAdapter::getOptions() const const std::string& StreamSessionAdapter::getOptions() const
{ {
return sessionHolder_->getSession().getOptions(); return sessionHolder_->getSession().getOptions();
} }
} // namespace SAM } // namespace SAM
@ -228,16 +228,16 @@ I2PSession::~I2PSession()
/*static*/ /*static*/
std::string I2PSession::GenerateB32AddressFromDestination(const std::string& destination) std::string I2PSession::GenerateB32AddressFromDestination(const std::string& destination)
{ {
std::string canonicalDest = destination; std::string canonicalDest = destination;
for (size_t pos = canonicalDest.find_first_of('-'); pos != std::string::npos; pos = canonicalDest.find_first_of('-', pos)) for (size_t pos = canonicalDest.find_first_of('-'); pos != std::string::npos; pos = canonicalDest.find_first_of('-', pos))
canonicalDest[pos] = '+'; canonicalDest[pos] = '+';
for (size_t pos = canonicalDest.find_first_of('~'); pos != std::string::npos; pos = canonicalDest.find_first_of('~', pos)) for (size_t pos = canonicalDest.find_first_of('~'); pos != std::string::npos; pos = canonicalDest.find_first_of('~', pos))
canonicalDest[pos] = '/'; canonicalDest[pos] = '/';
std::string rawHash = DecodeBase64(canonicalDest); std::string rawHash = DecodeBase64(canonicalDest);
uint256 hash; uint256 hash;
SHA256((const unsigned char*)rawHash.c_str(), rawHash.size(), (unsigned char*)&hash); SHA256((const unsigned char*)rawHash.c_str(), rawHash.size(), (unsigned char*)&hash);
std::string result = EncodeBase32(hash.begin(), hash.end() - hash.begin()) + ".b32.i2p"; std::string result = EncodeBase32(hash.begin(), hash.end() - hash.begin()) + ".b32.i2p";
for (size_t pos = result.find_first_of('='); pos != std::string::npos; pos = result.find_first_of('=', pos-1)) for (size_t pos = result.find_first_of('='); pos != std::string::npos; pos = result.find_first_of('=', pos-1))
result.erase(pos, 1); result.erase(pos, 1);
return result; return result;
} }

1
src/i2p.h

@ -1,4 +1,5 @@
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
// Copyright (c) 2017-2018 orignal
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

2
src/i2psam/i2psam.cpp

@ -1,5 +1,5 @@
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
// Copyright (c) 2017 orignal // Copyright (c) 2017-2018 orignal
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

2
src/i2psam/i2psam.h

@ -1,5 +1,5 @@
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
// Copyright (c) 2017 orignal // Copyright (c) 2017-2018 orignal
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

1
src/init.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
// I2P-patch // I2P-patch

1
src/init.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_INIT_H #ifndef BITCOIN_INIT_H

1
src/key.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/key.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2013 The Bitcoin developers // Copyright (c) 2009-2013 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_KEY_H #ifndef BITCOIN_KEY_H

1
src/main.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/main.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_MAIN_H #ifndef BITCOIN_MAIN_H

1
src/net.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/net.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_NET_H #ifndef BITCOIN_NET_H

1
src/netbase.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/netbase.h

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_NETBASE_H #ifndef BITCOIN_NETBASE_H

1
src/noui.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

2
src/qt/aboutdialog.cpp

@ -16,7 +16,7 @@ AboutDialog::AboutDialog(QWidget *parent) :
tr("Copyright") + QString(" &copy; 2011-%1 ").arg(COPYRIGHT_YEAR) + tr("The Litecoin developers") + QString("<br>") + tr("Copyright") + QString(" &copy; 2011-%1 ").arg(COPYRIGHT_YEAR) + tr("The Litecoin developers") + QString("<br>") +
tr("Copyright") + QString(" &copy; 2013-%1 ").arg(COPYRIGHT_YEAR) + tr("The Anoncoin developers") + QString("<br>") + tr("Copyright") + QString(" &copy; 2013-%1 ").arg(COPYRIGHT_YEAR) + tr("The Anoncoin developers") + QString("<br>") +
tr("Copyright") + QString(" &copy; 2015-%1 ").arg(COPYRIGHT_YEAR) + tr("The i2pd developers") + QString("<br>") + tr("Copyright") + QString(" &copy; 2015-%1 ").arg(COPYRIGHT_YEAR) + tr("The i2pd developers") + QString("<br>") +
tr("Copyright") + QString(" &copy; %1 ").arg(COPYRIGHT_YEAR) + tr("The Gostcoin developers") tr("Copyright") + QString(" &copy; 2017-%1 ").arg(COPYRIGHT_YEAR) + tr("The Gostcoin developers")
); );
} }

14
src/qt/bitcoingui.cpp

@ -1,12 +1,14 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2012 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// //
// I2P-patch // I2P-patch
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
//
#include <QApplication> #include <QApplication>

4
src/qt/clientmodel.cpp

@ -1,6 +1,10 @@
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// //
// I2P-patch // I2P-patch
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv
#include "clientmodel.h" #include "clientmodel.h"
#include "guiconstants.h" #include "guiconstants.h"

3
src/qt/clientmodel.h

@ -1,3 +1,6 @@
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// //
// I2P-patch // I2P-patch
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv

4
src/qt/forms/signverifymessagedialog.ui

@ -48,7 +48,7 @@
<item> <item>
<widget class="QValidatedLineEdit" name="addressIn_SM"> <widget class="QValidatedLineEdit" name="addressIn_SM">
<property name="toolTip"> <property name="toolTip">
<string>The address to sign the message with (e.g. Ler4HNAEfwYhBmGXcFP2Po1NpRUEiK8km2)</string> <string>The address to sign the message with (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</string>
</property> </property>
<property name="maxLength"> <property name="maxLength">
<number>34</number> <number>34</number>
@ -261,7 +261,7 @@
<item> <item>
<widget class="QValidatedLineEdit" name="addressIn_VM"> <widget class="QValidatedLineEdit" name="addressIn_VM">
<property name="toolTip"> <property name="toolTip">
<string>The address the message was signed with (e.g. Ler4HNAEfwYhBmGXcFP2Po1NpRUEiK8km2)</string> <string>The address the message was signed with (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</string>
</property> </property>
<property name="maxLength"> <property name="maxLength">
<number>34</number> <number>34</number>

6
src/qt/gostcoin.cpp

@ -1,8 +1,10 @@
/* /*
* W.J. van der Laan 2011-2012 * W.J. van der Laan 2011-2012
*/ */
// Copyright 2013 The Anoncoin Developers // Copyright (c) 2013 The Anoncoin Developers
// Copyright 2017 The Gostcoin Developers // Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// //
// I2P-patch // I2P-patch
// Copyright (c) 2012-2013 giv // Copyright (c) 2012-2013 giv

3827
src/qt/locale/gostcoin_en.ts

File diff suppressed because it is too large Load Diff

478
src/qt/locale/gostcoin_ru.ts

@ -1,6 +1,6 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.0"> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<!-- About Dialog --> <TS version="2.1" language="ru" sourcelanguage="en">
<context> <context>
<name>AboutDialog</name> <name>AboutDialog</name>
<message> <message>
@ -17,46 +17,48 @@
<location line="+57"/> <location line="+57"/>
<source> <source>
&lt;p&gt;This is experimental software.&lt;/p&gt; &lt;p&gt;This is experimental software.&lt;/p&gt;
&lt;p&gt;Distributed under the MIT/X11 software license, see the accompanying file COPYING or &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;http://www.opensource.org/licenses/mit-license.php&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Distributed under the MIT/X11 software license, see the accompanying file COPYING or &lt;a href=&quot;http://www.opensource.org/licenses/mit-license.php&quot;&gt;http://www.opensource.org/licenses/mit-license.php&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (&lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org/&lt;/a&gt;) and cryptographic software written by Eric Young (eay@cryptsoft.com).&lt;/p&gt;</source> &lt;p&gt;This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (&lt;a href=&quot;http://www.openssl.org/&quot;&gt;http://www.openssl.org/&lt;/a&gt;) and cryptographic software written by Eric Young (eay@cryptsoft.com).&lt;/p&gt;</source>
<translation> <translation>
&lt;p&gt;Это экспериментальная программа.&lt;/p&gt; &lt;p&gt;Это экспериментальная программа.&lt;/p&gt;
&lt;p&gt;Распространяется на правах лицензии MIT/X11, см. файл COPYING или &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;http://www.opensource.org/licenses/mit-license.php&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Распространяется на правах лицензии MIT/X11, см. файл COPYING или &lt;a href=&quot;http://www.opensource.org/licenses/mit-license.php&quot;&gt;http://www.opensource.org/licenses/mit-license.php&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Этот продукт включает ПО, разработанное OpenSSL Project для использования в OpenSSL Toolkit (&lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org/&lt;/a&gt;) и криптографическое ПО, написанное Eric Young (eay@cryptsoft.com).&lt;/p&gt;</translation> &lt;p&gt;Этот продукт включает ПО, разработанное OpenSSL Project для использования в OpenSSL Toolkit (&lt;a href=&quot;http://www.openssl.org/&quot;&gt;http://www.openssl.org/&lt;/a&gt;) и криптографическое ПО, написанное Eric Young (eay@cryptsoft.com).&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<location filename="../aboutdialog.cpp" line="+14"/> <location filename="../aboutdialog.cpp" line="+15"/>
<location line="+1"/>
<location line="+1"/>
<location line="+1"/>
<location line="+1"/>
<source>Copyright</source> <source>Copyright</source>
<translation>Все права защищены</translation> <translation>Все права защищены</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="-4"/>
<source>The Bitcoin developers</source> <source>The Bitcoin developers</source>
<translation>Разработчики Bitcoin</translation> <translation>Разработчики Bitcoin</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+1"/>
<source>The Litecoin developers</source> <source>The Litecoin developers</source>
<translation>Разработчики Litecoin</translation> <translation>Разработчики Litecoin</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+1"/>
<source>The Anoncoin developers</source> <source>The Anoncoin developers</source>
<translation>Разработчики Anoncoin</translation> <translation>Разработчики Anoncoin</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+1"/>
<source>The i2pd developers</source> <source>The i2pd developers</source>
<translation>Разработчики I2Pd</translation> <translation>Разработчики I2Pd</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+1"/>
<source>The Gostcoin developers</source> <source>The Gostcoin developers</source>
<translation>Разработчики Gostcoin</translation> <translation>Разработчики Gostcoin</translation>
</message> </message>
</context> </context>
<!-- Address Book -->
<context> <context>
<name>AddressBookPage</name> <name>AddressBookPage</name>
<message> <message>
@ -198,8 +200,6 @@
<translation>[нет метки]</translation> <translation>[нет метки]</translation>
</message> </message>
</context> </context>
<!-- Passphrase dialog -->
<context> <context>
<name>AskPassphraseDialog</name> <name>AskPassphraseDialog</name>
<message> <message>
@ -279,11 +279,12 @@
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<location line="+58"/>
<source>Wallet encrypted</source> <source>Wallet encrypted</source>
<translation>Бумажник зашифрован</translation> <translation>Бумажник зашифрован</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-56"/>
<source>Gostcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your gostcoins from being stolen by malware infecting your computer.</source> <source>Gostcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your gostcoins from being stolen by malware infecting your computer.</source>
<translation>Сейчас программа закроется для завершения процесса шифрования. Помните, что шифрование вашего бумажника не может полностью защитить ваши ГОСТкойны от кражи инфицированием вашего компьютера вредоносным ПО.</translation> <translation>Сейчас программа закроется для завершения процесса шифрования. Помните, что шифрование вашего бумажника не может полностью защитить ваши ГОСТкойны от кражи инфицированием вашего компьютера вредоносным ПО.</translation>
</message> </message>
@ -293,7 +294,7 @@
<translation>ВАЖНО: все предыдущие резервные копии вашего кошелька должны быть заменены новым зашифрованным файлом. В целях безопасности предыдущие резервные копии нешифрованного кошелька станут бесполезны, как только вы начнёте использовать новый шифрованный кошелёк.</translation> <translation>ВАЖНО: все предыдущие резервные копии вашего кошелька должны быть заменены новым зашифрованным файлом. В целях безопасности предыдущие резервные копии нешифрованного кошелька станут бесполезны, как только вы начнёте использовать новый шифрованный кошелёк.</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+9"/>
<location line="+7"/> <location line="+7"/>
<location line="+42"/> <location line="+42"/>
<location line="+6"/> <location line="+6"/>
@ -340,12 +341,10 @@
<translation>Внимание: Caps Lock включен!</translation> <translation>Внимание: Caps Lock включен!</translation>
</message> </message>
</context> </context>
<!-- GUI -->
<context> <context>
<name>BitcoinGUI</name> <name>BitcoinGUI</name>
<message> <message>
<location filename="../bitcoingui.cpp" line="+77"/> <location filename="../bitcoingui.cpp" line="+79"/>
<location line="+602"/> <location line="+602"/>
<source>Gostcoin</source> <source>Gostcoin</source>
<translation>ГОСТкойн</translation> <translation>ГОСТкойн</translation>
@ -426,7 +425,7 @@
<translation>Показать информацию о ГОСТкойн&apos;е</translation> <translation>Показать информацию о ГОСТкойн&apos;е</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+2"/>
<source>About &amp;Qt</source> <source>About &amp;Qt</source>
<translation>О &amp;Qt</translation> <translation>О &amp;Qt</translation>
</message> </message>
@ -552,17 +551,17 @@
<translation>[тестовая сеть]</translation> <translation>[тестовая сеть]</translation>
</message> </message>
<message> <message>
<location line="+22"/> <location line="+17"/>
<source>Wallet is using I2P-network only</source> <source>Wallet is using I2P-network only</source>
<translation>Кошелек работает только в I2P</translation> <translation>Кошелек работает только в I2P</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+7"/>
<source>Wallet is using mixed or non-I2P (clear) network</source> <source>Wallet is using mixed or non-I2P (clear) network</source>
<translation>Кошелек работает смешанном режиме, или без I2P</translation> <translation>Кошелек работает смешанном режиме, или без I2P</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+8"/>
<source>Wallet is running with a random generated I2P-address</source> <source>Wallet is running with a random generated I2P-address</source>
<translation>Кошелек работает со случайно сгенерированным I2P адресом</translation> <translation>Кошелек работает со случайно сгенерированным I2P адресом</translation>
</message> </message>
@ -579,12 +578,20 @@
<message numerus="yes"> <message numerus="yes">
<location line="+141"/> <location line="+141"/>
<source>%n active connection(s) to Gostcoin network</source> <source>%n active connection(s) to Gostcoin network</source>
<translation><numerusform>%n активное соединение с сетью</numerusform><numerusform>%n активных соединения с сетью</numerusform><numerusform>%n активных соединений с сетью</numerusform></translation> <translation>
<numerusform>%n активное соединение с сетью</numerusform>
<numerusform>%n активных соединения с сетью</numerusform>
<numerusform>%n активных соединений с сетью</numerusform>
</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location line="+15"/> <location line="+15"/>
<source>%n active connection(s) to I2P-Gostcoin network</source> <source>%n active connection(s) to I2P-Gostcoin network</source>
<translation><numerusform>%n активное соединение с I2P сетью</numerusform><numerusform>%n активных соединения с I2P сетью</numerusform><numerusform>%n активных соединений с I2P сетью</numerusform></translation> <translation>
<numerusform>%n активное соединение с I2P сетью</numerusform>
<numerusform>%n активных соединения с I2P сетью</numerusform>
<numerusform>%n активных соединений с I2P сетью</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
@ -624,17 +631,29 @@
<message numerus="yes"> <message numerus="yes">
<location line="+14"/> <location line="+14"/>
<source>%n hour(s)</source> <source>%n hour(s)</source>
<translation><numerusform>%n час</numerusform><numerusform>%n часа</numerusform><numerusform>%n часов</numerusform></translation> <translation>
<numerusform>%n час</numerusform>
<numerusform>%n часа</numerusform>
<numerusform>%n часов</numerusform>
</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location line="+4"/> <location line="+4"/>
<source>%n day(s)</source> <source>%n day(s)</source>
<translation><numerusform>%n день</numerusform><numerusform>%n дня</numerusform><numerusform>%n дней</numerusform></translation> <translation>
<numerusform>%n день</numerusform>
<numerusform>%n дня</numerusform>
<numerusform>%n дней</numerusform>
</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location line="+4"/> <location line="+4"/>
<source>%n week(s)</source> <source>%n week(s)</source>
<translation><numerusform>%n неделя</numerusform><numerusform>%n недели</numerusform><numerusform>%n недель</numerusform></translation> <translation>
<numerusform>%n неделя</numerusform>
<numerusform>%n недели</numerusform>
<numerusform>%n недель</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -727,7 +746,7 @@ Address: %4
<translation>Бумажник &lt;b&gt;зашифрован&lt;/b&gt; и в настоящее время &lt;b&gt;заблокирован&lt;/b&gt;</translation> <translation>Бумажник &lt;b&gt;зашифрован&lt;/b&gt; и в настоящее время &lt;b&gt;заблокирован&lt;/b&gt;</translation>
</message> </message>
<message> <message>
<location filename="../bitcoin.cpp" line="+164"/> <location filename="../gostcoin.cpp" line="+166"/>
<source>A fatal error occurred. Gostcoin can no longer continue safely and will quit.</source> <source>A fatal error occurred. Gostcoin can no longer continue safely and will quit.</source>
<translation>Произошла неисправимая ошибка. ГОСТкойн не может безопасно продолжать работу и будет закрыт.</translation> <translation>Произошла неисправимая ошибка. ГОСТкойн не может безопасно продолжать работу и будет закрыт.</translation>
</message> </message>
@ -741,25 +760,71 @@ Address: %4
<source>Failed to load the stylesheet provided.</source> <source>Failed to load the stylesheet provided.</source>
<translation>Не удалось загрузить указанный файл стиля.</translation> <translation>Не удалось загрузить указанный файл стиля.</translation>
</message> </message>
<message>
<location filename="../setupdarknet.cpp" line="+15"/>
<source>Do you run I2P on your computer?
If so, press yes to let Gostcoin configure it&apos;s connection to the I2P</source>
<translation>Используете ли вы I2P на своем компьютере?
Если это так, то нажмите &quot;Да&quot; чтобы ГОСТкойн сконфигурировал подключение через I2P</translation>
</message>
<message>
<location line="+4"/>
<source>Gostcoin Wizard - Step #1</source>
<translation>Конфигурирование ГОСТкойн - шаг #1</translation>
</message>
<message>
<location line="+5"/>
<source>Do you want to install I2P, and continue I2P setup?
If you select yes Gostcoin will quit, so you can continue the wizard after installing I2P.
If you select no, Gostcoin will write a default clearnet (regular internet) config file for you. (unsafe mode)
</source>
<translation>Вы хотите установить I2P и продолжить конфигурирование I2P?
Если вы выберете &quot;Да&quot;, ГОСТкойн будет закрыт, и вы сможете продолжить настройку после установки I2P.
Если вы выберете &quot;Нет&quot;, ГОСТкойн запишет стандатную конфигурацию работающую через интернет. (не безопасно)
</translation>
</message>
<message>
<location line="+6"/>
<source>Gostcoin Wizard - Step #2</source>
<translation>Конфигурирование ГОСТкойн - шаг #2</translation>
</message>
<message>
<location line="+17"/>
<source>Shared</source>
<translation>Смешанный</translation>
</message>
<message>
<location line="+1"/>
<source>I2P only</source>
<translation>Только I2P</translation>
</message>
<message>
<location line="+1"/>
<source>Ok, last question!
Do you want to run shared (which means you work as a bridge between the I2P and internet) or only I2P?</source>
<translation>Хорошо, последний вопрос!
Хотите ли вы запустить кошелек в смешанном (значит что вы будете работать в режиме моста между I2P и интернетом) или только-I2P режиме?</translation>
</message>
<message>
<location line="+9"/>
<source>Thanks! That was all. Enjoy your wallet :)</source>
<translation>Спасибо, это всё. Наслаждайтесь вашим кошельком :)</translation>
</message>
</context> </context>
<!-- Client Model -->
<context> <context>
<name>ClientModel</name> <name>ClientModel</name>
<message> <message>
<location filename="../clientmodel.cpp" line="+104"/> <location filename="../clientmodel.cpp" line="+114"/>
<source>Network Alert</source> <source>Network Alert</source>
<translation>Сетевое оповещение</translation> <translation>Сетевое оповещение</translation>
</message> </message>
</context> </context>
<!-- Coin control dialog -->
<context> <context>
<name>CoinControlDialog</name> <name>CoinControlDialog</name>
<message> <message>
<location filename="../forms/coincontroldialog.ui" line="+14"/> <location filename="../forms/coincontroldialog.ui" line="+14"/>
<source>Coin Control Address Selection</source> <source>Coin Control</source>
<translation>Выбор адреса контроля монет</translation> <translation>Контроль монет</translation>
</message> </message>
<message> <message>
<location line="+31"/> <location line="+31"/>
@ -922,13 +987,61 @@ Address: %4
<source>highest</source> <source>highest</source>
<translation>самый высокий</translation> <translation>самый высокий</translation>
</message> </message>
<message>
<location line="+199"/>
<source>DUST</source>
<translation>ПЫЛЬ</translation>
</message>
<message>
<location line="+10"/>
<source>This label turns red, if the transaction size is bigger than 10000 bytes.
This means a fee of at least %1 per kb is required.
Can vary +/- 1 Byte per input.</source>
<translation>Эта пометка становится красной, если размер транзакции больше 10000 байт.
Это значит, что требуется комиссия как минимум %1 на КБ.
Может отличаться на +/- 1 байт на вход.</translation>
</message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>higher</source> <source>Transactions with higher priority get more likely into a block.
<translation>выше</translation>
This label turns red, if the priority is smaller than &quot;medium&quot;.
This means a fee of at least %1 per kb is required.</source>
<translation>Транзакции с более высоким приоритетом будут вероятнее других включены в блок.
Эта пометка становится красной, если приоритет ниже, чем &quot;средний&quot;.
Это значит, что требуется комиссия как минимум %1 на КБ.</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>This label turns red, if any recipient receives an amount smaller than %1.
This means a fee of at least %2 is required.
Amounts below 0.546 times the minimum relay fee are shown as DUST.</source>
<translation>Эта пометка становится красной, если какой-либо из адресатов получает сумму менее %1.
Это значит, что требуется комиссия как минимум %2.
Суммы ниже, чем 0.546 минимальных комиссий ретрансляции, показаны как пыль.</translation>
</message>
<message>
<location line="+1"/>
<source>This label turns red, if the change is smaller than %1.
This means a fee of at least %2 is required.</source>
<translation>Эта пометка становится красной, если сдача меньше %1.
Это значит, что требуется комиссия как минимум %2.</translation>
</message>
<message>
<location line="-211"/>
<source>high</source> <source>high</source>
<translation>высокий</translation> <translation>высокий</translation>
</message> </message>
@ -955,7 +1068,7 @@ Address: %4
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>lower</source> <source>lower</source>
<translation>ниже</translation> <translation>наинизший</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -963,47 +1076,24 @@ Address: %4
<translation>самый низкий</translation> <translation>самый низкий</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location filename="../forms/coincontroldialog.ui" line="-73"/>
<location filename="../coincontroldialog.cpp" line="+11"/>
<source>(%1 locked)</source> <source>(%1 locked)</source>
<translation>(%1 заблокировано)</translation> <translation>(%1 заблокировано)</translation>
</message> </message>
<message> <message>
<location line="+178"/> <location filename="../coincontroldialog.cpp" line="+178"/>
<source>Dust</source>
<translation>Пыль</translation>
</message>
<message>
<location line="+0"/>
<source>yes</source> <source>yes</source>
<translation>да</translation> <translation>да</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location filename="../forms/coincontroldialog.ui" line="-169"/>
<location filename="../coincontroldialog.cpp" line="+0"/>
<source>no</source> <source>no</source>
<translation>нет</translation> <translation>нет</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location filename="../coincontroldialog.cpp" line="+50"/>
<source>This label turns red, if the transaction size is bigger than 10000 bytes.\n\nThis means a fee of at least %1 per kb is required.\n\nCan vary +/- 1 Byte per input.</source>
<translation>Эта пометка становится красной, если размер транзакции больше 1000 байт.\n\nЭто значит, что требуется комиссия как минимум %1 на КБ.Может отличаться на +/- 1 байт на вход.</translation>
</message>
<message>
<location line="+2"/>
<source>Transactions with higher priority get more likely into a block.\n\nThis label turns red, if the priority is smaller than \"medium\".\n\nThis means a fee of at least %1 per kb is required.</source>
<translation>Транзакции с более высоким приоритетом будут вероятнее других включены в блок.\n\nЭта пометка становится красной, если приоритет ниже, чем &quot;средний&quot;.\n\nЭто значит, что требуется комиссия как минимум %1 на КБ.</translation>
</message>
<message>
<location line="+3"/>
<source>This label turns red, if any recipient receives an amount smaller than %1.\n\nThis means a fee of at least %2 is required. \n\nAmounts below 0.546 times the minimum relay fee are shown as DUST.</source>
<translation>Эта пометка становится красной, если какой-либо из адресатов получает сумму менее %1.\n\nЭто значит, что требуется комиссия как минимум %2.\n\nСуммы ниже, чем 0.546 минимальных комиссий ретрансляции, показаны как пыль.</translation>
</message>
<message>
<location line="+2"/>
<source>This label turns red, if the change is smaller than %1.\n\nThis means a fee of at least %2 is required.</source>
<translation>Эта пометка становится красной, если сдача меньше %1.\n\nЭто значит, что требуется комиссия как минимум %2.</translation>
</message>
<message>
<location line="+37"/>
<location line="+66"/> <location line="+66"/>
<source>(no label)</source> <source>(no label)</source>
<translation>[нет метки]</translation> <translation>[нет метки]</translation>
@ -1019,8 +1109,6 @@ Address: %4
<translation>(размен)</translation> <translation>(размен)</translation>
</message> </message>
</context> </context>
<!-- Address editing dialog -->
<context> <context>
<name>EditAddressDialog</name> <name>EditAddressDialog</name>
<message> <message>
@ -1089,8 +1177,6 @@ Address: %4
<translation>Генерация нового ключа не удалась.</translation> <translation>Генерация нового ключа не удалась.</translation>
</message> </message>
</context> </context>
<!-- Help Message box -->
<context> <context>
<name>GUIUtil::HelpMessageBox</name> <name>GUIUtil::HelpMessageBox</name>
<message> <message>
@ -1135,8 +1221,6 @@ Address: %4
<translation>Показывать сплэш при запуске (по умолчанию: 1)</translation> <translation>Показывать сплэш при запуске (по умолчанию: 1)</translation>
</message> </message>
</context> </context>
<!-- Options dialog -->
<context> <context>
<name>OptionsDialog</name> <name>OptionsDialog</name>
<message> <message>
@ -1145,7 +1229,7 @@ Address: %4
<translation>Настройки</translation> <translation>Настройки</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+19"/>
<source>&amp;Main</source> <source>&amp;Main</source>
<translation>&amp;Главная</translation> <translation>&amp;Главная</translation>
</message> </message>
@ -1275,7 +1359,7 @@ Address: %4
<translation>Здесь можно выбрать язык интерфейса. Настройки вступят в силу после перезапуска ГОСТкойн.</translation> <translation>Здесь можно выбрать язык интерфейса. Настройки вступят в силу после перезапуска ГОСТкойн.</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+14"/>
<source>&amp;Unit to show amounts in:</source> <source>&amp;Unit to show amounts in:</source>
<translation>&amp;Отображать суммы в единицах: </translation> <translation>&amp;Отображать суммы в единицах: </translation>
</message> </message>
@ -1450,59 +1534,6 @@ Address: %4
<translation>Адрес прокси неверен.</translation> <translation>Адрес прокси неверен.</translation>
</message> </message>
</context> </context>
<!-- Show I2P address window -->
<context>
<name>ShowI2PAddresses</name>
<message>
<location filename="../forms/showi2paddresses.ui" line="+40"/>
<source>Dialog</source>
<translation>Диалог</translation>
</message>
<message>
<location line="+6"/>
<source>If you want to use a permanent I2P-address you have to set a &apos;mydestination&apos; option in the configuration file:</source>
<translation>Если вы хотите использовать постоянный I2P адрес, добавьте параметр &apos;mydestination&apos; в конфигурационный файл:</translation>
</message>
<message>
<location line="+10"/>
<source>Ready to save parameter (If you want to use this address save this text in the configuration file and keep it secret):</source>
<translation>Сохраните этот параметр (если вы хотите использовать данный адрес, сохраните этот текст в конфигурационный файл и держите его в сектрете):</translation>
</message>
<message>
<location line="+23"/>
<source>Address (you can publish it):</source>
<translation>Адрес (вы можете публиковать его):</translation>
</message>
<message>
<location line="+20"/>
<source>Short base32-address:</source>
<translation>Короткий base32 адрес:</translation>
</message>
<message>
<location line="+22"/>
<source>Copy &quot;mydestination&quot; parameter
to the clipboard</source>
<translation>Скопировать параметр &quot;mydestination&quot;
в буфер обмена</translation>
</message>
<message>
<location line="+8"/>
<source>Copy public address
to the clipboard</source>
<translation>Скопировать публичный адрес
в буфер обмена</translation>
</message>
<message>
<location line="+8"/>
<source>Copy b32-address
to the clipboard</source>
<translation>Скопировать b32 адрес
в буфер обмена</translation>
</message>
</context>
<!-- Overview page -->
<context> <context>
<name>OverviewPage</name> <name>OverviewPage</name>
<message> <message>
@ -1537,7 +1568,7 @@ to the clipboard</source>
<translation>Не подтверждено:</translation> <translation>Не подтверждено:</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+16"/>
<source>Total of transactions that have yet to be confirmed, and do not yet count toward the current balance</source> <source>Total of transactions that have yet to be confirmed, and do not yet count toward the current balance</source>
<translation>Общая сумма всех транзакций, которые до сих пор не подтверждены, и до сих пор не учитываются в текущем балансе</translation> <translation>Общая сумма всех транзакций, которые до сих пор не подтверждены, и до сих пор не учитываются в текущем балансе</translation>
</message> </message>
@ -1563,18 +1594,14 @@ to the clipboard</source>
<translation>не синхронизировано</translation> <translation>не синхронизировано</translation>
</message> </message>
</context> </context>
<!-- Payment server -->
<context> <context>
<name>PaymentServer</name> <name>PaymentServer</name>
<message> <message>
<location filename="../paymentserver.cpp" line="+109"/> <location filename="../paymentserver.cpp" line="+110"/>
<source>Cannot start gostcoin: click-to-pay handler</source> <source>Cannot start gostcoin: click-to-pay handler</source>
<translation>Не удаётся запустить gostcoin: обработчик click-to-pay</translation> <translation>Не удаётся запустить gostcoin: обработчик click-to-pay</translation>
</message> </message>
</context> </context>
<!-- QR Code dialog -->
<context> <context>
<name>QRCodeDialog</name> <name>QRCodeDialog</name>
<message> <message>
@ -1633,8 +1660,6 @@ to the clipboard</source>
<translation>PNG Изображения (*.png)</translation> <translation>PNG Изображения (*.png)</translation>
</message> </message>
</context> </context>
<!-- RPC console -->
<context> <context>
<name>RPCConsole</name> <name>RPCConsole</name>
<message> <message>
@ -1660,7 +1685,7 @@ to the clipboard</source>
<message> <message>
<location line="+10"/> <location line="+10"/>
<location line="+23"/> <location line="+23"/>
<location line="+26"/> <location line="+23"/>
<location line="+23"/> <location line="+23"/>
<location line="+23"/> <location line="+23"/>
<location line="+36"/> <location line="+36"/>
@ -1672,7 +1697,7 @@ to the clipboard</source>
<translation>Н/Д</translation> <translation>Н/Д</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="-214"/>
<source>Client version</source> <source>Client version</source>
<translation>Версия клиента</translation> <translation>Версия клиента</translation>
</message> </message>
@ -1686,7 +1711,7 @@ to the clipboard</source>
<source>Build date</source> <source>Build date</source>
<translation>Дата сборки</translation> <translation>Дата сборки</translation>
</message> </message>
<message> <message>
<location line="+23"/> <location line="+23"/>
<source>Startup time</source> <source>Startup time</source>
<translation>Время запуска</translation> <translation>Время запуска</translation>
@ -1726,17 +1751,17 @@ to the clipboard</source>
<source>Last block time</source> <source>Last block time</source>
<translation>Время последнего блока</translation> <translation>Время последнего блока</translation>
</message> </message>
<message> <message>
<location line="+42"/> <location line="+42"/>
<source>Debug log file</source> <source>Debug log file</source>
<translation>Отладочный лог-файл</translation> <translation>Отладочный лог-файл</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Open the Gostcoin debug log file from the current data directory. This can take a few seconds for large log files.</source> <source>Open the Gostcoin debug log file from the current data directory. This can take a few seconds for large log files.</source>
<translation>Открыть отладочный лог-файл ГОСТкойн из текущего каталога данных. Это может занять несколько секунд для больших лог-файлов.</translation> <translation>Открыть отладочный лог-файл ГОСТкойн из текущего каталога данных. Это может занять несколько секунд для больших лог-файлов.</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>&amp;Open</source> <source>&amp;Open</source>
<translation>&amp;Открыть</translation> <translation>&amp;Открыть</translation>
@ -1782,8 +1807,6 @@ to the clipboard</source>
<translation>Напишите &lt;b&gt;help&lt;/b&gt; для просмотра доступных команд.</translation> <translation>Напишите &lt;b&gt;help&lt;/b&gt; для просмотра доступных команд.</translation>
</message> </message>
</context> </context>
<!-- Send coins dialog -->
<context> <context>
<name>SendCoinsDialog</name> <name>SendCoinsDialog</name>
<message> <message>
@ -1798,7 +1821,6 @@ to the clipboard</source>
<source>Send Coins</source> <source>Send Coins</source>
<translation>Отправка</translation> <translation>Отправка</translation>
</message> </message>
<message> <message>
<location line="+76"/> <location line="+76"/>
<source>Coin Control Features</source> <source>Coin Control Features</source>
@ -1840,7 +1862,12 @@ to the clipboard</source>
<translation>Приоритет:</translation> <translation>Приоритет:</translation>
</message> </message>
<message> <message>
<location line="+51"/> <location line="+19"/>
<source>medium</source>
<translation>средний</translation>
</message>
<message>
<location line="+32"/>
<source>Fee:</source> <source>Fee:</source>
<translation>Комиссия:</translation> <translation>Комиссия:</translation>
</message> </message>
@ -1850,7 +1877,12 @@ to the clipboard</source>
<translation>Малый выход:</translation> <translation>Малый выход:</translation>
</message> </message>
<message> <message>
<location line="+51"/> <location line="+19"/>
<source>no</source>
<translation>нет</translation>
</message>
<message>
<location line="+32"/>
<source>After Fee:</source> <source>After Fee:</source>
<translation>После комиссии:</translation> <translation>После комиссии:</translation>
</message> </message>
@ -1905,12 +1937,12 @@ to the clipboard</source>
<translation>&amp;Отправить</translation> <translation>&amp;Отправить</translation>
</message> </message>
<message> <message>
<location filename="../sendcoinsdialog.cpp" line="-170"/> <location filename="../sendcoinsdialog.cpp" line="-175"/>
<source>Enter a Gostcoin address (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</source> <source>Enter a Gostcoin address (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</source>
<translation>Введите адрес Gostcoin (напр. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation> <translation>Введите адрес Gostcoin (напр. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation>
</message> </message>
<message> <message>
<location line="+14"/> <location line="+15"/>
<source>Copy quantity</source> <source>Copy quantity</source>
<translation>Копировать количество</translation> <translation>Копировать количество</translation>
</message> </message>
@ -1950,12 +1982,13 @@ to the clipboard</source>
<translation>Копировать размен</translation> <translation>Копировать размен</translation>
</message> </message>
<message> <message>
<location line="+86"/> <location line="+87"/>
<location line="+2"/>
<source>&lt;b&gt;%1&lt;/b&gt; to %2 (%3)</source> <source>&lt;b&gt;%1&lt;/b&gt; to %2 (%3)</source>
<translation>&lt;b&gt;%1&lt;/b&gt; адресату %2 (%3)</translation> <translation>&lt;b&gt;%1&lt;/b&gt; адресату %2 (%3)</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+6"/>
<source>Confirm send coins</source> <source>Confirm send coins</source>
<translation>Подтвердите отправку монет</translation> <translation>Подтвердите отправку монет</translation>
</message> </message>
@ -2020,8 +2053,6 @@ to the clipboard</source>
<translation>Внимание: неизвестный адрес для сдачи</translation> <translation>Внимание: неизвестный адрес для сдачи</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>SendCoinsEntry</name> <name>SendCoinsEntry</name>
<message> <message>
@ -2076,8 +2107,55 @@ to the clipboard</source>
<translation>Введите ГОСТкойн-адрес (например GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation> <translation>Введите ГОСТкойн-адрес (например GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation>
</message> </message>
</context> </context>
<context>
<!-- --> <name>ShowI2PAddresses</name>
<message>
<location filename="../forms/showi2paddresses.ui" line="+20"/>
<source>Dialog</source>
<translation>Диалог</translation>
</message>
<message>
<location line="+6"/>
<source>If you want to use a permanent I2P-address you have to set a &apos;mydestination&apos; option in the configuration file:</source>
<translation>Если вы хотите использовать постоянный I2P адрес, добавьте параметр &apos;mydestination&apos; в конфигурационный файл:</translation>
</message>
<message>
<location line="+10"/>
<source>Ready to save parameter (If you want to use this address save this text in the configuration file and keep it secret):</source>
<translation>Сохраните этот параметр (если вы хотите использовать данный адрес, сохраните этот текст в конфигурационный файл и держите его в сектрете):</translation>
</message>
<message>
<location line="+23"/>
<source>Address (you can publish it):</source>
<translation>Адрес (вы можете публиковать его):</translation>
</message>
<message>
<location line="+20"/>
<source>Short base32-address:</source>
<translation>Короткий base32 адрес:</translation>
</message>
<message>
<location line="+22"/>
<source>Copy &quot;mydestination&quot; parameter
to the clipboard</source>
<translation>Скопировать параметр &quot;mydestination&quot;
в буфер обмена</translation>
</message>
<message>
<location line="+8"/>
<source>Copy public address
to the clipboard</source>
<translation>Скопировать публичный адрес
в буфер обмена</translation>
</message>
<message>
<location line="+8"/>
<source>Copy b32-address
to the clipboard</source>
<translation>Скопировать b32 адрес
в буфер обмена</translation>
</message>
</context>
<context> <context>
<name>SignVerifyMessageDialog</name> <name>SignVerifyMessageDialog</name>
<message> <message>
@ -2098,7 +2176,7 @@ to the clipboard</source>
<message> <message>
<location line="+18"/> <location line="+18"/>
<source>The address to sign the message with (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</source> <source>The address to sign the message with (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</source>
<translation>Адрес, которым вы хотите подписать сообщение (напр. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation> <translation>Адрес, которым вы хотите подписать сообщение (напр. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
@ -2107,7 +2185,7 @@ to the clipboard</source>
<translation>Выберите адрес из адресной книги</translation> <translation>Выберите адрес из адресной книги</translation>
</message> </message>
<message> <message>
<location line="-194"/> <location line="-193"/>
<source>Paste address from clipboard</source> <source>Paste address from clipboard</source>
<translation>Вставить адрес из буфера обмена</translation> <translation>Вставить адрес из буфера обмена</translation>
</message> </message>
@ -2260,12 +2338,10 @@ to the clipboard</source>
<translation>Сообщение проверено.</translation> <translation>Сообщение проверено.</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>SplashScreen</name> <name>SplashScreen</name>
<message> <message>
<location filename="../splashscreen.cpp" line="+25"/> <location filename="../splashscreen.cpp" line="+26"/>
<source>Version %1</source> <source>Version %1</source>
<translation>Версия %1 </translation> <translation>Версия %1 </translation>
</message> </message>
@ -2295,14 +2371,16 @@ to the clipboard</source>
<translation>Разработчики Gostcoin</translation> <translation>Разработчики Gostcoin</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>TransactionDesc</name> <name>TransactionDesc</name>
<message numerus="yes"> <message numerus="yes">
<location filename="../transactiondesc.cpp" line="+18"/> <location filename="../transactiondesc.cpp" line="+18"/>
<source>Open for %n more block(s)</source> <source>Open for %n more block(s)</source>
<translation><numerusform>Открыто для ещё %n блока</numerusform><numerusform>Открыто для ещё %n блоков</numerusform><numerusform>Открыто для ещё %n блоков</numerusform></translation> <translation>
<numerusform>Открыто для ещё %n блока</numerusform>
<numerusform>Открыто для ещё %n блоков</numerusform>
<numerusform>Открыто для ещё %n блоков</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -2337,7 +2415,11 @@ to the clipboard</source>
<message numerus="yes"> <message numerus="yes">
<location line="+2"/> <location line="+2"/>
<source>, broadcast through %n node(s)</source> <source>, broadcast through %n node(s)</source>
<translation><numerusform>, разослано через %n узел</numerusform><numerusform>, разослано через %n узла</numerusform><numerusform>, разослано через %n узлов</numerusform></translation> <translation>
<numerusform>, разослано через %n узел</numerusform>
<numerusform>, разослано через %n узла</numerusform>
<numerusform>, разослано через %n узлов</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -2395,7 +2477,11 @@ to the clipboard</source>
<message numerus="yes"> <message numerus="yes">
<location line="-102"/> <location line="-102"/>
<source>matures in %n more block(s)</source> <source>matures in %n more block(s)</source>
<translation><numerusform>будет доступно через %n блок</numerusform><numerusform>будет доступно через %n блока</numerusform><numerusform>будет доступно через %n блоков</numerusform></translation> <translation>
<numerusform>будет доступно через %n блок</numerusform>
<numerusform>будет доступно через %n блока</numerusform>
<numerusform>будет доступно через %n блоков</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -2471,8 +2557,6 @@ to the clipboard</source>
<translation>ложь</translation> <translation>ложь</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>TransactionDescDialog</name> <name>TransactionDescDialog</name>
<message> <message>
@ -2486,8 +2570,6 @@ to the clipboard</source>
<translation>Данный диалог показывает детализированную статистику по выбранной транзакции</translation> <translation>Данный диалог показывает детализированную статистику по выбранной транзакции</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>TransactionTableModel</name> <name>TransactionTableModel</name>
<message> <message>
@ -2513,7 +2595,11 @@ to the clipboard</source>
<message numerus="yes"> <message numerus="yes">
<location line="+57"/> <location line="+57"/>
<source>Open for %n more block(s)</source> <source>Open for %n more block(s)</source>
<translation><numerusform>Открыто для ещё %n блока</numerusform><numerusform>Открыто для ещё %n блоков</numerusform><numerusform>Открыто для ещё %n блоков</numerusform></translation> <translation>
<numerusform>Открыто для ещё %n блока</numerusform>
<numerusform>Открыто для ещё %n блоков</numerusform>
<numerusform>Открыто для ещё %n блоков</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -2523,7 +2609,11 @@ to the clipboard</source>
<message numerus="yes"> <message numerus="yes">
<location line="+3"/> <location line="+3"/>
<source>Offline (%n confirmations)</source> <source>Offline (%n confirmations)</source>
<translation><numerusform>Оффлайн (%n подтверждение)</numerusform><numerusform>Оффлайн (%n подтверждения)</numerusform><numerusform>Оффлайн (%n подтверждений)</numerusform></translation> <translation>
<numerusform>Оффлайн (%n подтверждение)</numerusform>
<numerusform>Оффлайн (%n подтверждения)</numerusform>
<numerusform>Оффлайн (%n подтверждений)</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -2533,12 +2623,20 @@ to the clipboard</source>
<message numerus="yes"> <message numerus="yes">
<location line="+3"/> <location line="+3"/>
<source>Confirmed (%n confirmations)</source> <source>Confirmed (%n confirmations)</source>
<translation><numerusform>Подтверждено (%n подтверждение)</numerusform><numerusform>Подтверждено (%n подтверждения)</numerusform><numerusform>Подтверждено (%n подтверждений)</numerusform></translation> <translation>
<numerusform>Подтверждено (%n подтверждение)</numerusform>
<numerusform>Подтверждено (%n подтверждения)</numerusform>
<numerusform>Подтверждено (%n подтверждений)</numerusform>
</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location line="+8"/> <location line="+8"/>
<source>Mined balance will be available when it matures in %n more block(s)</source> <source>Mined balance will be available when it matures in %n more block(s)</source>
<translation><numerusform>Добытыми монетами можно будет воспользоваться через %n блок</numerusform><numerusform>Добытыми монетами можно будет воспользоваться через %n блока</numerusform><numerusform>Добытыми монетами можно будет воспользоваться через %n блоков</numerusform></translation> <translation>
<numerusform>Добытыми монетами можно будет воспользоваться через %n блок</numerusform>
<numerusform>Добытыми монетами можно будет воспользоваться через %n блока</numerusform>
<numerusform>Добытыми монетами можно будет воспользоваться через %n блоков</numerusform>
</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -2606,8 +2704,6 @@ to the clipboard</source>
<translation>Сумма, добавленная, или снятая с баланса.</translation> <translation>Сумма, добавленная, или снятая с баланса.</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>TransactionView</name> <name>TransactionView</name>
<message> <message>
@ -2712,7 +2808,7 @@ to the clipboard</source>
<translation>Показать подробности транзакции</translation> <translation>Показать подробности транзакции</translation>
</message> </message>
<message> <message>
<location line="+139"/> <location line="+143"/>
<source>Export Transaction Data</source> <source>Export Transaction Data</source>
<translation>Экспортировать данные транзакций</translation> <translation>Экспортировать данные транзакций</translation>
</message> </message>
@ -2777,22 +2873,26 @@ to the clipboard</source>
<translation>до</translation> <translation>до</translation>
</message> </message>
</context> </context>
<context>
<!-- --> <name>WalletFrame</name>
<message>
<location filename="../walletframe.cpp" line="+31"/>
<source>No wallet has been loaded.</source>
<translation>Кошелек не был загружен.</translation>
</message>
</context>
<context> <context>
<name>WalletModel</name> <name>WalletModel</name>
<message> <message>
<location filename="../walletmodel.cpp" line="+193"/> <location filename="../walletmodel.cpp" line="+206"/>
<source>Send Coins</source> <source>Send Coins</source>
<translation>Отправка</translation> <translation>Отправка</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>WalletView</name> <name>WalletView</name>
<message> <message>
<location filename="../walletview.cpp" line="+46"/> <location filename="../walletview.cpp" line="+52"/>
<source>&amp;Export</source> <source>&amp;Export</source>
<translation>&amp;Экспорт</translation> <translation>&amp;Экспорт</translation>
</message> </message>
@ -2832,8 +2932,6 @@ to the clipboard</source>
<translation>Данные бумажника успешно сохранены в новое место.</translation> <translation>Данные бумажника успешно сохранены в новое место.</translation>
</message> </message>
</context> </context>
<!-- -->
<context> <context>
<name>bitcoin-core</name> <name>bitcoin-core</name>
<message> <message>
@ -3083,7 +3181,7 @@ If the file does not exist, create it with owner-readable-only file permissions.
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Enable I2P-only mode</source> <source>Enable I2P-only mode</source>
<translation>Включить режим работы "только в I2P"</translation> <translation>Включить режим работы &quot;только в I2P&quot;</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -3642,7 +3740,7 @@ If the file does not exist, create it with owner-readable-only file permissions.
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>You need to rebuild the databases using -reindex to change -txindex</source> <source>You need to rebuild the database using -reindex to change -txindex</source>
<translation>Вам необходимо пересобрать базы данных с помощью -reindex, чтобы изменить -txindex</translation> <translation>Вам необходимо пересобрать базы данных с помощью -reindex, чтобы изменить -txindex</translation>
</message> </message>
<message> <message>

1
src/qt/paymentserver.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

2
src/qt/sendcoinsdialog.cpp

@ -32,7 +32,7 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
#endif #endif
#if QT_VERSION >= 0x040700 #if QT_VERSION >= 0x040700
/* Do not move this to the XML file, Qt before 4.7 will choke on it */ /* Do not move this to the XML file, Qt before 4.7 will choke on it */
ui->lineEditCoinControlChange->setPlaceholderText(tr("Enter a Gostcoin address (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG")); ui->lineEditCoinControlChange->setPlaceholderText(tr("Enter a Gostcoin address (e.g. GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG)"));
#endif #endif
addEntry(); addEntry();

2
src/qt/setupdarknet.cpp

@ -1,5 +1,5 @@
// Copyright 2013 The Anoncoin Developers // Copyright 2013 The Anoncoin Developers
// Copyright 2017 The Gostcoin Developers // Copyright 2017-2018 The Gostcoin Developers
#include <QApplication> #include <QApplication>
#include <QMessageBox> #include <QMessageBox>

14
src/qt/walletframe.cpp

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "walletframe.h" #include "walletframe.h"
#include "bitcoingui.h" #include "bitcoingui.h"
#include "walletstack.h" #include "walletstack.h"

14
src/qt/walletframe.h

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef WALLETFRAME_H #ifndef WALLETFRAME_H
#define WALLETFRAME_H #define WALLETFRAME_H

14
src/qt/walletstack.cpp

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "walletstack.h" #include "walletstack.h"
#include "walletview.h" #include "walletview.h"
#include "bitcoingui.h" #include "bitcoingui.h"

14
src/qt/walletstack.h

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef WALLETSTACK_H #ifndef WALLETSTACK_H
#define WALLETSTACK_H #define WALLETSTACK_H

14
src/qt/walletview.cpp

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "walletview.h" #include "walletview.h"
#include "bitcoingui.h" #include "bitcoingui.h"
#include "transactiontablemodel.h" #include "transactiontablemodel.h"

14
src/qt/walletview.h

@ -1,9 +1,11 @@
/* // Qt bitcoin GUI.
* Qt4 bitcoin GUI. //
* // Copyright (c) 2011-2012 W.J. van der Laan
* W.J. van der Laan 2011-2012 // Copyright (c) 2011-2012 The Bitcoin Developers
* The Bitcoin Developers 2011-2013 // Copyright (c) 2017-2018 The Gostcoin Developers
*/ // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef WALLETVIEW_H #ifndef WALLETVIEW_H
#define WALLETVIEW_H #define WALLETVIEW_H

1
src/rpcdump.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 Bitcoin Developers // Copyright (c) 2009-2012 Bitcoin Developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/rpcmining.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/rpcnet.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2009-2012 Bitcoin Developers // Copyright (c) 2009-2012 Bitcoin Developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/rpcrawtransaction.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/rpcwallet.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/script.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <boost/foreach.hpp> #include <boost/foreach.hpp>

1
src/script.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef H_BITCOIN_SCRIPT #ifndef H_BITCOIN_SCRIPT

1
src/uint256.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_UINT256_H #ifndef BITCOIN_UINT256_H

36
src/util.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
@ -143,13 +144,6 @@ public:
} }
instance_of_cinit; instance_of_cinit;
void RandAddSeed() void RandAddSeed()
{ {
// Seed with CPU performance counter // Seed with CPU performance counter
@ -212,12 +206,6 @@ uint256 GetRandHash()
return hash; return hash;
} }
// //
// OutputDebugStringF (aka printf -- there is a #define that we really // OutputDebugStringF (aka printf -- there is a #define that we really
// should get rid of one day) has been broken a couple of times now // should get rid of one day) has been broken a couple of times now
@ -398,7 +386,6 @@ void ParseString(const string& str, char c, vector<string>& v)
} }
} }
string FormatMoney(int64 n, bool fPlus) string FormatMoney(int64 n, bool fPlus)
{ {
// Note: not using straight sprintf here because we do NOT want // Note: not using straight sprintf here because we do NOT want
@ -422,7 +409,6 @@ string FormatMoney(int64 n, bool fPlus)
return str; return str;
} }
bool ParseMoney(const string& str, int64& nRet) bool ParseMoney(const string& str, int64& nRet)
{ {
return ParseMoney(str.c_str(), nRet); return ParseMoney(str.c_str(), nRet);
@ -468,7 +454,6 @@ bool ParseMoney(const char* pszIn, int64& nRet)
return true; return true;
} }
static const signed char phexdigit[256] = static const signed char phexdigit[256] =
{ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
@ -624,7 +609,6 @@ bool SoftSetBoolArg(const std::string& strArg, bool fValue)
return SoftSetArg(strArg, std::string("0")); return SoftSetArg(strArg, std::string("0"));
} }
string EncodeBase64(const unsigned char* pch, size_t len) string EncodeBase64(const unsigned char* pch, size_t len)
{ {
static const char *pbase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const char *pbase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@ -952,7 +936,6 @@ string DecodeBase32(const string& str)
return string((const char*)&vchRet[0], vchRet.size()); return string((const char*)&vchRet[0], vchRet.size());
} }
bool WildcardMatch(const char* psz, const char* mask) bool WildcardMatch(const char* psz, const char* mask)
{ {
loop loop
@ -982,7 +965,6 @@ bool WildcardMatch(const string& str, const string& mask)
return WildcardMatch(str.c_str(), mask.c_str()); return WildcardMatch(str.c_str(), mask.c_str());
} }
// Anoncoin // Anoncoin
// Write config file // Write config file
@ -1022,12 +1004,6 @@ bool writeFirstConfig(bool i2pOnlyEnabled, bool i2pEnabled)
return writeConfig(GetConfigFile().string().c_str(), pt); return writeConfig(GetConfigFile().string().c_str(), pt);
} }
static std::string FormatException(std::exception* pex, const char* pszThread) static std::string FormatException(std::exception* pex, const char* pszThread)
{ {
#ifdef WIN32 #ifdef WIN32
@ -1259,7 +1235,6 @@ bool TruncateFile(FILE *file, unsigned int length) {
#endif #endif
} }
// this function tries to raise the file descriptor limit to the requested number. // this function tries to raise the file descriptor limit to the requested number.
// It returns the actual file descriptor limit (which may be more or less than nMinFD) // It returns the actual file descriptor limit (which may be more or less than nMinFD)
int RaiseFileDescriptorLimit(int nMinFD) { int RaiseFileDescriptorLimit(int nMinFD) {
@ -1347,16 +1322,9 @@ void ShrinkDebugFile()
} }
} }
else if(file != NULL) else if(file != NULL)
fclose(file); fclose(file);
} }
// //
// "Never go to sea with two chronometers; take one or three." // "Never go to sea with two chronometers; take one or three."
// Our three time sources are: // Our three time sources are:

1
src/util.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_UTIL_H #ifndef BITCOIN_UTIL_H

1
src/version.cpp

@ -1,4 +1,5 @@
// Copyright (c) 2012 The Bitcoin developers // Copyright (c) 2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <string> #include <string>

1
src/wallet.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/wallet.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_WALLET_H #ifndef BITCOIN_WALLET_H

1
src/walletdb.cpp

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.

1
src/walletdb.h

@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2012 The Bitcoin developers // Copyright (c) 2009-2012 The Bitcoin developers
// Copyright (c) 2017-2018 The Gostcoin Developers
// Distributed under the MIT/X11 software license, see the accompanying // Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_WALLETDB_H #ifndef BITCOIN_WALLETDB_H

Loading…
Cancel
Save