Compare commits
No commits in common. "main" and "wallet-v0.1.1" have entirely different histories.
main
...
wallet-v0.
14 changed files with 394 additions and 983 deletions
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(curl -s -o /dev/null -w \"%{http_code}\" \"https://git.misar.io/api/v1/orgs/misaradmin\" -H \"Authorization: token 724b7d6bf7c8696d5c374057667cd8fc11d1f23d\")",
|
||||
"Bash(curl -s -w \"\\\\n%{http_code}\" \"https://git.misar.io/api/v1/repos/search?q=synor&token=724b7d6bf7c8696d5c374057667cd8fc11d1f23d\")",
|
||||
"Bash(ssh -i ~/.ssh/id_ed25519 -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@89.167.20.246 \"docker exec forgejo gitea admin user generate-access-token --username misaradmin --token-name claude-migration --raw 2>/dev/null || docker exec gitea gitea admin user generate-access-token --username misaradmin --token-name claude-migration --raw 2>/dev/null || echo ''FAILED''\")",
|
||||
"Bash(ssh -i ~/.ssh/id_rsa -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@89.167.20.246 \"docker exec forgejo gitea admin user generate-access-token --username misaradmin --token-name claude-migration --raw 2>&1\")",
|
||||
"Bash(ssh -i ~/.ssh/id_rsa -o ConnectTimeout=10 root@89.167.20.246 \"docker exec -u git forgejo gitea admin user generate-access-token --username misaradmin --token-name claude-migration --raw 2>&1\")",
|
||||
"Bash(FORGEJO_TOKEN=\"a4b95d0ee9bcd156467205ddb863643d6d388004\" curl -s -X POST \"https://git.misar.io/api/v1/orgs/misaradmin/repos\" -H \"Authorization: token $FORGEJO_TOKEN\" -H \"Content-Type: application/json\" -d '{\"\"\"\"name\"\"\"\":\"\"\"\"synor\"\"\"\",\"\"\"\"description\"\"\"\":\"\"\"\"Synor Blockchain — Quantum-secure decentralized cloud computing platform\"\"\"\",\"\"\"\"private\"\"\"\":false,\"\"\"\"auto_init\"\"\"\":false}')",
|
||||
"Bash(python3 -c \"import sys,json; r=json.load\\(sys.stdin\\); print\\(''''Created:'''', r.get\\(''''html_url'''',''''ERROR''''\\), r.get\\(''''message'''',''''''''\\)\\)\")",
|
||||
"Bash(ssh -i ~/.ssh/id_rsa root@89.167.20.246 \"docker exec -u git forgejo gitea admin user generate-access-token --username misaradmin --token-name claude-migration-full --raw --scopes all 2>&1\")",
|
||||
"Bash(FORGEJO_TOKEN=\"ea8924c339ab375965e6970ce84e1431b07a479e\" curl -s -X POST \"https://git.misar.io/api/v1/user/repos\" -H \"Authorization: token $FORGEJO_TOKEN\" -H \"Content-Type: application/json\" -d '{\"\"\"\"name\"\"\"\":\"\"\"\"synor\"\"\"\",\"\"\"\"description\"\"\"\":\"\"\"\"Synor Blockchain — Quantum-secure decentralized cloud computing platform\"\"\"\",\"\"\"\"private\"\"\"\":false,\"\"\"\"auto_init\"\"\"\":false}')"
|
||||
],
|
||||
"additionalDirectories": [
|
||||
"/Users/researchfellow/Desktop/G1 Technologies/synor.cc/.forgejo"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
name: Release Desktop Wallet
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'wallet-v*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
draft:
|
||||
description: 'Create as draft release'
|
||||
required: false
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
# Build Linux AppImage on self-hosted runner
|
||||
build-linux:
|
||||
name: Build Wallet (Linux)
|
||||
runs-on: self-hosted
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libgtk-3-dev \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libsoup-3.0-dev \
|
||||
libjavascriptcoregtk-4.1-dev \
|
||||
libappindicator3-dev \
|
||||
librsvg2-dev \
|
||||
patchelf \
|
||||
libclang-dev \
|
||||
llvm-dev
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/bin/
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
key: ${{ runner.os }}-cargo-wallet-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-cargo-wallet-
|
||||
|
||||
- name: Cache pnpm store
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('apps/desktop-wallet/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install frontend dependencies
|
||||
working-directory: apps/desktop-wallet
|
||||
run: pnpm install
|
||||
|
||||
- name: Build Tauri app (Linux)
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
projectPath: apps/desktop-wallet
|
||||
tagName: wallet-v__VERSION__
|
||||
releaseName: 'Synor Wallet v__VERSION__'
|
||||
releaseBody: |
|
||||
## Synor Desktop Wallet
|
||||
|
||||
A secure desktop wallet for the Synor blockchain network with post-quantum cryptography support (Dilithium3).
|
||||
|
||||
### Installation
|
||||
|
||||
**Linux:**
|
||||
- Download the `.AppImage` file
|
||||
- Make it executable: `chmod +x Synor*.AppImage`
|
||||
- Run: `./Synor*.AppImage`
|
||||
|
||||
### Features
|
||||
- 24-word BIP39 mnemonic generation
|
||||
- Post-quantum Dilithium3 signatures
|
||||
- OS keychain integration
|
||||
- System tray support
|
||||
|
||||
### Security Note
|
||||
Always verify the checksums of downloaded files.
|
||||
releaseDraft: ${{ github.event.inputs.draft || true }}
|
||||
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
||||
59
.github/dependabot.yml
vendored
Normal file
59
.github/dependabot.yml
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
version: 2
|
||||
|
||||
updates:
|
||||
# Rust/Cargo dependencies
|
||||
- package-ecosystem: "cargo"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "09:00"
|
||||
timezone: "UTC"
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- "synorcc/core-team"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "rust"
|
||||
commit-message:
|
||||
prefix: "deps(cargo)"
|
||||
groups:
|
||||
# Group minor and patch updates together
|
||||
rust-minor-patch:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
# Keep major updates separate for careful review
|
||||
rust-major:
|
||||
patterns:
|
||||
- "*"
|
||||
update-types:
|
||||
- "major"
|
||||
ignore:
|
||||
# Ignore pre-release versions
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-prerelease"]
|
||||
|
||||
# GitHub Actions dependencies
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "09:00"
|
||||
timezone: "UTC"
|
||||
open-pull-requests-limit: 5
|
||||
reviewers:
|
||||
- "synorcc/core-team"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "github-actions"
|
||||
commit-message:
|
||||
prefix: "ci(actions)"
|
||||
groups:
|
||||
# Group all GitHub Actions updates together
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
|
|
@ -13,8 +13,12 @@ env:
|
|||
|
||||
jobs:
|
||||
check:
|
||||
name: Check
|
||||
runs-on: self-hosted
|
||||
name: Check (${{ matrix.os }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
|
@ -52,8 +56,12 @@ jobs:
|
|||
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
|
||||
test:
|
||||
name: Test
|
||||
runs-on: self-hosted
|
||||
name: Test (${{ matrix.os }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
|
@ -62,7 +70,8 @@ jobs:
|
|||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install system dependencies
|
||||
- name: Install system dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libclang-dev llvm-dev
|
||||
|
|
@ -91,9 +100,18 @@ jobs:
|
|||
run: cargo test --workspace --all-features
|
||||
|
||||
build:
|
||||
name: Build (Linux x86_64)
|
||||
runs-on: self-hosted
|
||||
name: Build (${{ matrix.os }})
|
||||
runs-on: ${{ matrix.os }}
|
||||
needs: [check, test]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
artifact-name: synor-linux-x86_64
|
||||
- os: macos-latest
|
||||
artifact-name: synor-macos-x86_64
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
|
@ -102,7 +120,8 @@ jobs:
|
|||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install system dependencies
|
||||
- name: Install system dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libclang-dev llvm-dev
|
||||
|
|
@ -141,14 +160,14 @@ jobs:
|
|||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: synor-linux-x86_64
|
||||
name: ${{ matrix.artifact-name }}
|
||||
path: artifacts/
|
||||
retention-days: 7
|
||||
if-no-files-found: warn
|
||||
|
||||
bench:
|
||||
name: Benchmarks
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||
needs: [check, test]
|
||||
|
||||
|
|
@ -195,9 +214,10 @@ jobs:
|
|||
retention-days: 30
|
||||
if-no-files-found: ignore
|
||||
|
||||
# Summary job for branch protection
|
||||
ci-success:
|
||||
name: CI Success
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
needs: [check, test, build]
|
||||
if: always()
|
||||
steps:
|
||||
195
.github/workflows/release-wallet.yml
vendored
Normal file
195
.github/workflows/release-wallet.yml
vendored
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
name: Release Desktop Wallet
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'wallet-v*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
draft:
|
||||
description: 'Create as draft release'
|
||||
required: false
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build-tauri:
|
||||
name: Build Wallet (${{ matrix.platform }})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: macos-latest
|
||||
target: aarch64-apple-darwin
|
||||
artifact-suffix: macos-aarch64
|
||||
- platform: macos-latest
|
||||
target: x86_64-apple-darwin
|
||||
artifact-suffix: macos-x86_64
|
||||
- platform: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
artifact-suffix: windows-x86_64
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Install dependencies (macOS)
|
||||
if: matrix.platform == 'macos-latest'
|
||||
run: |
|
||||
brew install rocksdb
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/bin/
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
key: ${{ runner.os }}-${{ matrix.target }}-cargo-wallet-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-${{ matrix.target }}-cargo-wallet-
|
||||
|
||||
- name: Cache pnpm store
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('apps/desktop-wallet/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install frontend dependencies
|
||||
working-directory: apps/desktop-wallet
|
||||
run: pnpm install
|
||||
|
||||
- name: Build Tauri app
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Note: Code signing requires Apple Developer certificates configured in GitHub secrets
|
||||
# Set APPLE_CERTIFICATE, APPLE_CERTIFICATE_PASSWORD, APPLE_SIGNING_IDENTITY,
|
||||
# APPLE_ID, APPLE_PASSWORD, APPLE_TEAM_ID to enable code signing
|
||||
with:
|
||||
projectPath: apps/desktop-wallet
|
||||
tagName: wallet-v__VERSION__
|
||||
releaseName: 'Synor Wallet v__VERSION__'
|
||||
releaseBody: |
|
||||
## Synor Desktop Wallet
|
||||
|
||||
A secure desktop wallet for the Synor blockchain network with post-quantum cryptography support (Dilithium3).
|
||||
|
||||
### Installation
|
||||
|
||||
**macOS:**
|
||||
- Download the `.dmg` file for your architecture (Intel or Apple Silicon)
|
||||
- Open the DMG and drag Synor Wallet to Applications
|
||||
- First launch: Right-click → Open (to bypass Gatekeeper if not code-signed)
|
||||
|
||||
**Windows:**
|
||||
- Download the `.msi` installer
|
||||
- Run the installer and follow the prompts
|
||||
- Or download the `.exe` for portable installation
|
||||
|
||||
### Features
|
||||
- 24-word BIP39 mnemonic generation
|
||||
- Post-quantum Dilithium3 signatures
|
||||
- OS keychain integration (macOS Keychain, Windows Credential Manager)
|
||||
- System tray support
|
||||
- Auto-updates (when signed)
|
||||
|
||||
### Security Note
|
||||
Always verify the checksums of downloaded files.
|
||||
releaseDraft: ${{ github.event.inputs.draft || true }}
|
||||
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
||||
args: --target ${{ matrix.target }}
|
||||
|
||||
# Build Linux AppImage separately (needs different runner config)
|
||||
build-linux:
|
||||
name: Build Wallet (Linux)
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libgtk-3-dev \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libsoup-3.0-dev \
|
||||
libjavascriptcoregtk-4.1-dev \
|
||||
libappindicator3-dev \
|
||||
librsvg2-dev \
|
||||
patchelf \
|
||||
libclang-dev \
|
||||
llvm-dev
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/bin/
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
key: ${{ runner.os }}-cargo-wallet-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-cargo-wallet-
|
||||
|
||||
- name: Cache pnpm store
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.pnpm-store
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('apps/desktop-wallet/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install frontend dependencies
|
||||
working-directory: apps/desktop-wallet
|
||||
run: pnpm install
|
||||
|
||||
- name: Build Tauri app
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
projectPath: apps/desktop-wallet
|
||||
tagName: wallet-v__VERSION__
|
||||
releaseName: 'Synor Wallet v__VERSION__'
|
||||
releaseBody: ''
|
||||
releaseDraft: ${{ github.event.inputs.draft || true }}
|
||||
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
||||
|
|
@ -15,17 +15,31 @@ permissions:
|
|||
jobs:
|
||||
build-release:
|
||||
name: Build Release (${{ matrix.target }})
|
||||
runs-on: self-hosted
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- target: x86_64-unknown-linux-gnu
|
||||
- os: ubuntu-latest
|
||||
target: x86_64-unknown-linux-gnu
|
||||
artifact-name: synor-linux-x86_64
|
||||
archive-ext: tar.gz
|
||||
- target: aarch64-unknown-linux-gnu
|
||||
- os: ubuntu-24.04-arm
|
||||
target: aarch64-unknown-linux-gnu
|
||||
artifact-name: synor-linux-aarch64
|
||||
archive-ext: tar.gz
|
||||
- os: macos-latest
|
||||
target: x86_64-apple-darwin
|
||||
artifact-name: synor-macos-x86_64
|
||||
archive-ext: tar.gz
|
||||
- os: macos-latest
|
||||
target: aarch64-apple-darwin
|
||||
artifact-name: synor-macos-aarch64
|
||||
archive-ext: tar.gz
|
||||
- os: windows-latest
|
||||
target: x86_64-pc-windows-msvc
|
||||
artifact-name: synor-windows-x86_64
|
||||
archive-ext: zip
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
|
@ -38,10 +52,11 @@ jobs:
|
|||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Install system dependencies
|
||||
- name: Install system dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libclang-dev llvm-dev gcc-aarch64-linux-gnu
|
||||
sudo apt-get install -y libclang-dev llvm-dev
|
||||
|
||||
- name: Cache cargo registry
|
||||
uses: actions/cache@v4
|
||||
|
|
@ -63,37 +78,82 @@ jobs:
|
|||
restore-keys: |
|
||||
${{ runner.os }}-${{ matrix.target }}-cargo-target-release-
|
||||
|
||||
- name: Build release binaries
|
||||
- name: Build release binaries (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
run: cargo build --release --workspace --target "$TARGET"
|
||||
|
||||
- name: Prepare release archive
|
||||
- name: Build release binaries (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
run: cargo build --release --workspace --target "$env:TARGET"
|
||||
|
||||
- name: Prepare release archive (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
ARTIFACT_NAME: ${{ matrix.artifact-name }}
|
||||
run: |
|
||||
mkdir -p release
|
||||
|
||||
# Copy binaries
|
||||
cp "target/$TARGET/release/synord" release/ 2>/dev/null || true
|
||||
cp "target/$TARGET/release/synor-cli" release/ 2>/dev/null || true
|
||||
cp "target/$TARGET/release/synor-faucet" release/ 2>/dev/null || true
|
||||
cp "target/$TARGET/release/synor-explorer" release/ 2>/dev/null || true
|
||||
|
||||
# Copy documentation
|
||||
cp README.md release/ 2>/dev/null || true
|
||||
cp LICENSE* release/ 2>/dev/null || true
|
||||
cp CHANGELOG.md release/ 2>/dev/null || true
|
||||
|
||||
# Create archive
|
||||
cd release
|
||||
tar czvf "../$ARTIFACT_NAME.tar.gz" *
|
||||
|
||||
- name: Upload release artifact
|
||||
- name: Prepare release archive (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
ARTIFACT_NAME: ${{ matrix.artifact-name }}
|
||||
run: |
|
||||
New-Item -ItemType Directory -Force -Path release
|
||||
|
||||
# Copy binaries
|
||||
Copy-Item "target/$env:TARGET/release/synord.exe" release/ -ErrorAction SilentlyContinue
|
||||
Copy-Item "target/$env:TARGET/release/synor-cli.exe" release/ -ErrorAction SilentlyContinue
|
||||
Copy-Item "target/$env:TARGET/release/synor-faucet.exe" release/ -ErrorAction SilentlyContinue
|
||||
Copy-Item "target/$env:TARGET/release/synor-explorer.exe" release/ -ErrorAction SilentlyContinue
|
||||
|
||||
# Copy documentation
|
||||
Copy-Item README.md release/ -ErrorAction SilentlyContinue
|
||||
Copy-Item LICENSE* release/ -ErrorAction SilentlyContinue
|
||||
Copy-Item CHANGELOG.md release/ -ErrorAction SilentlyContinue
|
||||
|
||||
# Create archive
|
||||
Compress-Archive -Path release/* -DestinationPath "$env:ARTIFACT_NAME.zip"
|
||||
|
||||
- name: Upload release artifact (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.artifact-name }}
|
||||
path: ${{ matrix.artifact-name }}.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
- name: Upload release artifact (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.artifact-name }}
|
||||
path: ${{ matrix.artifact-name }}.zip
|
||||
retention-days: 1
|
||||
|
||||
create-release:
|
||||
name: Create Forgejo Release
|
||||
runs-on: self-hosted
|
||||
name: Create GitHub Release
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-release
|
||||
|
||||
steps:
|
||||
|
|
@ -112,9 +172,10 @@ jobs:
|
|||
env:
|
||||
GIT_REF: ${{ github.ref }}
|
||||
run: |
|
||||
# Get the current tag from the ref (safe - only used after validation)
|
||||
CURRENT_TAG="${GIT_REF#refs/tags/}"
|
||||
|
||||
# Validate tag format
|
||||
# Validate tag format (only allow v followed by semver-like pattern)
|
||||
if [[ ! "$CURRENT_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then
|
||||
echo "Invalid tag format: $CURRENT_TAG"
|
||||
exit 1
|
||||
|
|
@ -122,6 +183,7 @@ jobs:
|
|||
|
||||
echo "current_tag=$CURRENT_TAG" >> "$GITHUB_OUTPUT"
|
||||
|
||||
# Get the previous tag
|
||||
PREVIOUS_TAG=$(git describe --tags --abbrev=0 "$CURRENT_TAG^" 2>/dev/null || echo "")
|
||||
|
||||
echo "## What's Changed" > CHANGELOG_BODY.md
|
||||
|
|
@ -130,6 +192,8 @@ jobs:
|
|||
if [ -n "$PREVIOUS_TAG" ]; then
|
||||
echo "Changes since $PREVIOUS_TAG:" >> CHANGELOG_BODY.md
|
||||
echo "" >> CHANGELOG_BODY.md
|
||||
|
||||
# Generate changelog from commits (commit messages are from our own repo)
|
||||
git log "$PREVIOUS_TAG..$CURRENT_TAG" --pretty=format:"- %s (%h)" --no-merges >> CHANGELOG_BODY.md
|
||||
else
|
||||
echo "Initial release" >> CHANGELOG_BODY.md
|
||||
|
|
@ -152,10 +216,10 @@ jobs:
|
|||
echo "" >> CHANGELOG_BODY.md
|
||||
echo '```' >> CHANGELOG_BODY.md
|
||||
cd artifacts
|
||||
find . -name "*.tar.gz" -exec sha256sum {} \; | sed 's|./[^/]*/||' >> ../CHANGELOG_BODY.md
|
||||
find . \( -name "*.tar.gz" -o -name "*.zip" \) -exec sha256sum {} \; | sed 's|./[^/]*/||' >> ../CHANGELOG_BODY.md
|
||||
echo '```' >> CHANGELOG_BODY.md
|
||||
|
||||
- name: Create Release
|
||||
- name: Create GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: Synor ${{ steps.changelog.outputs.current_tag }}
|
||||
|
|
@ -164,12 +228,14 @@ jobs:
|
|||
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
||||
files: |
|
||||
artifacts/**/*.tar.gz
|
||||
artifacts/**/*.zip
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Optional: Publish to crates.io
|
||||
publish-crates:
|
||||
name: Publish to crates.io
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
needs: create-release
|
||||
if: ${{ !contains(github.ref, 'alpha') && !contains(github.ref, 'beta') && !contains(github.ref, 'rc') }}
|
||||
|
||||
|
|
@ -189,12 +255,16 @@ jobs:
|
|||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
run: |
|
||||
# Publish crates in dependency order
|
||||
# Skip if CARGO_REGISTRY_TOKEN is not set
|
||||
if [ -z "$CARGO_REGISTRY_TOKEN" ]; then
|
||||
echo "CARGO_REGISTRY_TOKEN not set, skipping crates.io publish"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Publishing to crates.io..."
|
||||
# Uncomment when ready to publish:
|
||||
# cargo publish -p synor-types
|
||||
# cargo publish -p synor-crypto
|
||||
# Add --dry-run to test first, remove for actual publish
|
||||
# cargo publish -p synor-types --dry-run
|
||||
# cargo publish -p synor-crypto --dry-run
|
||||
# ... etc
|
||||
echo "Crate publishing configured but commented out - uncomment when ready"
|
||||
|
|
@ -21,12 +21,12 @@ jobs:
|
|||
# ============================================================================
|
||||
cargo-audit:
|
||||
name: Vulnerability Scan
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
|
||||
- name: Install cargo-audit
|
||||
run: cargo install cargo-audit --locked
|
||||
|
|
@ -39,7 +39,7 @@ jobs:
|
|||
# ============================================================================
|
||||
cargo-deny:
|
||||
name: License & Security Policy
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
|
@ -53,12 +53,12 @@ jobs:
|
|||
# ============================================================================
|
||||
clippy:
|
||||
name: Static Analysis (Clippy)
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
with:
|
||||
components: clippy
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ jobs:
|
|||
# ============================================================================
|
||||
secrets-scan:
|
||||
name: Secret Detection
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
|
@ -91,12 +91,12 @@ jobs:
|
|||
# ============================================================================
|
||||
outdated:
|
||||
name: Check Outdated Dependencies
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
|
||||
- name: Install cargo-outdated
|
||||
run: cargo install cargo-outdated --locked
|
||||
|
|
@ -110,12 +110,12 @@ jobs:
|
|||
# ============================================================================
|
||||
geiger:
|
||||
name: Unsafe Code Audit
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
|
||||
- name: Install cargo-geiger
|
||||
run: cargo install cargo-geiger --locked
|
||||
|
|
@ -129,14 +129,14 @@ jobs:
|
|||
# ============================================================================
|
||||
property-tests:
|
||||
name: Property-Based Testing
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
PROPTEST_CASES: "500"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
|
||||
- name: Run property tests
|
||||
run: cargo test --release proptest -- --test-threads=1
|
||||
|
|
@ -146,12 +146,12 @@ jobs:
|
|||
# ============================================================================
|
||||
wasm-audit:
|
||||
name: WASM Module Security
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
uses: dtolnay/rust-action@stable
|
||||
with:
|
||||
targets: wasm32-unknown-unknown
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -55,7 +55,3 @@ temp/
|
|||
# Firebase
|
||||
.firebase/
|
||||
**/.vite/
|
||||
|
||||
# Secrets
|
||||
credentials.json
|
||||
*.p12
|
||||
|
|
|
|||
505
.misar/MISAR.md
505
.misar/MISAR.md
|
|
@ -1,505 +0,0 @@
|
|||
# synor.cc
|
||||
|
||||
## Project Context
|
||||
|
||||
<!-- Describe your project here. Misar Code reads this file to understand your codebase. -->
|
||||
|
||||
|
||||
- **Branch**: main
|
||||
- **Remote**: https://github.com/mrgulshanyadav/Blockchain.cc.git
|
||||
|
||||
---
|
||||
|
||||
## Stack
|
||||
|
||||
| Layer | Technology | Details |
|
||||
|-------|------------|---------|
|
||||
| **Container** | Docker | Dockerfile |
|
||||
|
||||
---
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
synor.cc/
|
||||
CLAUDE.md
|
||||
Dockerfile.explorer
|
||||
Dockerfile.faucet
|
||||
Dockerfile.security
|
||||
Dockerfile.test
|
||||
README.md
|
||||
SECURITY.md
|
||||
docker-compose.compute.yml
|
||||
docker-compose.dex-services.yml
|
||||
docker-compose.dex.yml
|
||||
... and 4 more files
|
||||
.cargo/
|
||||
config.toml
|
||||
.github/
|
||||
dependabot.yml
|
||||
workflows/
|
||||
ci.yml
|
||||
release-wallet.yml
|
||||
release.yml
|
||||
security.yml
|
||||
.playwright-mcp/
|
||||
block-enhanced.png
|
||||
dag-2d-view.png
|
||||
dag-3d-final.png
|
||||
dag-3d-modern-full.png
|
||||
dag-3d-modern.png
|
||||
dag-3d-view.png
|
||||
dark-theme-restored.png
|
||||
explorer-blocks-working.png
|
||||
explorer-dag-working.png
|
||||
explorer-error-state.png
|
||||
... and 21 more files
|
||||
.vscode/
|
||||
settings.json
|
||||
apps/
|
||||
api-gateway/
|
||||
Dockerfile
|
||||
README.md
|
||||
package.json
|
||||
tsconfig.json
|
||||
src/
|
||||
api-keys.ts
|
||||
index.ts
|
||||
rate-limiter.ts
|
||||
cli/
|
||||
Cargo.toml
|
||||
src/
|
||||
client.rs
|
||||
config.rs
|
||||
main.rs
|
||||
output.rs
|
||||
wallet.rs
|
||||
desktop-wallet/
|
||||
Dockerfile
|
||||
Dockerfile.dev
|
||||
README.md
|
||||
docker-compose.dev.yml
|
||||
index.html
|
||||
playwright.config.ts
|
||||
pnpm-lock.yaml
|
||||
postcss.config.js
|
||||
tailwind.config.js
|
||||
tsconfig.json
|
||||
... and 2 more files
|
||||
e2e/
|
||||
smoke.spec.ts
|
||||
playwright-report/
|
||||
index.html
|
||||
src/
|
||||
App.tsx
|
||||
index.css
|
||||
main.tsx
|
||||
vite-env.d.ts
|
||||
src-tauri/
|
||||
Cargo.lock
|
||||
build.rs
|
||||
test-results/
|
||||
.last-run.json
|
||||
explorer/
|
||||
Cargo.toml
|
||||
explorer-web/
|
||||
Dockerfile
|
||||
index.html
|
||||
nginx.conf
|
||||
package-lock.json
|
||||
package.json
|
||||
playwright.config.ts
|
||||
postcss.config.js
|
||||
tailwind.config.js
|
||||
tsconfig.json
|
||||
tsconfig.node.json
|
||||
... and 1 more files
|
||||
e2e/
|
||||
accessibility.spec.ts
|
||||
blocks.spec.ts
|
||||
home.spec.ts
|
||||
mobile.spec.ts
|
||||
search.spec.ts
|
||||
public/
|
||||
favicon.svg
|
||||
src/
|
||||
App.tsx
|
||||
index.css
|
||||
main.tsx
|
||||
vite-env.d.ts
|
||||
src/
|
||||
main.rs
|
||||
faucet/
|
||||
Cargo.toml
|
||||
src/
|
||||
main.rs
|
||||
secrets.rs
|
||||
hardhat-plugin/
|
||||
README.md
|
||||
package.json
|
||||
tsconfig.json
|
||||
src/
|
||||
deployer.ts
|
||||
index.ts
|
||||
network.ts
|
||||
provider.ts
|
||||
type-extensions.ts
|
||||
types.ts
|
||||
synord/
|
||||
Cargo.toml
|
||||
src/
|
||||
cli.rs
|
||||
config.rs
|
||||
lib.rs
|
||||
main.rs
|
||||
node.rs
|
||||
tests/
|
||||
byzantine_fault_tests.rs
|
||||
fork_resolution.rs
|
||||
multi_node_network.rs
|
||||
node_lifecycle.rs
|
||||
reorg_tests.rs
|
||||
stress_tests.rs
|
||||
sync_protocol.rs
|
||||
web/
|
||||
.gitignore
|
||||
Dockerfile
|
||||
README.md
|
||||
index.html
|
||||
package.json
|
||||
postcss.config.js
|
||||
tailwind.config.js
|
||||
tsconfig.json
|
||||
tsconfig.node.json
|
||||
vite.config.ts
|
||||
public/
|
||||
synor.svg
|
||||
src/
|
||||
App.tsx
|
||||
index.css
|
||||
main.tsx
|
||||
vite-env.d.ts
|
||||
website/
|
||||
Dockerfile
|
||||
index.html
|
||||
nginx.conf
|
||||
package-lock.json
|
||||
package.json
|
||||
postcss.config.js
|
||||
tailwind.config.js
|
||||
tsconfig.json
|
||||
tsconfig.node.json
|
||||
vite.config.ts
|
||||
public/
|
||||
favicon.svg
|
||||
src/
|
||||
App.tsx
|
||||
index.css
|
||||
main.tsx
|
||||
vite-env.d.ts
|
||||
contracts/
|
||||
multi-sig/
|
||||
Cargo.toml
|
||||
src/
|
||||
lib.rs
|
||||
perps/
|
||||
Cargo.lock
|
||||
Cargo.toml
|
||||
src/
|
||||
lib.rs
|
||||
target/
|
||||
.rustc_info.json
|
||||
CACHEDIR.TAG
|
||||
crates/
|
||||
synor-compiler/
|
||||
Cargo.toml
|
||||
src/
|
||||
lib.rs
|
||||
metadata.rs
|
||||
optimizer.rs
|
||||
validator.rs
|
||||
synor-contract-test/
|
||||
Cargo.toml
|
||||
src/
|
||||
assertions.rs
|
||||
environment.rs
|
||||
lib.rs
|
||||
mock_storage.rs
|
||||
test_account.rs
|
||||
synor-dag/
|
||||
Cargo.toml
|
||||
benches/
|
||||
ghostdag_bench.rs
|
||||
src/
|
||||
dag.rs
|
||||
dagknight.rs
|
||||
ghostdag.rs
|
||||
latency.rs
|
||||
lib.rs
|
||||
ordering.rs
|
||||
pruning.rs
|
||||
reachability.rs
|
||||
synor-economics/
|
||||
src/
|
||||
error.rs
|
||||
lib.rs
|
||||
synor-governance/
|
||||
Cargo.toml
|
||||
src/
|
||||
dao.rs
|
||||
lib.rs
|
||||
multisig.rs
|
||||
treasury.rs
|
||||
vesting.rs
|
||||
synor-network/
|
||||
Cargo.toml
|
||||
src/
|
||||
behaviour.rs
|
||||
config.rs
|
||||
eclipse.rs
|
||||
lib.rs
|
||||
message.rs
|
||||
partition.rs
|
||||
peer.rs
|
||||
protocol.rs
|
||||
rate_limit.rs
|
||||
ratelimit.rs
|
||||
... and 4 more files
|
||||
synor-privacy/
|
||||
Cargo.toml
|
||||
src/
|
||||
bulletproofs.rs
|
||||
confidential.rs
|
||||
error.rs
|
||||
lib.rs
|
||||
pedersen.rs
|
||||
ring.rs
|
||||
stealth.rs
|
||||
synor-storage/
|
||||
Cargo.toml
|
||||
benches/
|
||||
storage_bench.rs.disabled
|
||||
src/
|
||||
cache.rs
|
||||
car.rs
|
||||
cf.rs
|
||||
chunker.rs
|
||||
cid.rs
|
||||
db.rs
|
||||
deal.rs
|
||||
erasure.rs
|
||||
error.rs
|
||||
lib.rs
|
||||
... and 3 more files
|
||||
synor-verifier/
|
||||
Cargo.toml
|
||||
src/
|
||||
ast.rs
|
||||
checker.rs
|
||||
error.rs
|
||||
lib.rs
|
||||
parser.rs
|
||||
prover.rs
|
||||
smt.rs
|
||||
symbolic.rs
|
||||
synor-vm/
|
||||
Cargo.toml
|
||||
src/
|
||||
compression.rs
|
||||
compute.rs
|
||||
context.rs
|
||||
engine.rs
|
||||
gas.rs
|
||||
gas_estimator.rs
|
||||
host.rs
|
||||
lib.rs
|
||||
scheduler.rs
|
||||
speculation.rs
|
||||
... and 2 more files
|
||||
docker/
|
||||
compute-node/
|
||||
Dockerfile
|
||||
prometheus.yml
|
||||
dex/
|
||||
aggregator/
|
||||
index.js
|
||||
package.json
|
||||
api/
|
||||
index.js
|
||||
package.json
|
||||
oracle/
|
||||
index.js
|
||||
package.json
|
||||
perps/
|
||||
index.js
|
||||
package.json
|
||||
simulator/
|
||||
index.js
|
||||
package.json
|
||||
economics-service/
|
||||
Dockerfile
|
||||
config.toml
|
||||
init.sql
|
||||
hosting-gateway/
|
||||
Caddyfile
|
||||
Dockerfile
|
||||
storage-gateway/
|
||||
nginx.conf
|
||||
storage-node/
|
||||
Dockerfile
|
||||
config.toml
|
||||
zk-rollup/
|
||||
Dockerfile
|
||||
config.toml
|
||||
nginx.conf
|
||||
prometheus.yml
|
||||
docs/
|
||||
ARCHITECTURE_HOSTING.md
|
||||
ARCHITECTURE_STORAGE.md
|
||||
CODE_SIGNING.md
|
||||
DEPLOYMENT.md
|
||||
DEVELOPER_GUIDE.md
|
||||
DEX_AND_MONETIZATION.md
|
||||
PLAN.md
|
||||
SECURITY_AUDIT_SCOPE.md
|
||||
TESTNET.md
|
||||
PLAN/
|
||||
PHASE11-Synor-Compute-L2-Part2-HyperEfficiency.md
|
||||
PHASE11-Synor-Compute-L2-Part3-HeterogeneousCompute.md
|
||||
PHASE11-Synor-Compute-L2.md
|
||||
PHASE14_PLAN.md
|
||||
README.md
|
||||
VALIDATION_REPORT.md
|
||||
PHASE0-Foundation/
|
||||
01-Milestone-01-CoreTypes.md
|
||||
01-Milestone-02-Cryptography.md
|
||||
PHASE1-NodeIntegration/
|
||||
01-Milestone-01-ServiceWiring.md
|
||||
01-Milestone-02-GenesisChain.md
|
||||
PHASE13-AdvancedEnhancements/
|
||||
README.md
|
||||
PHASE2-CLIWallet/
|
||||
01-Milestone-01-WalletCrypto.md
|
||||
01-Milestone-02-CLICommands.md
|
||||
PHASE3-NetworkBootstrap/
|
||||
01-Milestone-01-TestnetDeployment.md
|
||||
01-Milestone-02-NetworkHardening.md
|
||||
PHASE4-SmartContracts/
|
||||
01-Milestone-01-ContractSDK.md
|
||||
01-Milestone-02-ContractTooling.md
|
||||
PHASE5-Governance/
|
||||
01-Milestone-01-DAOLaunch.md
|
||||
01-Milestone-02-GovernanceFeatures.md
|
||||
PHASE6-QualityAssurance/
|
||||
01-Milestone-01-Benchmarks.md
|
||||
01-Milestone-02-Testing.md
|
||||
01-Milestone-03-Optimization.md
|
||||
PHASE7-ProductionReadiness/
|
||||
01-Milestone-01-Security.md
|
||||
01-Milestone-02-MainnetLaunch.md
|
||||
01-Milestone-03-Ecosystem.md
|
||||
PHASE9-SynorHosting/
|
||||
01-Milestone-01-HostingCore.md
|
||||
01-Milestone-02-HostingGateway.md
|
||||
01-Milestone-03-HostingCLI.md
|
||||
milestones/
|
||||
phase-2-apis-cli.md
|
||||
tutorials/
|
||||
01-getting-started.md
|
||||
02-building-a-wallet.md
|
||||
03-smart-contracts.md
|
||||
04-api-guide.md
|
||||
README.md
|
||||
formal/
|
||||
README.md
|
||||
kani/
|
||||
README.md
|
||||
proofs/
|
||||
DifficultyConvergence.md
|
||||
tla/
|
||||
GHOSTDAGOrdering.tla
|
||||
UTXOConservation.tla
|
||||
monitoring/
|
||||
alertmanager.yml
|
||||
alerts.yml
|
||||
prometheus.yml
|
||||
grafana/
|
||||
dashboards/
|
||||
synor-testnet.json
|
||||
scripts/
|
||||
build-wasm.sh
|
||||
docker-entrypoint.sh
|
||||
generate-node-keys.sh
|
||||
new-contract.sh
|
||||
profile.sh
|
||||
security-audit.sh
|
||||
testnet-deploy.sh
|
||||
sdk/
|
||||
c/
|
||||
.gitignore
|
||||
CMakeLists.txt
|
||||
README.md
|
||||
examples/
|
||||
compiler_example.c
|
||||
crypto_example.c
|
||||
dex_example.c
|
||||
ibc_example.c
|
||||
zk_example.c
|
||||
include/
|
||||
synor_compute.h
|
||||
synor_crypto.h
|
||||
src/
|
||||
common.c
|
||||
synor_compute.c
|
||||
ruby/
|
||||
README.md
|
||||
synor_compute.gemspec
|
||||
synor_rpc.gemspec
|
||||
synor_storage.gemspec
|
||||
synor_wallet.gemspec
|
||||
examples/
|
||||
compiler_example.rb
|
||||
crypto_example.rb
|
||||
dex_example.rb
|
||||
ibc_example.rb
|
||||
zk_example.rb
|
||||
lib/
|
||||
synor_bridge.rb
|
||||
synor_compute.rb
|
||||
synor_contract.rb
|
||||
synor_database.rb
|
||||
synor_economics.rb
|
||||
synor_governance.rb
|
||||
synor_hosting.rb
|
||||
synor_mining.rb
|
||||
synor_privacy.rb
|
||||
synor_rpc.rb
|
||||
... and 2 more files
|
||||
test/
|
||||
test_tensor.rb
|
||||
test_types.rb
|
||||
src/
|
||||
lib.rs
|
||||
tests/
|
||||
cross_crate_integration.rs
|
||||
phase13_integration.rs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Key Config Files
|
||||
|
||||
- `.github/workflows/ci.yml`
|
||||
- `.github/workflows/release-wallet.yml`
|
||||
- `.github/workflows/release.yml`
|
||||
- `.github/workflows/security.yml`
|
||||
- `Cargo.toml`
|
||||
- `Dockerfile`
|
||||
|
||||
---
|
||||
|
||||
## Rules
|
||||
|
||||
<!-- Add project-specific rules for the AI assistant. Examples: -->
|
||||
<!-- - Always use TypeScript strict mode -->
|
||||
<!-- - Prefer functional components over class components -->
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
"mcpServers": {
|
||||
"filesystem": {
|
||||
"command": "npx",
|
||||
"args": [
|
||||
"-y",
|
||||
"@modelcontextprotocol/server-filesystem",
|
||||
"/Users/researchfellow/Desktop/G1 Technologies/synor.cc"
|
||||
]
|
||||
},
|
||||
"git": {
|
||||
"command": "npx",
|
||||
"args": [
|
||||
"-y",
|
||||
"@modelcontextprotocol/server-git",
|
||||
"--repository",
|
||||
"/Users/researchfellow/Desktop/G1 Technologies/synor.cc"
|
||||
]
|
||||
},
|
||||
"context7": {
|
||||
"url": "https://mcp.context7.com/mcp",
|
||||
"headers": {}
|
||||
},
|
||||
"playwright": {
|
||||
"command": "npx",
|
||||
"args": [
|
||||
"-y",
|
||||
"@playwright/mcp@latest"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ version = "0.1.0"
|
|||
edition = "2021"
|
||||
description = "Synor Blockchain - Quantum-secure decentralized cloud computing platform"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://git.misar.io/misaradmin/synor"
|
||||
repository = "https://github.com/synorcc/synor"
|
||||
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
|
|
@ -83,7 +83,7 @@ version = "0.1.0"
|
|||
edition = "2021"
|
||||
authors = ["Synor Team <team@synor.cc>"]
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://git.misar.io/misaradmin/synor"
|
||||
repository = "https://github.com/synorcc/synor"
|
||||
homepage = "https://synor.cc"
|
||||
description = "Quantum-secure decentralized cloud computing platform"
|
||||
rust-version = "1.75"
|
||||
|
|
|
|||
20
MISAR.md
20
MISAR.md
|
|
@ -1,20 +0,0 @@
|
|||
# synor.cc
|
||||
|
||||
## Project Context
|
||||
|
||||
<!-- Describe your project here. Misar Code reads this file to understand your codebase. -->
|
||||
|
||||
## Rules
|
||||
|
||||
<!-- Add project-specific rules for the AI assistant. Examples: -->
|
||||
<!-- - Always use TypeScript strict mode -->
|
||||
<!-- - Prefer functional components over class components -->
|
||||
<!-- - Use pnpm as the package manager -->
|
||||
|
||||
## Stack
|
||||
|
||||
<!-- List your tech stack so the AI gives relevant suggestions. Examples: -->
|
||||
<!-- - Framework: Next.js 15 (App Router) -->
|
||||
<!-- - Language: TypeScript -->
|
||||
<!-- - Styling: Tailwind CSS -->
|
||||
<!-- - Database: PostgreSQL -->
|
||||
14
README.md
14
README.md
|
|
@ -11,22 +11,20 @@ Quantum-secure decentralized cloud computing platform built on DAG-based consens
|
|||
|
||||
## Installation
|
||||
|
||||
### Desktop Wallet (v0.1.1)
|
||||
### Desktop Wallet
|
||||
|
||||
Download the latest release for your platform:
|
||||
|
||||
| Platform | Download | Notes |
|
||||
|----------|----------|-------|
|
||||
| **macOS (Apple Silicon)** | `Synor-Wallet_0.1.1_aarch64.dmg` | Drag to Applications |
|
||||
| **macOS (Intel)** | `Synor-Wallet_0.1.1_x64.dmg` | Drag to Applications |
|
||||
| **Windows** | `Synor-Wallet_0.1.1_x64_en-US.msi` | Run installer (recommended) |
|
||||
| **Windows (portable)** | `Synor-Wallet_0.1.1_x64-setup.exe` | Alternative installer |
|
||||
| **Linux** | `Synor-Wallet_0.1.1_amd64.AppImage` | `chmod +x && ./` |
|
||||
| **macOS (Apple Silicon)** | `Synor-Wallet_x.x.x_aarch64.dmg` | Drag to Applications |
|
||||
| **macOS (Intel)** | `Synor-Wallet_x.x.x_x64.dmg` | Drag to Applications |
|
||||
| **Windows** | `Synor-Wallet_x.x.x_x64_en-US.msi` | Run installer (recommended) |
|
||||
| **Windows (portable)** | `Synor-Wallet_x.x.x_x64-setup.exe` | Alternative installer |
|
||||
| **Linux** | `Synor-Wallet_x.x.x_amd64.AppImage` | `chmod +x && ./` |
|
||||
|
||||
**First launch on macOS**: Right-click → Open (to bypass Gatekeeper if not code-signed)
|
||||
|
||||
See [Desktop Wallet README](apps/desktop-wallet/README.md) for detailed features and development guide.
|
||||
|
||||
### Node Daemon (synord)
|
||||
|
||||
Download pre-built binaries:
|
||||
|
|
|
|||
|
|
@ -1,243 +0,0 @@
|
|||
# Synor Desktop Wallet
|
||||
|
||||
A secure desktop wallet for the Synor blockchain network with post-quantum cryptography support (Dilithium3).
|
||||
|
||||
## Features
|
||||
|
||||
- **24-word BIP39 Mnemonic**: Industry-standard seed phrase generation
|
||||
- **Post-Quantum Signatures**: Dilithium3 (NIST FIPS 204) for future-proof security
|
||||
- **QR Code Generation**: Easily share receive addresses with scannable QR codes
|
||||
- **OS Keychain Integration**: Secure storage via macOS Keychain, Windows Credential Manager, or Linux Secret Service
|
||||
- **System Tray**: Minimize to tray for background operation
|
||||
- **Auto-Updates**: Built-in updater for seamless version upgrades (when code-signed)
|
||||
- **Multiple Addresses**: Generate and manage multiple receiving addresses
|
||||
|
||||
## Installation
|
||||
|
||||
### Download Pre-built Binaries
|
||||
|
||||
Download the latest release from [GitHub Releases](https://github.com/g1-technologies/synor/releases):
|
||||
|
||||
| Platform | File | Notes |
|
||||
|----------|------|-------|
|
||||
| **macOS (Apple Silicon)** | `Synor-Wallet_x.x.x_aarch64.dmg` | M1/M2/M3 Macs |
|
||||
| **macOS (Intel)** | `Synor-Wallet_x.x.x_x64.dmg` | Intel Macs |
|
||||
| **Windows** | `Synor-Wallet_x.x.x_x64_en-US.msi` | Recommended installer |
|
||||
| **Windows (portable)** | `Synor-Wallet_x.x.x_x64-setup.exe` | Alternative installer |
|
||||
| **Linux** | `Synor-Wallet_x.x.x_amd64.AppImage` | Universal Linux |
|
||||
|
||||
### macOS First Launch
|
||||
|
||||
If the app is not code-signed, macOS Gatekeeper will block it. To bypass:
|
||||
1. Right-click the app → Open
|
||||
2. Click "Open" in the dialog
|
||||
|
||||
Or run from terminal:
|
||||
```bash
|
||||
xattr -cr /Applications/Synor\ Wallet.app
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Node.js 20+**
|
||||
- **pnpm** (`npm install -g pnpm`)
|
||||
- **Rust 1.75+** (`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`)
|
||||
- **Tauri CLI** (`cargo install tauri-cli`)
|
||||
|
||||
**macOS additional:**
|
||||
```bash
|
||||
brew install rocksdb
|
||||
```
|
||||
|
||||
**Linux additional:**
|
||||
```bash
|
||||
sudo apt-get install -y \
|
||||
libgtk-3-dev \
|
||||
libwebkit2gtk-4.1-dev \
|
||||
libsoup-3.0-dev \
|
||||
libjavascriptcoregtk-4.1-dev \
|
||||
libappindicator3-dev \
|
||||
librsvg2-dev \
|
||||
patchelf \
|
||||
libclang-dev \
|
||||
llvm-dev
|
||||
```
|
||||
|
||||
### Development Mode
|
||||
|
||||
#### Full Development (with Rust backend)
|
||||
|
||||
```bash
|
||||
cd apps/desktop-wallet
|
||||
pnpm install
|
||||
pnpm tauri:dev
|
||||
```
|
||||
|
||||
#### Browser Preview Mode (UI only)
|
||||
|
||||
For rapid UI development without compiling Rust:
|
||||
|
||||
```bash
|
||||
cd apps/desktop-wallet
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Then open http://localhost:1420 in your browser.
|
||||
|
||||
> **Note**: Browser preview mode uses mock data. Wallet operations (create, import, sign) are simulated.
|
||||
|
||||
### Build for Production
|
||||
|
||||
```bash
|
||||
cd apps/desktop-wallet
|
||||
pnpm install
|
||||
pnpm tauri:build
|
||||
```
|
||||
|
||||
Output locations:
|
||||
- **macOS**: `src-tauri/target/release/bundle/dmg/`
|
||||
- **Windows**: `src-tauri/target/release/bundle/msi/`
|
||||
- **Linux**: `src-tauri/target/release/bundle/appimage/`
|
||||
|
||||
### Docker Development
|
||||
|
||||
```bash
|
||||
cd apps/desktop-wallet
|
||||
docker-compose -f docker-compose.dev.yml up
|
||||
```
|
||||
|
||||
Runs frontend at http://localhost:19420
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Run Playwright E2E tests
|
||||
pnpm test
|
||||
|
||||
# Run with UI
|
||||
pnpm test:ui
|
||||
|
||||
# Run headed (visible browser)
|
||||
pnpm test:headed
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
apps/desktop-wallet/
|
||||
├── src/ # React frontend
|
||||
│ ├── components/ # Reusable UI components
|
||||
│ ├── pages/ # Route pages
|
||||
│ │ ├── Welcome.tsx # Create/import wallet
|
||||
│ │ ├── Dashboard.tsx # Balance overview
|
||||
│ │ ├── Send.tsx # Send transactions
|
||||
│ │ ├── Receive.tsx # Receive with QR codes
|
||||
│ │ ├── Transactions.tsx # Transaction history
|
||||
│ │ └── Settings.tsx # App settings
|
||||
│ ├── store/ # Zustand state management
|
||||
│ │ ├── wallet.ts # Wallet state
|
||||
│ │ ├── node.ts # Node connection state
|
||||
│ │ └── mining.ts # Mining state
|
||||
│ ├── lib/ # Utilities
|
||||
│ │ └── tauri.ts # Tauri invoke wrapper
|
||||
│ └── App.tsx # Route definitions
|
||||
├── src-tauri/ # Rust backend
|
||||
│ ├── src/
|
||||
│ │ ├── commands.rs # Tauri command handlers
|
||||
│ │ ├── keychain.rs # OS keychain integration
|
||||
│ │ ├── crypto.rs # Cryptographic operations
|
||||
│ │ └── lib.rs # Main library
|
||||
│ ├── Cargo.toml # Rust dependencies
|
||||
│ ├── tauri.conf.json # Tauri configuration
|
||||
│ └── icons/ # App icons
|
||||
├── e2e/ # Playwright E2E tests
|
||||
├── playwright.config.ts # Test configuration
|
||||
└── package.json # Node.js dependencies
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Tauri Configuration
|
||||
|
||||
Edit `src-tauri/tauri.conf.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"app": {
|
||||
"windows": [{
|
||||
"title": "Synor Wallet",
|
||||
"width": 1024,
|
||||
"height": 768,
|
||||
"minWidth": 800,
|
||||
"minHeight": 600
|
||||
}]
|
||||
},
|
||||
"plugins": {
|
||||
"updater": {
|
||||
"endpoints": ["https://releases.synor.io/wallet/{{target}}/{{arch}}/{{current_version}}"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Security
|
||||
|
||||
The Content Security Policy (CSP) is configured to:
|
||||
- Allow connections to `*.synor.io` and localhost
|
||||
- Block inline scripts (except WASM)
|
||||
- Prevent embedding in iframes
|
||||
|
||||
## Embedded Node (Optional)
|
||||
|
||||
The wallet can optionally include a full node for decentralized operation:
|
||||
|
||||
```bash
|
||||
# Build with embedded node support
|
||||
cargo build --release --features embedded-node
|
||||
```
|
||||
|
||||
This enables:
|
||||
- Running a full node inside the wallet
|
||||
- Mining directly from the wallet
|
||||
- No external RPC dependency
|
||||
|
||||
## Changelog
|
||||
|
||||
### v0.1.1 (2026-02-02)
|
||||
|
||||
**New Features:**
|
||||
- QR code generation on Receive page for easy address sharing
|
||||
- Improved navigation flow on unlock screen
|
||||
|
||||
**Bug Fixes:**
|
||||
- Fixed app crash on macOS after installation (Tauri 2.0 plugin configuration)
|
||||
- Fixed icon bit depth compatibility issue (16-bit to 8-bit RGBA)
|
||||
- Removed deprecated plugin scope configurations
|
||||
|
||||
**Technical:**
|
||||
- Updated to Tauri 2.0 stable plugin APIs
|
||||
- Added missing Rust dependencies (`once_cell`, `md5`)
|
||||
- Removed duplicate imports in commands.rs
|
||||
|
||||
### v0.1.0 (Initial Release)
|
||||
|
||||
- Basic wallet creation and import
|
||||
- Send/receive SYN tokens
|
||||
- Transaction history
|
||||
- Multiple address support
|
||||
- OS keychain integration
|
||||
- System tray support
|
||||
|
||||
## Security Notes
|
||||
|
||||
- **Seed phrases** are encrypted with Argon2id and stored in OS keychain
|
||||
- **Private keys** are derived using BIP32 HD wallet standard
|
||||
- **Transactions** are signed locally; private keys never leave the device
|
||||
- **Post-quantum signatures** use Dilithium3 (NIST FIPS 204)
|
||||
|
||||
## License
|
||||
|
||||
MIT OR Apache-2.0
|
||||
Loading…
Add table
Reference in a new issue