rebrand(lethean): update branding, ports, and config for Lethean blockchain
- Coin: Zano → Lethean, ticker: ZAN/ZANO → LTHN - Ports: 11211 → 36941 (mainnet RPC), 46941 (testnet RPC) - Wallet: 11212 → 36944/46944 - Address prefix: iTHN - URLs: zano.org → lethean.io - Explorer links: explorer.lthn.io Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
393579bd35
commit
b955083d06
9 changed files with 214 additions and 46 deletions
4
.gitmodules
vendored
4
.gitmodules
vendored
|
|
@ -1,3 +1,3 @@
|
|||
[submodule "Zano"]
|
||||
path = Zano
|
||||
[submodule "Lethean"]
|
||||
path = Lethean
|
||||
url = https://github.com/hyle-team/zano.git
|
||||
|
|
|
|||
53
Dockerfile
Normal file
53
Dockerfile
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Build-only: compiles the C++ cryptonote native addon (lethean-util)
|
||||
# Requires the Lethean blockchain source tree mounted/copied alongside.
|
||||
#
|
||||
# Build context must be the parent directory (zano-upstream/), e.g.:
|
||||
# docker build -f zano-node-util/Dockerfile -t lethean-util .
|
||||
#
|
||||
# The blockchain repo is expected at ./blockchain (symlinked as Lethean inside the package).
|
||||
|
||||
FROM node:22 AS builder
|
||||
|
||||
# Native build dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
python3 \
|
||||
python3-pip \
|
||||
libboost-system-dev \
|
||||
libboost-date-time-dev \
|
||||
libboost-thread-dev \
|
||||
libboost-serialization-dev \
|
||||
libboost-iostreams-dev \
|
||||
libboost-locale-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
# Copy blockchain source (provides Lethean/ headers referenced by binding.gyp)
|
||||
COPY blockchain/ ./blockchain/
|
||||
|
||||
# Copy the generated currency config header into the build path that binding.gyp expects
|
||||
RUN mkdir -p blockchain/build/release/src/config
|
||||
COPY blockchain/build/release/src/config/currency_config.h \
|
||||
blockchain/build/release/src/config/currency_config.h
|
||||
|
||||
# Copy the addon source
|
||||
COPY zano-node-util/package.json zano-node-util/package-lock.json ./zano-node-util/
|
||||
COPY zano-node-util/binding.gyp zano-node-util/main.cc zano-node-util/index.js ./zano-node-util/
|
||||
|
||||
# Symlink Lethean -> ../blockchain so binding.gyp paths resolve
|
||||
RUN ln -sf /workspace/blockchain /workspace/zano-node-util/Lethean
|
||||
|
||||
WORKDIR /workspace/zano-node-util
|
||||
|
||||
RUN npm ci
|
||||
RUN npm rebuild --build-from-source
|
||||
|
||||
# Minimal runtime image with the compiled .node addon
|
||||
FROM node:22-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=builder /workspace/zano-node-util/build ./build
|
||||
COPY --from=builder /workspace/zano-node-util/index.js ./
|
||||
COPY --from=builder /workspace/zano-node-util/package.json ./
|
||||
1
Lethean
Symbolic link
1
Lethean
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
/home/claude/Code/lthn/blockchain
|
||||
57
README.md
57
README.md
|
|
@ -1,9 +1,52 @@
|
|||
Zano-Node-Util
|
||||
====================
|
||||
# lethean-util
|
||||
|
||||
CryptoNote node utility for Lethean — address generation, validation, and block/transaction processing.
|
||||
|
||||
This is Lethean's equivalent of `cryptoforknote-util`. It's a C++ native Node.js addon that links against the Lethean blockchain source tree.
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npm install
|
||||
# Requires: cmake, g++, libboost-all-dev
|
||||
# The native addon links against ../blockchain/src/ via the Lethean symlink
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var cn = require('lethean-util');
|
||||
|
||||
// Validate address
|
||||
var decoded = cn.address_decode(Buffer.from('iTHNUNiuu3VP...'));
|
||||
|
||||
// Get block hash
|
||||
var hash = cn.get_pow_hash(blockBlob);
|
||||
|
||||
// Convert block blob
|
||||
var converted = cn.convert_blob(blockBlob);
|
||||
```
|
||||
|
||||
## Functions
|
||||
|
||||
| Function | Purpose |
|
||||
|----------|---------|
|
||||
| `address_decode` | Decode a Lethean address (iTHN prefix) |
|
||||
| `is_address_valid` | Validate address format |
|
||||
| `convert_blob` | Convert block blob for mining |
|
||||
| `get_pow_hash` | Calculate ProgPoWZ proof-of-work hash |
|
||||
| `get_hash_from_block_template_with_extra` | Hash with extra data |
|
||||
| `get_blob_from_block_template` | Extract blob from template |
|
||||
| `get_id_hash` | Get block ID hash |
|
||||
| `get_merged_mining_nonce_size` | Merged mining nonce size |
|
||||
| `baseDiff` | Base difficulty calculation |
|
||||
|
||||
## Network
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Address prefix | iTHN (standard), iTHn (integrated) |
|
||||
| Decimal places | 12 |
|
||||
| Coin units | 1,000,000,000,000 |
|
||||
|
||||
Based on: https://github.com/Snipa22/node-cryptonote-util
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
* Boost (http://www.boost.org/)
|
||||
|
|
|
|||
1
Zano
1
Zano
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 60471f7f46c1e5e470f704c9e841a7f9bab3620e
|
||||
68
binding.gyp
68
binding.gyp
|
|
@ -4,40 +4,41 @@
|
|||
"target_name": "cryptonote",
|
||||
"sources": [
|
||||
"main.cc",
|
||||
"Zano/src/currency_core/currency_format_utils.cpp",
|
||||
"Zano/src/currency_core/currency_format_utils_blocks.cpp",
|
||||
"Zano/src/currency_core/basic_pow_helpers.cpp",
|
||||
"Zano/src/currency_core/basic_pow_helpers.cpp",
|
||||
"Zano/src/crypto/tree-hash.c",
|
||||
"Zano/src/crypto/crypto.cpp",
|
||||
"Zano/src/crypto/crypto-ops.c",
|
||||
"Zano/src/crypto/crypto-sugar.cpp",
|
||||
"Zano/src/crypto/zarcanum.cpp",
|
||||
"Zano/src/crypto/range_proofs.cpp",
|
||||
"Zano/src/crypto/crypto-ops-data.c",
|
||||
"Zano/src/crypto/hash.c",
|
||||
"Zano/src/crypto/keccak.c",
|
||||
"Zano/src/common/base58.cpp",
|
||||
"Zano/contrib/ethereum/libethash/ethash.cpp",
|
||||
"Zano/contrib/ethereum/libethash/keccak.c",
|
||||
"Zano/contrib/ethereum/libethash/keccakf800.c",
|
||||
"Zano/contrib/ethereum/libethash/progpow.cpp",
|
||||
"Zano/contrib/ethereum/libethash/managed.cpp",
|
||||
"Zano/src/currency_core/currency_format_utils_transactions.cpp",
|
||||
"Zano/src/currency_core/genesis.cpp",
|
||||
"Zano/src/currency_core/genesis_acc.cpp",
|
||||
"Zano/src/crypto/random.c",
|
||||
"Zano/contrib/ethereum/libethash/keccakf1600.c",
|
||||
"Zano/contrib/ethereum/libethash/managed.cpp",
|
||||
"Zano/contrib/ethereum/libethash/primes.c"
|
||||
"Lethean/src/currency_core/currency_format_utils.cpp",
|
||||
"Lethean/src/currency_core/currency_format_utils_blocks.cpp",
|
||||
"Lethean/src/currency_core/basic_pow_helpers.cpp",
|
||||
"Lethean/src/currency_core/basic_pow_helpers.cpp",
|
||||
"Lethean/src/crypto/tree-hash.c",
|
||||
"Lethean/src/crypto/crypto.cpp",
|
||||
"Lethean/src/crypto/crypto-ops.c",
|
||||
"Lethean/src/crypto/crypto-sugar.cpp",
|
||||
"Lethean/src/crypto/zarcanum.cpp",
|
||||
"Lethean/src/crypto/range_proofs.cpp",
|
||||
"Lethean/src/crypto/crypto-ops-data.c",
|
||||
"Lethean/src/crypto/hash.c",
|
||||
"Lethean/src/crypto/keccak.c",
|
||||
"Lethean/src/common/base58.cpp",
|
||||
"Lethean/contrib/ethereum/libethash/ethash.cpp",
|
||||
"Lethean/contrib/ethereum/libethash/keccak.c",
|
||||
"Lethean/contrib/ethereum/libethash/keccakf800.c",
|
||||
"Lethean/contrib/ethereum/libethash/progpow.cpp",
|
||||
"Lethean/contrib/ethereum/libethash/managed.cpp",
|
||||
"Lethean/src/currency_core/currency_format_utils_transactions.cpp",
|
||||
"Lethean/src/currency_core/genesis.cpp",
|
||||
"Lethean/src/currency_core/genesis_acc.cpp",
|
||||
"Lethean/src/crypto/random.c",
|
||||
"Lethean/contrib/ethereum/libethash/keccakf1600.c",
|
||||
"Lethean/contrib/ethereum/libethash/managed.cpp",
|
||||
"Lethean/contrib/ethereum/libethash/primes.c"
|
||||
],
|
||||
"include_dirs": [
|
||||
"Zano/src/crypto",
|
||||
"Zano/src",
|
||||
"Zano/contrib",
|
||||
"Zano/contrib/epee/include",
|
||||
"Zano/contrib/eos_portable_archive",
|
||||
"Zano/contrib/ethereum/libethash",
|
||||
"Lethean/src/crypto",
|
||||
"Lethean/src",
|
||||
"Lethean/contrib",
|
||||
"Lethean/contrib/epee/include",
|
||||
"Lethean/contrib/eos_portable_archive",
|
||||
"Lethean/contrib/ethereum/libethash",
|
||||
"Lethean/contrib/randomx/src",
|
||||
"<!(node -e \"require('nan')\")"
|
||||
],
|
||||
"link_settings": {
|
||||
|
|
@ -57,7 +58,8 @@
|
|||
"cflags_cc": [
|
||||
"-std=c++17",
|
||||
"-fexceptions",
|
||||
"-frtti"
|
||||
"-frtti",
|
||||
"-fpermissive"
|
||||
],
|
||||
"conditions": [
|
||||
[
|
||||
|
|
|
|||
2
main.cc
2
main.cc
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
#if BOOST_VERSION < 107500
|
||||
#pragma message("Detected Boost version: " BOOST_LIB_VERSION)
|
||||
#error "Boost version 1.75.0 or newer is required for zano-node-util."
|
||||
#error "Boost version 1.75.0 or newer is required for lethean-node-util."
|
||||
#endif
|
||||
|
||||
#define THROW_ERROR_EXCEPTION(x) Nan::ThrowError(x)
|
||||
|
|
|
|||
70
package-lock.json
generated
Normal file
70
package-lock.json
generated
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"name": "lethean-util",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "lethean-util",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"bignum": "^0.13.1",
|
||||
"bindings": "*",
|
||||
"nan": "^2.14.2"
|
||||
}
|
||||
},
|
||||
"node_modules/bignum": {
|
||||
"version": "0.13.1",
|
||||
"resolved": "https://registry.npmjs.org/bignum/-/bignum-0.13.1.tgz",
|
||||
"integrity": "sha512-sPtvw/knt6nmBm4fPgsu+FtNypM5y2Org723h9fAOl7UDgc8nyIbVbcBCatVR/nOJWCsKctSE14u+3bW5sAkFA==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.14.0",
|
||||
"safe-buffer": "^5.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bindings": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nan": {
|
||||
"version": "2.26.2",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.26.2.tgz",
|
||||
"integrity": "sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "zano-util",
|
||||
"name": "lethean-util",
|
||||
"version": "0.0.1",
|
||||
"main": "cryptonote",
|
||||
"author": {
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/hyle-team/zano-node-util.git"
|
||||
"url": "https://github.com/hyle-team/lethean-node-util.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"bindings": "*",
|
||||
|
|
@ -18,6 +18,6 @@
|
|||
"keywords": [
|
||||
"cryptonight",
|
||||
"cryptonote",
|
||||
"zano"
|
||||
"lethean"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue