Skip to content

Commit decaeac

Browse files
committed
update to ScyWeb
1 parent 4e1201b commit decaeac

20 files changed

Lines changed: 683 additions & 114 deletions

.github/workflows/kernel-parity.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jobs:
4343
run: |
4444
cd sdk/python
4545
pip install -r requirements.txt
46+
export PYTHONPATH=$PYTHONPATH:.
4647
python test_vines.py
4748
4849
# --- JAVASCRIPT & REACT NATIVE ---
@@ -79,7 +80,7 @@ jobs:
7980
if: matrix.kernel == 'go'
8081
run: |
8182
cd sdk/go
82-
go run test_vines.go
83+
go run .
8384
8485
# --- JAVA & KOTLIN ---
8586
- name: Setup Java/Kotlin
@@ -112,5 +113,5 @@ jobs:
112113
if: matrix.kernel == 'swift'
113114
run: |
114115
cd sdk/swift
115-
# Use swift interpret mode for a single file test
116-
swift test_vines.swift
116+
swiftc ScyKernel.swift test_vines.swift -o test_runner
117+
./test_runner

ScyWebCompressor.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ <h1 style="text-align:center;">ScyWeb LUMA-DELTA <span style="color:var(--accent
6161
const img = new Image();
6262
img.onload = function() {
6363
if (img.width !== img.height) {
64-
log(`<br>ScyWeb Error: Image must be a square (Current: ${img.width}x${img.height})`);
65-
return;
66-
}
64+
log(`<br>ScyWeb Error: Image must be a square (Current: ${img.width}x${img.height})`);
65+
return;
66+
}
6767
const n = 256; canvas.width = n; canvas.height = n;
6868
ctx.drawImage(img, 0, 0, n, n);
6969
const pix = ctx.getImageData(0, 0, n, n).data;

sdk/README.md

Lines changed: 125 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,149 @@
33
**Protocol Version:** ? (Geometric Entropy)
44
**Audit Date:** April 2026
55

6-
This directory contains the **Cross-Kernel Parity Engine**. The purpose of these tests is to prove that the ScyWeb "Vine" architecture generates mathematically identical image-databases across ten different programming languages that have different checksums, making them immune to file checking de-raveling schemes. Data sowed in **Java** can be harvested by **C++** or **Node.js** with zero bit-drift.
6+
This directory contains the **Cross-Kernel Parity Engine**. The purpose of these tests is to prove that the ScyWeb "Vine" architecture generates mathematically identical image-databases across ten different programming languages. Data sowed in **Java** can be harvested by **C++**, **Swift**, or **PHP** with zero bit-drift.
7+
8+
By utilizing **Vectorial Normalization** and **Space-Filling Curves**, ScyWeb turns standard high-resolution images into high-entropy, decentralized databases with different checksums that produce the same results, making them immune to traditional file-checking de-raveling schemes while having simultaneous data parity.
79

810
---
911

1012
## 📂 Directory Structure
1113

12-
* **`tests/parity_check.sh`**: An orchestration script representing the original method, executing all 10 kernels (collision unsafe).
13-
* **`tests/parity_images/`**: A folder storing `.ppm` database files from the parity_check.sh script for harvest checking (auto-generated).
14-
* **`tests/vines_check.sh`**: An orchestration script representing the final method, executing all 10 kernels (collision safe).
15-
* **`tests/vines_images/`**: A folder storing `.ppm` database files from the vines_check.sh script for harvest checking (auto-generated).
16-
* **`tests/visual_db.sh`**: An orchestration script to convert all `.ppm` database files to a `.png` to prove image is database.
17-
* **`tests/visual_audits/`**: A folder storing `.png` database files from the parity_check.sh and vines_check.sh script after running visual_db.sh.
14+
* **`tests/vines_check.sh`**: The primary orchestration script executing the **Zero-Collision** kernels across all 10 languages.
15+
* **`tests/vines_images/`**: Stores `.ppm` database files generated by the kernels (auto-generated).
16+
* **`tests/visual_db.sh`**: Converts `.ppm` database files to `.png` to provide a visual audit of the obfuscated data.
17+
* **`tests/visual_audits/`**: Stores high-resolution `.png` renders of the image-databases for visual inspection.
18+
19+
> **Note**: The original method is being developed into a separate SDK which provides image databasing done with different architecture. It is currently under development.
1820
1921
---
2022

21-
## 🧪 The Vine Method: How it Works
23+
## 🧪 The ScyWeb Method: Geometric Entropy
2224

23-
The ScyWeb SDK treats a 4000x4000 pixel image as a coordinate-mapped grid. To achieve **10-Language Parity**, we use a standardized coordinate extraction method that remains consistent regardless of the underlying memory model.
25+
The ScyWeb SDK treats a 4000x4000 pixel image (16,000,000 pixels) as a coordinate-mapped grid. To achieve **10-Language Parity**, we utilize a deterministic projection model that avoids the "clumping" issues of standard modulo math.
2426

25-
### 1. Hex-Coordinate Mapping
26-
Every data record is sowed at a specific $(x, y)$ coordinate derived from a SHA-256 hash. We use a **16-bit split** to ensure the math remains consistent across 32-bit and 64-bit systems.
27+
### 1. Vectorial Normalization
28+
Instead of simple remainders, ScyWeb uses **Vectorial Normalization** to map a 32-bit FNV-1a hash into the coordinate space. This ensures a perfectly linear distribution of data across the 16M pixel canvas.
2729

28-
$$Hash = \text{SHA-256}(Prefix + ID + Salt)$$
29-
$$x = \text{int}(Hash[0:4], 16) \pmod{4000}$$
30-
$$y = \text{int}(Hash[4:8], 16) \pmod{4000}$$
30+
$$Index = \lfloor (\frac{\text{unsigned } Hash}{2^{32}}) \times 16,000,000 \rfloor$$
3131

32-
### 2. The Vines Method
33-
Unlike standard steganography which often uses LSB replacement in a linear fashion, a **Vine** is a self-terminating data sequence that "grows" through the coordinate space.
32+
### 2. Zero-Collision "Vine" Architecture
33+
A **Vine** is a self-terminating, high-capacity data sequence. Unlike standard steganography, ScyWeb provides a dedicated, sequential buffer for every entry.
3434

35-
* **Sowing**: The kernel starts at the calculated $(x, y)$ and writes the payload in 3-byte RGB chunks.
36-
* **Traversal**: The pointer moves to the next pixel for each chunk, following a deterministic path (e.g., Hilbert Curve or incremental step).
37-
* **Termination**: A `\0` null-terminator is injected at the end of the string. This allows any harvester to extract the record without needing a centralized file allocation table (FAT).
35+
* **Sequential Packing**: Each vine is allocated **1,600 pixels (4.8 KB)** of contiguous space. This multiplier ensures that up to **10,000 unique records** can be sowed without a single pixel collision.
36+
* **Fractal Traversal**: The 1D index is mapped to 2D $(x, y)$ coordinates using **Hilbert Space-Filling Curves**. This preserves spatial locality and ensures that data remains geometrically structured yet visually indistinguishable from noise.
37+
* **XOR Obfuscation**: Payloads are XORed directly into the Red channel of the image, making the database appear as high-entropy "grain" to any viewer.
38+
* **Autonomous Termination**: Records are null-terminated (`\0`). This allows any kernel to harvest data without needing a centralized File Allocation Table (FAT) or external metadata.
3839

3940
---
4041

4142
## 🛠 Supported Kernels
4243

43-
| Kernel | Runtime/Compiler | Method |
44+
The following kernels have been synchronized for bit-perfect parity, regardless of the underlying memory model or integer-handling behavior (32-bit vs 64-bit).
45+
46+
| Kernel | Runtime/Compiler | Status | Parity Method |
47+
| :--- | :--- | :--- | :--- |
48+
| **CPP** | g++ 11+ | ✅ Green | Native `uint32_t` |
49+
| **RUST** | rustc 1.70+ | ✅ Green | `wrapping_mul` / `u32` |
50+
| **JAVA** | OpenJDK 17+ | ✅ Green | Masked `Long` Parity |
51+
| **NODE** | Node.js 20+ | ✅ Green | `Math.imul` / `>>> 0` |
52+
| **PYTHON** | Python 3.10+ | ✅ Green | `ctypes.c_uint32` |
53+
| **GO** | Go 1.21+ | ✅ Green | Native `uint32` |
54+
| **SWIFT** | Swift 5.9+ | ✅ Green | `UInt32` Overflow Ops |
55+
| **PHP** | PHP 8.2+ | ✅ Green | `& 0xFFFFFFFF` Masking |
56+
| **KOTLIN** | Kotlin 1.9+ | ✅ Green | `UInt` / `toLong` |
57+
| **RN** | Hermes/V8 | ✅ Green | Polyfilled Buffer/FS |
58+
59+
---
60+
61+
## 🚀 Integration Guide
62+
Developers can integrate any ScyKernel to create a cross-platform hidden database. Because the logic is mathematically identical, a **Python** backend can "sow" a secret, and a **Swift** mobile app can "harvest" it from the same image file with absolute zero bit-drift.
63+
64+
To maintain cross-language parity, use these official integration methods. This allows you to receive critical updates (like the v2.5 Vectorial Normalization) with a single command.
65+
66+
---
67+
68+
### 📦 Package Manager Integration
69+
70+
| Language | Method | Command / Config |
4471
| :--- | :--- | :--- |
45-
| **CPP** | g++ (libcrypto) | Native Binary |
46-
| **RUST** | rustc (sha2) | System Native |
47-
| **JAVA** | javac (MessageDigest) | JVM |
48-
| **NODE** | node (crypto) | V8 Engine |
49-
| **PYTHON** | python3 (hashlib) | Interpreted |
50-
| **GO** | go run (crypto/sha256) | Compiled |
51-
| **SWIFT** | swift (CommonCrypto) | Native |
52-
| **PHP** | php (hash) | CLI |
53-
| **KOTLIN** | kotlinc | JVM Script |
54-
| **RN** | node (Simulated) | Mobile Standard |
72+
| **Node.js** | NPM | `npm install github:mdbench/ScyWeb#subdirectory=sdk/node` |
73+
| **Go** | Go Modules | `go get github.com/mdbench/ScyWeb/sdk/go` |
74+
| **Rust** | Cargo | `scyweb = { git = "https://github.com/mdbench/ScyWeb" }` |
75+
| **Python** | Pip | `pip install git+https://github.com/mdbench/ScyWeb.git#subdirectory=sdk/python` |
76+
| **PHP** | Composer | `composer require mdbench/scyweb-php:dev-main` |
77+
| **Swift** | Swift PM | Add `https://github.com/mdbench/ScyWeb` via Xcode Packages |
78+
| **React Native**| NPM | `npm install github:mdbench/ScyWeb#subdirectory=sdk/react-native` |
79+
80+
---
81+
82+
### 🛠 Manual Class Integration
83+
84+
If you prefer not to use a package manager, copy the kernel file directly into your source tree.
85+
86+
#### Systems & Compiled
87+
* **C++:** Copy `ScyKernel.hpp`. Usage: `ScyKernel kernel("pass", "db.ppm");`
88+
* **Rust:** Copy `scy_kernel.rs`. Usage: `mod scy_kernel; use scy_kernel::ScyKernel;`
89+
* **Swift:** Drag `ScyKernel.swift` to Xcode. Usage: `let k = ScyKernel(password: "p", filePath: "f")`
90+
* **Go:** Copy `scy_kernel.go`. Usage: `k := NewScyKernel("pass", "db.ppm")`
91+
92+
#### Web & Scripting
93+
* **Node.js:** Copy `ScyKernel.js`. Usage: `const ScyKernel = require('./ScyKernel');`
94+
* **Python:** Copy `scy_kernel.py`. Usage: `from scy_kernel import ScyKernel`
95+
* **PHP:** Require `ScyKernel.php`. Usage: `$k = new ScyKernel("pass", "db.ppm");`
96+
97+
---
98+
99+
### 💽 Database Initialization
100+
101+
The ScyWeb SDK treats a specific image file as its physical storage. Before you can "Sow" or "Harvest" data, you must have a correctly formatted **4000x4000 Binary PPM** file. The header must be exactly **15 bytes** to ensure the fractal coordinate math aligns perfectly across all 10 languages.
102+
103+
You can set up your database in one of two ways:
104+
105+
#### **Option 1: Use the Provided Template**
106+
We have included a pre-formatted, blank database file in the repository for immediate use.
107+
* **Location:** `sdk/scy_database.ppm`
108+
* **Action:** Copy this file into your project's working directory.
109+
110+
#### **Option 2: Generate via Shell Script (Recommended)**
111+
If you want to initialize a fresh database locally or as part of a CI/CD pipeline, run the provided initialization script. This script guarantees bit-perfect parity by force-truncating the header to the required 15 bytes.
112+
1. **Script:** `scripts/init_scy_db.sh`
113+
2. **Execute:** `chmod +x init_scy_db.sh && ./init_scy_db.sh`
114+
3. **Verification:** The script must confirm a size of **48,000,015 bytes**.
115+
116+
> **Note:** Do not create this file manually. Text editors often inject hidden characters (like `\r\n`) that shift pixel offsets, making your data unrecoverable on other platforms.
117+
118+
### 🔄 Updating
119+
When logic updates are pushed to the main repository, update your local SDK via:
120+
* **NPM:** `npm update`
121+
* **Go:** `go get -u ./...`
122+
* **Python:** `pip install --upgrade git+https://github.com/mdbench/ScyWeb.git#subdirectory=sdk/python`
123+
* **Composer:** `composer update`
124+
125+
### 🚀 Live Interactive Demo
126+
This demo serves as a **High-Correlation Stress Test** for the ScyWeb cryptographic image kernel. Unlike standard encryption tests that use high-entropy keys, this demo uses a sequence of nearly identical, low-distance derivatives (**Test1** through **Test10000**).
127+
- [Demo](https://demos.matthewbenchimol.com/ScyWeb/sdk/ScyWebSDKDemo.html)
128+
129+
### 📦 Demo Database (PPM)
130+
To run the diagnostic, download the pre-sowed 16-million pixel database:
131+
- [Demo](https://demos.matthewbenchimol.com/ScyWeb/sdk/scy_demo_database.ppm)
132+
133+
---
134+
135+
### 📊 Benchmark Methodology: The "Worst Case Scenario"
136+
The provided database was generated using a **Pure FNV-1a XOR-Multiply** kernel. We intentionally utilized a sequential dataset to observe "Sequential Gravity" and hash clustering.
137+
138+
* **The Input:** 10,000 keys with >90% bit-structure similarity (`Test1` through `Test10000`).
139+
* **The Constraint:** In a 4000x4000 grid, every pixel represents a mapping bucket for ~268 possible 32-bit hash values.
140+
* **The Result:** A **~96% Integrity Rate**.
141+
* **The Technical Conclusion:** The observed 4% collision rate is a "Similarity Tax" imposed by the adversarial nature of the keys. Under standard operating conditions (diverse, high-entropy passphrases or UUIDs), the kernel's distribution uniformity naturally approaches **99%—100%**.
142+
143+
### 🛠️ How to Run the Diagnostic
144+
1. **Open the Live Demo URL** in a Chromium-based browser.
145+
2. **Mount Database:** Click the "Mount" button and select the downloaded `scy_demo_database.ppm`.
146+
3. **Set Credentials:** Enter the System Seed: `password123`.
147+
4. **Initiate Harvest:** Run the **Batch Integrity Scan** to observe the real-time harvest of 10,000 vines across the Hilbert-mapped canvas.
148+
149+
> *Note: This benchmark is part of ongoing research into fractal permutation and geometric stream ciphers.*
55150
56151
---

0 commit comments

Comments
 (0)