Bitcoin Forum
May 25, 2026, 06:36:11 PM *
News: Latest Bitcoin Core release: 31.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 [8]  All
  Print  
Author Topic: [ANN] SOST — Native PoW Chain | ConvergenceX | CPU-First | 8 GB | Gold Reserve  (Read 1989 times)
Neob1844 (OP)
Newbie
*
Offline

Activity: 56
Merit: 0


View Profile WWW
Today at 08:00:33 AM
Last edit: Today at 08:18:28 AM by Neob1844
 #141

  ═══════════════════════════════════════════════════════════════════
  [ANN] SOST — V12.1 hotfix release: SbPoW build-flag safety + miner
         log label fix (cosmetic). Action required: optional recompile
         at your convenience. Block production NOT affected.
  ═══════════════════════════════════════════════════════════════════

  TL;DR
  ─────
  * On 2026-05-24 the mainnet chain stalled around block 10,109
    because a fresh miner build was compiled without the flag
    SOST_ENABLE_PHASE2_SBPOW=ON, producing blocks that failed the
    V11 Phase-2 Schnorr (SbPoW) verification path.
  * The chain recovered on its own as soon as a correctly-flagged
    binary was relaunched. No reorg, no loss of funds, no
    consensus rule changed.
  * Two defence-in-depth fixes are now in main:
      1. CMake default flipped OFF -> ON so future builds are
         consensus-capable by default.
      2. Runtime guard in sost-node: if a mainnet binary is
         started without SbPoW compiled in, it now exits with
         FATAL instead of silently mining unverifiable blocks.
  * Separately: a cosmetic bug in the miner's status log printed
    "H13" for any cASERT profile from H14 through H35. The
    miner's internal profile index (used for the actual dataset,
    signing, and difficulty target) was always correct — only
    the operator-facing label was wrong. Fixed in main.

  What happened (block 10,109 stall)
  ──────────────────────────────────
  A node operator rebuilt the miner from main and relaunched.
  The default value of the CMake option SOST_ENABLE_PHASE2_SBPOW
  was OFF, so the new binary linked the Phase-2 verification
  stub instead of the real Schnorr / BIP-340 path that V11
  activated at block 7,100.

  The resulting binary could PRODUCE blocks but its peers could
  not VERIFY them, because the network had been on Phase-2 SbPoW
  for ~3,000 blocks. Block production stalled until a binary
  compiled with -DSOST_ENABLE_PHASE2_SBPOW=ON came back online.

  Total downtime: 9,410 s = 2 h 36 m 50 s, measured from the
  timestamp of block 10,109 (the last block before the stall) to
  the timestamp of block 10,110 (the first block after recovery).
  The chain resumed at block 10,110 with no reorg required. No
  block was orphaned, no transaction was lost, no consensus rule
  was changed by this incident.

  Fixes shipped in main (V12.1 hotfix series)
  ───────────────────────────────────────────
  [P0]  CMakeLists.txt — SOST_ENABLE_PHASE2_SBPOW default
        changed from OFF to ON. Comment updated to read
        "REQUIRED for mainnet consensus". Anyone rebuilding
        from main now gets a consensus-capable binary by
        default; reproducing the failure mode now requires
        explicitly passing -DSOST_ENABLE_PHASE2_SBPOW=OFF.

  [P1]  V13 mainnet operator checklist updated. The pre-deploy
        step now explicitly verifies the flag is present in
        build/CMakeCache.txt before the binary is allowed to
        run against mainnet.

  [P1.5] Runtime guard in src/sost-node.cpp — at start-up, if
        ACTIVE_PROFILE == MAINNET and the binary does NOT have
        the Phase-2 SbPoW verification path compiled in, the
        node now prints FATAL and exits with code 2 instead of
        continuing to mine unverifiable blocks. This is a
        START-UP SAFETY CHECK, not a consensus rule change.

  Net effect: it is now substantially harder to repeat the
  2026-05-24 incident, even for an operator who rebuilds with
  the wrong flag by accident.

  Cosmetic bug — miner status line says "H13" for H14..H35
  ─────────────────────────────────────────────────────────
  The miner's diagnostic log lines used a static 21-entry name
  table (E7..H13) that was correct under the pre-V12 ceiling
  H13, but was never extended when V12 raised the ceiling to
  H20 at block 7,350. Operator-visible symptom:

      [MINING] H13 bitsQ=9.754 | <att/s> | stable=...
      [LAG-CHECK] Node says H13, mining H13 -> triggering restart
      [LAG-ADJUST] Profile changed: H13 -> H13. Restarting search.

  Despite what the log says, the miner is mining the CORRECT
  profile. The miner uses the integer stab_profile_index for
  the SbPoW dataset, the signing message, and the difficulty
  target. Only the text rendering of that integer was wrong.
  The "H13 -> H13" restart messages are real profile changes
  (e.g. H20 -> H19 -> H17) hidden by the same label collapse.

  This is COSMETIC. Block production is not affected. Blocks
  are accepted normally. Reward distribution is normal. The
  difficulty seen on the explorer's main dashboard (which
  reads the integer index directly via RPC) is the truthful
  value.

  Fixes in main:
    eed7ec95   profile_label() now spans the full E7..H35 range
    5efd1f89   the inline truncated array in the [MINING]
               status line is replaced with a call to
               profile_label() so every diagnostic line shares
               one source of truth

  A related display bug in the explorer's block-detail page
  (cASERT_target was hardcoded at H13 and never updated for
  V12) is also fixed:
    18d95da6   the ceilingH ternary on the block-detail page
               now covers V12 (H20 from 7,350+) and V13
               (H35 from 12,000+)

  What miners should do
  ─────────────────────
  SHORT VERSION:
    - You do NOT need to stop or restart your miner.
    - You do NOT need to recompile urgently.
    - Pull main and rebuild at your convenience.

  LONG VERSION:
    - If you rebuilt the miner between block 10,100 and 10,109
      on 2026-05-24 from main without explicitly passing
      -DSOST_ENABLE_PHASE2_SBPOW=ON, your binary was the wrong
      one. Pull main and recompile — the default is now ON, so
      a plain `cmake -B build && cmake --build build` produces
      a consensus-capable binary.
    - If your miner log shows "H13" while the explorer's
      cASERT panel shows H17 / H18 / H19 / H20, this is the
      cosmetic bug described above. Your mining is correct.
      Pull main and recompile only when convenient. Existing
      binaries are NOT at risk and do NOT need to be replaced
      right now.
    - Verification command after recompile (use -n 3 because
      "H20" is three characters and the default strings
      minimum length is four):

          strings -n 3 build/sost-miner | grep -cE '^H[1-3][0-9]$'

      Should report ~26 distinct labels (H10..H35).
    - The V13 hard fork lands at block 12,000. The chain is at
      block ~10,185 at time of writing, so there is a
      comfortable window. The V13 pre-activation announcement
      (target: block ~11,900) will include the operator
      checklist with the SbPoW start-up guard listed as a
      pre-flight item.

  What this changes for the protocol
  ──────────────────────────────────
  NOTHING. The incident did not require, and the fixes do not
  introduce, any consensus rule change.

  V13 hard-fork rules (V13_HEIGHT = 12,000), the cASERT
  equalizer profiles and ceilings, the Slingshot V12 cascade,
  the dynamic cap, the slew rate and the PoPC contract logic
  all remain unchanged.

  The HTLC atomic-swap work continues on its development
  branch (feat/atomic-swap-htlc-v13-candidate). On that branch
  V14_HEIGHT = 15,000 is the intended activation target, and
  ATOMIC_SWAP_HTLC_ACTIVATION_HEIGHT is still pinned at
  INT64_MAX (sentinel / disabled). The branch is NOT in main
  and HTLC is NOT activated by this V12.1 release. Activation
  will require a separate hard-fork announcement when the
  pre-deploy checklist is fully signed off.

  V12.1 is a build-system and operator-tooling release.
  Deliberately NOT a hard fork.

  Repository / commits
  ────────────────────
  github.com/Neob1844/sost-core/commit/ed72670f   (P0:  CMake default OFF->ON)
  github.com/Neob1844/sost-core/commit/0b3a4fda   (P1.5: runtime guard in sost-node)
  github.com/Neob1844/sost-core/commit/eed7ec95   (profile_label canonical 43-entry table)
  github.com/Neob1844/sost-core/commit/5efd1f89   ([MINING] status line uses profile_label)
  github.com/Neob1844/sost-core/commit/18d95da6   (explorer block-detail ceilingH for V12 + V13)

  Contact / questions
  ───────────────────
  Telegram (public channel) : t.me/SOSTProtocolOfficial
  Website / contact form    : sostcore.com

  ───────────────────────────────────────────────────────────────────
  Apologies to operators for the 2 h 37 m of friction on 2026-05-24.
  The root cause is fixed, the cosmetic noise is fixed, and the
  start-up guard makes a repeat of the same mistake fail loudly
  instead of silently.

  — NeoB
Neob1844 (OP)
Newbie
*
Offline

Activity: 56
Merit: 0


View Profile WWW
Today at 02:53:14 PM
Last edit: Today at 04:08:37 PM by Neob1844
 #142

      SOST OTC / P2P — Trustless Cross-Chain Atomic Swaps
        V14 preview · gates still safety-closed · live target: block 15,000

        

        TL;DR

        SOST is building a truly non-custodial OTC / P2P board where two users can swap SOST for another cryptoasset without trusting each other and
        without SOST ever holding their funds
      . Either both legs of the swap settle, or both refund. There is no escrow operator, no admin key, no upgrade
        path. The mechanism is the same primitive that powers the Lightning Network: a Hashed Time-Locked Contract (HTLC) on both chains.

        Seven supported asset pairs

        
      • SOST ↔ BTC  — native, no issuer freeze
      • SOST ↔ ETH  — native, no issuer freeze
      • SOST ↔ BNB  — native, no issuer freeze
      • SOST ↔ USDTissuer-risk (Tether can freeze)
      • SOST ↔ USDCissuer-risk (Circle can freeze)
      • SOST ↔ PAXGissuer-risk (Paxos can freeze)
      • SOST ↔ XAUTissuer-risk (TG Commodities can freeze)

        The issuer-risk label is surfaced explicitly in the wallet UI before every swap. Atomic-swap atomicity holds on the SOST side regardless of any
        issuer behaviour on the counterparty leg.

        

        How it works — plain language

        Alice has SOST, wants BTC. Bob has BTC, wants SOST. They agree price and amounts on the OTC / P2P board. From that point on, no intermediary touches
        either coin
      :

        [list=1]
        
      • Alice locks her SOST in a SOST-side HTLC, redeemable by Bob with a secret only Alice knows (she just generated it). Refundable to Alice after
          timeout T1.
      • Bob locks his BTC in a Bitcoin-side HTLC, redeemable by Alice using the same secret. Refundable to Bob after timeout T2 (T2 < T1 by a
          safety margin enforced by the wallet).
      • Alice claims the BTC by revealing the secret on the Bitcoin chain.
      • Bob reads the secret from the Bitcoin chain and uses it to claim the SOST.

        End state:
        
      • Happy path: both legs settle. Alice gets BTC, Bob gets SOST.
      • One side stalls: timeouts fire. Each party recovers their own coin.
      • Partial settlement: not reachable — the state machine on each chain enforces this without any external coordinator.

        

        Four security pillars

        ⚙ Decentralised. No SOST Foundation custody. No broker. No centralised matching engine. The OTC / P2P board lets two parties find each other; the
        swap itself is bilateral and cryptographic.

        ✓ Atomic. Either both legs complete or both refund. No partial settlement is reachable. The state machine on each chain enforces this without any
        external coordinator.

        🔒 Non-custodial. Neither SOST nor any third party ever holds the funds. The HTLC IS the escrow. There is no owner, no admin, no pause switch,
        no upgrade path, no emergency drain
      in either chain's contract.

        🔍 Verifiable. Every step is a public on-chain transaction. Anyone running a SOST node + a Bitcoin / EVM node can replay the swap and verify that
        the cryptographic conditions held. No off-chain trust required.

        

        Two technical paths

        BTC path
        Native Bitcoin HTLC using a BIP-199-style P2WSH redeem script (SegWit v0). Signing delegated to libwally-core (the Blockstream library used
        in Liquid and Green wallet, continuously fuzzed via OSS-Fuzz since 2019). No Bitcoin script written from scratch by SOST. BIP-143 sighash, BIP-173 Bech32,
         low-S signatures all delegated to the upstream-audited code path. The libwally submodule is pinned to release_1.5.3 (commit
        000137393a436d55a18971ca93a2d20a54d55437), maintainer signature verified.

        EVM path (ETH / BNB / ERC-20)
        Single 273-line Solidity contract AtomicSwapHTLC.sol. No owner, no upgrade, no pause, no drain. 52 Foundry tests covering:
        
      • Exact balance conservation (native + ERC-20)
      • Reentrancy via malicious receiver and via malicious token
      • Weird-ERC-20 behaviour (false-return, no-return, fee-on-transfer)
      • EIP-6780 forced-ETH selfdestruct
      • Claim / refund ordering and double-spend prevention
      • Fuzz: wrong-preimage never claims (256 runs)
      • Fuzz: refundTime boundary is sharp at the exact block (256 runs)

        

        Issuer-risk notice (important, transparent)

        Atomic swap protects against counterparty theft in the swap itself. It cannot stop a token issuer from freezing addresses.
        The four issuers above (Tether, Circle, Paxos, TG Commodities) retain the legal ability to freeze any holder, including a HTLC contract's balance. If a
        freeze fires mid-swap, the SOST side still refunds correctly — cryptographic atomicity on the SOST chain is unaffected — but the counterparty-chain side
        may become uncollectible until the issuer unfreezes.

        BTC, ETH and BNB pairs do not carry this issuer risk — they are native chain currencies with no freeze authority.

        

        Current state of the gates (verifiable in repo)

        ATOMIC_SWAP_HTLC_ACTIVATION_HEIGHT = INT64_MAX — SOST consensus gate, sentinel OFF.
        SOST_BTC_HTLC_SIGNING = OFF — CMake flag, no real BTC signing compiled in.
        V14_HEIGHT = 15,000 — intended activation height (NOT yet active).

        All atomic-swap wallet / RPC / CLI commands refuse --sign --broadcast while the gate stays at INT64_MAX. Mainnet behaviour is
        unchanged today.


        

        What's done, what's pending

        ✓ Done
        
      • SOST-side consensus: LOCK / CLAIM / REFUND validation with adversarial tests
      • Wallet helpers + RPC handlers + CLI commands (all gated)
      • Coordinator state machine (pure local, no IO / no signing / no keys)
      • EVM contract hardened: 52 Foundry tests all green
      • End-to-end local simulation: 10 scenarios, 43 assertions PASS
      • OTC / P2P wizard UI preview (every action button disabled)
      • Pre-deploy operator checklist (15 items)
      • libwally-core vendored and signature-verified (release_1.5.3)

        ⏳ Pending (in this order)
        [list=1]
        
      • Wire libwally wally_* calls into the BTC signing backend (currently disabled stub)
      • Turn the PENDING BIP-143 / BIP-173 test vectors into passing assertions
      • Testnet harnesses: SOST ↔ BTC regtest, SOST ↔ ETH Sepolia, SOST ↔ ERC-20
      • External cryptographic audit (BTC signing usage, Solidity contract, timeouts/economy)
      • Coordinated V14 hard fork activation (flip both gates, operator + miner + wallet recompile)

        Each step is its own commit on the feat/atomic-swap-htlc-v13-candidate branch. Nothing ships to mainnet until ALL of the above are green AND
        signed off by the external review.

        

        Why this matters

        The OTC / P2P space is dominated by custodial brokers (you send first, hope they send back), escrow services (an operator can disappear with
         the funds), and centralised matching engines (single point of failure, single point of regulatory pressure). SOST's atomic swap removes all three
        roles. Two strangers, two chains, one shared secret, two timeouts — or both walk away with their own coins. That is the entire surface of trust. No more,
        no less.

        

        Links

        
        Contact
        
        

        SOST is an experimental native Proof-of-Work project in pre-market testing. Atomic swap is a planned V14 feature; nothing in this post
        represents a guarantee of activation timing, listing, or value. All gates remain safety-closed at the time of writing. — NeoB
      [/list][/list]
      vostokzyf
      Newbie
      *
      Offline

      Activity: 33
      Merit: 0


      View Profile
      Today at 03:51:39 PM
      Last edit: Today at 04:05:41 PM by vostokzyf
       #143

      Failed to download the file https://sostcore.com/bootstrap-chain.json while trying to resync.


      root@vostok:~# curl -o /root/sost-core/build/chain.json https://sostcore.com/bootstrap-chain.json -f
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
      100  109k  100  109k    0     0  33611      0  0:00:03  0:00:03 --:--:-- 33615

      The downloaded file does not match.


      2026-05-25 23:55:15 [FORK] Block h=4 bid=5b6169b4c6ad7ae5 does not extend tip (our height=0, delta=-4).
      2026-05-25 23:55:15 [FORK] Fork stored but has LESS cumulative work (no reorg). Fork work vs active: 0x7e8 vs 0xcda
      2026-05-25 23:55:16 [FORK] Block h=5 bid=7e620ad21dd7e5b5 does not extend tip (our height=0, delta=-5).
      2026-05-25 23:55:16 [FORK] Fork stored but has LESS cumulative work (no reorg). Fork work vs active: 0x9f1 vs 0xcda
      2026-05-25 23:55:16 [FORK] Block h=6 bid=63907120ec8391f4 does not extend tip (our height=0, delta=-6).
      2026-05-25 23:55:16 [FORK] Fork stored but has LESS cumulative work (no reorg). Fork work vs active: 0xb51 vs 0xcda
      2026-05-25 23:55:16 [FORK] Block h=7 bid=dfe44fa7aabe48d6 does not extend tip (our height=0, delta=-7).
      2026-05-25 23:55:16 [FORK] Fork stored but has LESS cumulative work (no reorg). Fork work vs active: 0xc45 vs 0xcda
      2026-05-25 23:55:16 [FORK] Block h=8 bid=fb1c967d0ad9ed84 does not extend tip (our height=0, delta=-8).
      2026-05-25 23:55:16 [FORK] Alternative chain has MORE cumulative work! Fork tip h=8, active tip h=0. Attempting reorg.

      It's stuck and cannot proceed.
      Neob1844 (OP)
      Newbie
      *
      Offline

      Activity: 56
      Merit: 0


      View Profile WWW
      Today at 04:13:12 PM
       #144

      vostokzyf, thanks for the report. This looks like a bootstrap-chain.json snapshot issue, not a private-key or wallet issue.

      Please do not delete your wallet files and do not send any private keys, seed phrases, passwords, or wallet data.

      For now, stop using the bootstrap file. Also, please keep the bad file for comparison instead of deleting it:

      systemctl stop sost-node 2>/dev/null || true
      mv /root/sost-core/build/chain.json /root/sost-core/build/chain.json.bad-bootstrap-20260525 2>/dev/null || true

      Then start the node again from a clean chain state and let it sync normally from peers.

      Before deleting anything else, please also send me the output of:

      ls -lh /root/sost-core/build/chain.json.bad-bootstrap-20260525
      sha256sum /root/sost-core/build/chain.json.bad-bootstrap-20260525

      I am checking the public bootstrap-chain.json now. The file currently served appears to be incomplete/stale for a full resync, so I will either regenerate it from the live chain or temporarily remove that bootstrap instruction until the snapshot is verified.

      The log you posted:
      [FORK] Block h=4 ... does not extend tip (our height=0)

      means your node is at genesis/height 0 and is seeing later blocks without a valid local chain base. That matches a bad or mismatched bootstrap snapshot.
      Neob1844 (OP)
      Newbie
      *
      Offline

      Activity: 56
      Merit: 0


      View Profile WWW
      Today at 04:29:17 PM
       #145

      vostokzyf, confirmed and fixed. Thank you for the careful report.

      This was a server-side issue on my end, not a problem with your node, wallet, or keys.

      Root cause:
      https://sostcore.com/bootstrap-chain.json was accidentally serving the website HTML page instead of the real chain snapshot. The bad response was about 110 KB and started with <!DOCTYPE html>, while the real bootstrap snapshot is about 124 MB.

      That explains your log:

      [FORK] Block h=4 ... does not extend tip (our height=0)

      Your node was starting from an invalid/empty local chain state because the downloaded chain.json was not actually chain JSON.

      Fix applied:
      - Restored the real bootstrap-chain.json to the public web path.
      - Verified the served file is JSON, not HTML.
      - Verified size: 129,031,101 bytes.
      - Verified chain_height=10231.
      - Added an hourly refresh cron with JSON validation before publish.
      - The refresh uses tmp + atomic mv, so users should never receive a half-written file.

      You can now retry:

      curl -L -o /root/sost-core/build/chain.json https://sostcore.com/bootstrap-chain.json -f

      The file should be around 124 MB now, not 110 KB.

      Then start your node again.

      If you prefer not to use bootstrap, that is also fine: move the bad chain.json out of the way and let the node sync from peers from genesis.

      Please do not delete wallet files and do not share private keys, seed phrases, passwords, or wallet data.

      This report fixed a real bootstrap deployment bug that would have affected the next users trying to resync.

      — NeoB
      Pages: « 1 2 3 4 5 6 7 [8]  All
        Print  
       
      Jump to:  

      Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!