添加对 Tari Solo 的支持
Some checks failed
Build and Release / build-and-test (amd64, ubuntu) (push) Failing after 16s
Build and Release / build-and-test (arm64, ubuntu) (push) Failing after 22s
Build and Release / build-and-test (amd64, alpine) (push) Successful in 32s
Build and Release / build-and-test (arm64, alpine) (push) Successful in 53s
Build and Release / release (push) Has been skipped

This commit is contained in:
2025-12-05 17:45:21 +08:00
parent e88c5865e6
commit 7428b5849f

43
init.sh
View File

@@ -14,5 +14,46 @@ sed -i 's/"donate-level": 2/"donate-level": 0/' src/config.json
sed -i 's/xmrigcc/xxxigcc/' src/version.h sed -i 's/xmrigcc/xxxigcc/' src/version.h
sed -i 's/XMRigCC/XXXigCC/' src/version.h sed -i 's/XMRigCC/XXXigCC/' src/version.h
# Add Tari Solo support information to APP_DESC for --version output
sed -i 's/\(#define APP_DESC .*\)"/\1 (with Tari Solo Mining Support)"/' src/version.h
# Modify the config.json to set verbose to true # Modify the config.json to set verbose to true
sed -i 's/"verbose": false/"verbose": true/' src/config.json sed -i 's/"verbose": false/"verbose": true/' src/config.json
# Modify BlockTemplate.cpp to support Tari 76-byte solo mining format
echo "Adding Tari Solo Mining support to BlockTemplate.cpp..."
# Add Tari format detection at the beginning of parse(bool hashes) function
# Find the line "bool xmrig::BlockTemplate::parse(bool hashes)" and add Tari detection after the opening brace
sed -i '/^bool xmrig::BlockTemplate::parse(bool hashes)/,/^{/a\
\/\/ Detect Tari solo mining format (76 bytes)\
\/\/ Format: 3 bytes header + 32 bytes mining_hash + 8 bytes nonce + 33 bytes pow\
if (m_blob.size() == 76) {\
\/\/ Tari solo mining format - use fixed-size parsing (no varint)\
BlobReader<false> ar(m_blob.data(), m_blob.size());\
\
\/\/ Skip 3-byte header (major_version, minor_version, timestamp - all 0 for Tari)\
ar.skip(3);\
\
\/\/ Skip 32-byte mining_hash\
ar.skip(32);\
\
\/\/ Nonce is at offset 35 (3 + 32)\
setOffset(NONCE_OFFSET, 35);\
ar.skip(8); \/\/ Skip nonce (8 bytes, big-endian)\
\
\/\/ Skip 33-byte PoW data\
ar.skip(33);\
\
\/\/ For Tari, we do not need to parse miner tx or other Monero-specific fields\
\/\/ Just accept the template and let XMRig modify the nonce\
return true;\
}\
\
\/\/ Original Monero varint parsing for non-Tari formats
' src/base/tools/cryptonote/BlockTemplate.cpp
# Change the original BlobReader to BlobReader<true> to explicitly use varint parsing
sed -i 's/BlobReader ar(m_blob\.data(), m_blob\.size());/BlobReader<true> ar(m_blob.data(), m_blob.size());/' src/base/tools/cryptonote/BlockTemplate.cpp
echo "✅ Tari Solo Mining support added to BlockTemplate.cpp"