Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c7e951adb | |||
| 08b98a8775 | |||
| 0f307a498d | |||
| e54120108e | |||
| 50713cc87b |
@@ -1,4 +1,4 @@
|
||||
# Triangles (TRI) - v5.0.0.0 "Black Pharao"
|
||||
# Cryptographic Triangles (TRI) - v5.1.4
|
||||
|
||||
Triangles is a privacy-focused cryptocurrency featuring Proof-of-Stake consensus, Tor v3 onion routing, and built-in encrypted messaging. Originally launched in July 2014, the chain was revived in March 2026 after being frozen since December 2022.
|
||||
|
||||
|
||||
+3
-3
@@ -6,9 +6,9 @@
|
||||
//
|
||||
|
||||
// These need to be macros, as version.cpp's and triangles-qt.rc's voodoo requires it
|
||||
#define CLIENT_VERSION_MAJOR 4
|
||||
#define CLIENT_VERSION_MINOR 2
|
||||
#define CLIENT_VERSION_REVISION 1
|
||||
#define CLIENT_VERSION_MAJOR 5
|
||||
#define CLIENT_VERSION_MINOR 1
|
||||
#define CLIENT_VERSION_REVISION 4
|
||||
#define CLIENT_VERSION_BUILD 0
|
||||
|
||||
// Converts the parameter X to a string after macro replacement on X has been performed.
|
||||
|
||||
@@ -591,7 +591,7 @@ QDialog {
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>About Triangles</string>
|
||||
<string>About Cryptographic Triangles</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -808,7 +808,7 @@ QPushButton:hover {
|
||||
<cursorShape>IBeamCursor</cursorShape>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"><html><head/><body><p>Copyright © 2009-2015 The Bitcoin developers<br/>Copyright © 2014-2015 Triangles team</p></body></html></string>
|
||||
<string notr="true"><html><head/><body><p>Copyright © 2009-2015 The Bitcoin developers<br/>Copyright © 2014-2026 Cryptographic Triangles team</p></body></html></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
void refreshMessageTable()
|
||||
{
|
||||
cachedMessageTable.clear();
|
||||
|
||||
|
||||
if (parent->getWalletModel()->getEncryptionStatus() == WalletModel::Locked)
|
||||
{
|
||||
// -- messages are stored encrypted, can't load them without the private keys
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
|
||||
sent_datetime .setTime_t(msg.timestamp);
|
||||
received_datetime.setTime_t(smsgStored.timeReceived);
|
||||
|
||||
|
||||
memcpy(&vchKey[0], chKey, 18);
|
||||
|
||||
addMessageEntry(MessageTableEntry(vchKey,
|
||||
@@ -112,7 +112,7 @@ public:
|
||||
|
||||
sent_datetime .setTime_t(msg.timestamp);
|
||||
received_datetime.setTime_t(smsgStored.timeReceived);
|
||||
|
||||
|
||||
memcpy(&vchKey[0], chKey, 18);
|
||||
|
||||
addMessageEntry(MessageTableEntry(vchKey,
|
||||
|
||||
@@ -18,14 +18,14 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904E4" // U.S. English - multilingual (hex)
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Triangles"
|
||||
VALUE "FileDescription", "Triangles-Qt (OSS GUI client for Triangles)"
|
||||
VALUE "CompanyName", "Cryptographic Triangles"
|
||||
VALUE "FileDescription", "Cryptographic Triangles Qt Wallet"
|
||||
VALUE "FileVersion", VER_FILEVERSION_STR
|
||||
VALUE "InternalName", "Triangles-qt"
|
||||
VALUE "LegalCopyright", "2014-2015 Triangles Team, 2012-2015 PPCoin developers, 2009-2015 The Bitcoin developers"
|
||||
VALUE "InternalName", "triangles-qt"
|
||||
VALUE "LegalCopyright", "2014-2026 Cryptographic Triangles Team, 2012-2015 PPCoin developers, 2009-2015 The Bitcoin developers"
|
||||
VALUE "LegalTrademarks1", "Distributed under the MIT/X11 software license, see the accompanying file COPYING or http://www.opensource.org/licenses/mit-license.php."
|
||||
VALUE "OriginalFilename", "triangled-qt.exe"
|
||||
VALUE "ProductName", "Triangles-Qt"
|
||||
VALUE "OriginalFilename", "triangles-qt.exe"
|
||||
VALUE "ProductName", "Cryptographic Triangles"
|
||||
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
|
||||
END
|
||||
END
|
||||
|
||||
+90
-1
@@ -889,7 +889,96 @@ Value smsgbuckets(const Array& params, bool fHelp)
|
||||
result.push_back(Pair("result", "Unknown Mode."));
|
||||
result.push_back(Pair("expected", "[stats|dump]."));
|
||||
};
|
||||
|
||||
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
Value smsgbroadcast(const Array& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() != 2)
|
||||
throw runtime_error(
|
||||
"smsgbroadcast <addrFrom> <message>\n"
|
||||
"Send an encrypted message to all known public keys in the smsgDB.\n"
|
||||
"Returns the number of recipients and any failures.");
|
||||
|
||||
if (!fSecMsgEnabled)
|
||||
throw runtime_error("Secure messaging is disabled.");
|
||||
|
||||
if (pwalletMain->IsLocked())
|
||||
throw runtime_error("Wallet is locked.");
|
||||
|
||||
std::string addrFrom = params[0].get_str();
|
||||
std::string msg = params[1].get_str();
|
||||
|
||||
// Validate sender address
|
||||
CTrianglesAddress coinAddrFrom(addrFrom);
|
||||
if (!coinAddrFrom.IsValid())
|
||||
throw runtime_error("Invalid from address.");
|
||||
|
||||
Object result;
|
||||
uint32_t nSent = 0;
|
||||
uint32_t nFailed = 0;
|
||||
Array failures;
|
||||
|
||||
{
|
||||
LOCK(cs_smsgDB);
|
||||
|
||||
SecMsgDB dbPub;
|
||||
if (!dbPub.Open("r"))
|
||||
throw runtime_error("Could not open smsgDB.");
|
||||
|
||||
// Iterate all "pk" entries
|
||||
std::string sPrefix("pk");
|
||||
leveldb::Iterator* it = dbPub.pdb->NewIterator(leveldb::ReadOptions());
|
||||
for (it->Seek(sPrefix); it->Valid(); it->Next())
|
||||
{
|
||||
std::string key = it->key().ToString();
|
||||
if (key.size() < 2 || key[0] != 'p' || key[1] != 'k')
|
||||
break;
|
||||
|
||||
// Deserialize the CKeyID from the key (after "pk" prefix)
|
||||
CDataStream ssKey(key.data(), key.data() + key.size(), SER_DISK, CLIENT_VERSION);
|
||||
char prefix[2];
|
||||
ssKey >> prefix[0];
|
||||
ssKey >> prefix[1];
|
||||
CKeyID ckidTo;
|
||||
ssKey >> ckidTo;
|
||||
|
||||
// Convert CKeyID to address string
|
||||
CTrianglesAddress addrTo(ckidTo);
|
||||
if (!addrTo.IsValid())
|
||||
continue;
|
||||
|
||||
std::string sAddrTo = addrTo.ToString();
|
||||
|
||||
// Skip sending to self
|
||||
if (sAddrTo == addrFrom)
|
||||
continue;
|
||||
|
||||
std::string sError;
|
||||
if (SecureMsgSend(addrFrom, sAddrTo, msg, sError) != 0)
|
||||
{
|
||||
nFailed++;
|
||||
Object objFail;
|
||||
objFail.push_back(Pair("address", sAddrTo));
|
||||
objFail.push_back(Pair("error", sError));
|
||||
failures.push_back(objFail);
|
||||
} else
|
||||
{
|
||||
nSent++;
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
|
||||
char cbuf[256];
|
||||
snprintf(cbuf, sizeof(cbuf), "Broadcast sent to %u recipients, %u failed.", nSent, nFailed);
|
||||
result.push_back(Pair("result", std::string(cbuf)));
|
||||
result.push_back(Pair("sent", (int)nSent));
|
||||
result.push_back(Pair("failed", (int)nFailed));
|
||||
if (nFailed > 0)
|
||||
result.push_back(Pair("failures", failures));
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
@@ -336,6 +336,7 @@ static const CRPCCommand vRPCCommands[] =
|
||||
{ "smsginbox", &smsginbox, false, false},
|
||||
{ "smsgoutbox", &smsgoutbox, false, false},
|
||||
{ "smsgbuckets", &smsgbuckets, false, false},
|
||||
{ "smsgbroadcast", &smsgbroadcast, false, false},
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -247,6 +247,7 @@ extern json_spirit::Value smsgsendanon(const json_spirit::Array& params, bool fH
|
||||
extern json_spirit::Value smsginbox(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value smsgoutbox(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value smsgbuckets(const json_spirit::Array& params, bool fHelp);
|
||||
extern json_spirit::Value smsgbroadcast(const json_spirit::Array& params, bool fHelp);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
// Name of client reported in the 'version' message. Report the same name
|
||||
// for both trianglesd and triangles-qt, to make it harder for attackers to
|
||||
// target servers or GUI users specifically.
|
||||
const std::string CLIENT_NAME("Black Pharao");
|
||||
const std::string CLIENT_NAME("Cryptographic Triangles");
|
||||
|
||||
// Client version number
|
||||
#define CLIENT_VERSION_SUFFIX ""
|
||||
|
||||
+2
-2
@@ -52,8 +52,8 @@ static const int BIP0031_VERSION = 60000;
|
||||
static const int MEMPOOL_GD_VERSION = 60002;
|
||||
|
||||
#define DISPLAY_VERSION_MAJOR 5
|
||||
#define DISPLAY_VERSION_MINOR 0
|
||||
#define DISPLAY_VERSION_REVISION 0
|
||||
#define DISPLAY_VERSION_MINOR 1
|
||||
#define DISPLAY_VERSION_REVISION 4
|
||||
#define DISPLAY_VERSION_BUILD 0
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
TEMPLATE = app
|
||||
TARGET = triangles-qt
|
||||
|
||||
VERSION = 5.0.0.0
|
||||
VERSION = 5.1.4.0
|
||||
INCLUDEPATH += src src/json src/qt src/qt/plugins/mrichtexteditor
|
||||
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN BOOST_BIND_GLOBAL_PLACEHOLDERS __NO_SYSTEM_INCLUDES
|
||||
CONFIG += no_include_pwd
|
||||
|
||||
Reference in New Issue
Block a user