Bitcoin Forum
September 29, 2026, 04:30:04 AM *
News: Latest Bitcoin Core release: 31.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: [ANN][ZCD] Zycord | A P2P network of self-certifying state | Mainnet Oct 1  (Read 701 times)
darkko
Newbie
*
Offline

Activity: 6
Merit: 0


View Profile
September 24, 2026, 12:58:53 PM
 #21

Hi,
I'm really interested in your project!  Smiley

I’m preparing a local Windows RandomX build, without running the node or miner yet. I’ve opened GitLab Issue #36 with specific questions about the supported toolchain and which source snapshot to use:
https://gitlab.com/zycord-group/zycord-node/-/work_items/36

Could you take a look when you have a chance? I also saw that SECURITY.md does not list a private reporting channel. If someone identifies a potentially sensitive security issue, how should they contact you without posting the details publicly?

Thanks,
Andrea

The network starts small and grows on its own. On day one it handles about 90 certificates per second. That is low, and it is on purpose. A high ceiling at launch would be a ceiling the network has not yet proven it can propagate between nodes, and a block that propagates badly is a block that turns into a fork. So it starts with a low ceiling, and that ceiling rises with real demand. The 1 million is not a capacity that exists today.

This also keeps the fee market alive. Because capacity follows measured demand, block space always has a real price, instead of collapsing to the floor the way it does on networks that launch with far more capacity than use.

When the network detects that it needs to grow, it does so automatically, and it can at most double its capacity every year. If demand goes away, idle capacity shrinks back, slowly, and never below the launch value.

year  capacity
0  ~90/s
7  ~11,000/s
10  ~90,000/s
~13.6  ~1.1 million/s

The calculation is in the whitepaper, section 8.1, "Capacity across eras". And there is an important detail you caught: there is a deliberate limit inside the current era. No matter how full the network gets, growth stops at around 427 certificates per second. Passing that gate takes a hard fork, which in the project's schedule are the era transitions. It was designed this way because in Era 0 I chose to keep the surface of the blockchain small, so it is easier to program and audit. In the following eras there will be more people to do that safely.

And that limit is more than enough to reach Era 2. Even if the network grows at the maximum rate every single day, it reaches Era 2 at about 255 certificates per second, well below 427. The gate would only be reached some nine months after the era transition, and the era transition is exactly what moves the gate.

One more thing: the number is certificates, not transactions. A certificate can carry a single payment, or several batched by a sequencer. So 1 million certificates per second is the floor in transactions, not the ceiling.

On measuring sustained throughput: today there are few machines mining the testnet, so a test here would measure my setup and not the network. Once mainnet is live we will be able to measure it properly. What we have tested so far is something else: a thousand contract calls to the same recipient, in the same block, and all thousand were applied with zero skips. For comparison, we wrote the same contract the traditional way, which reads the balance, adds, and writes. With two tips at the same time, it already discarded one. With deltas, a thousand did not collide.

What this shows is the core idea of the project: all the heavy logic runs on the sender's machine, before publication. The miner executes nothing. It verifies that each certificate is well formed and signed, which is parallel work, and applies the result, which is a trivial operation: compare, add, write. That is what we have been validating on the testnet. That the mechanism we designed works.


Thanks for the capacity clarification. Keny has already provided a helpful technical reply in GitLab #36, so I won’t repeat the Windows build questions here.

I had one remaining question from my earlier post: is there a preferred private contact for reporting potentially sensitive security findings?

Thanks,
Andrea


I guess your answear is in the SECURITY.md file:

Security
Reporting
There is no private reporting channel, so assume anything filed is
public. For anything critical, do not open a public issue and do not post a
reproduction: open one naming the category and nothing else, and wait to be told
where to send the detail. Anything else belongs in the open. Say which rule is
broken, by id (V4, B3, F7); who does what in what order and what they gain;
and give a reproduction, ideally a test in core/fold or a scenario in sim/.
Critical means one signature billed twice; billing a third party by making their
certificate skip; creating value, whether supply growing other than by
emission(height), an asset over its cap, or a treasury write that is not the
fold's credit; a consensus split; encoding ambiguity that makes a valid block
unprovable or an invalid one pass; or non-determinism in the fold. In scope: this
repository and the parameter sets in spec/.
kenyfran
Newbie
*
Offline

Activity: 1
Merit: 0


View Profile
September 24, 2026, 01:59:18 PM
 #22

I came from your post in the Monero community. I like the project; I think it has potential.

I can contribute by doing a quick code review. The code seems well-written. I found some tests failing on Windows and macOS due to environment issues; I ran them myself as well.

I ran the project and the benchmark to compare the results against the stated figures.



 Node & wallet (devnet) — macOS Apple Silicon, dev @ 4b00615
 
  • make build and make build-randomx both work. The RandomX binaries run and pass codesign --verify (the fix from !2 holds, no binutils needed).
  • zcd vectors: 152/152 passed; genesis ids match.
  • Devnet mined normally; created two wallets and sent a transfer (applied at height 16 (APPLIED)); the recipient's balance was confirmed.
  • zcd ui serves on loopback only; the API returns 401 without the token.
  • Small doc note: the README quickstart runs wallet balance / send without --devnet, which fails against a devnet node with a chain id mismatch.

  Benchmarks vs. your figures — median of 5 runs, -benchtime 2s, idle machine, 8 cores
 
 
MetricYours (10-core x86)Mine (macOS Apple Silicon)
Sequential fold, one core883,000 ops/s (~294K certs/s)1,033,091 ops/s (~344K certs/s)
Block of 2,900 certs: verify1,963 ms1,416 ms
Block of 2,900 certs: apply9.9 ms8.4 ms direct / 11.4 ms by subtraction
Parallel share99.5%99.2%
Stateless verification, per core1,470 certs/s2,095 certs/s
Stateless verification, all cores5,220/s (10 cores)~6,200–7,000/s (8 cores)
Single signature verify1,500/s2,226/s

  My numbers are close to yours and mostly faster. The ratio behind the design holds: applying the block is about 1% of block time, and verification is about 99%.

  Two observations:
 
  • The "1,963 ms to verify (parallel)" figure appears to be measured on one core: CheckBlockRules lives in core/, where goroutines are not allowed, and 2,900 / 1,470 per core
      ≈ 1.97 s. Through the node/verify pool the same block would take ~410 ms on this machine. It might be worth labelling it "parallelizable stage, single core".
  • Core scaling of the verify pool: 1→2 workers 1.92x, 1→4 3.08x, 1→8 2.97x. The efficiency cores add nothing past 4 workers.

  Commands used (the docs/BENCHMARKS.md referenced in cevm_era0_bench_test.go isn't in the repo):
 
Code:
go test -run XXX -bench 'BenchmarkFoldLoop|BenchmarkApplyBlock|BenchmarkBlockRules|BenchmarkEra0Baseline' -benchtime 2s -count 5 ./core/fold/
  go test -run XXX -bench . -benchtime 2s -count 5 ./node/verify/
thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 24, 2026, 03:32:13 PM
Last edit: September 27, 2026, 03:26:22 PM by Welsh
 #23

Zycord devlog – Sep 19 → Sep 24

🔜 v0.4.0 is being tagged in the next day. Everything below is in it.

First week with outside contributors: Windows 11, macOS Apple Silicon and Darwin builds, all passing the 152 RandomX vectors with matching genesis ids. They caught a regression of mine that broke the CI gate on every platform, and two merge requests from the community are already merged. Thank you!

✅ Block-body pruning: zycordd --retain-bodies keeps the last N bodies and reclaims the rest; the handshake advertises the floor (protocol v3), and a pruned block is answered as such instead of timing out
✅ Rule V10 now proves a double spend of a one-shot address as equivocation; before, it was invisible. Loosening only
✅ Co-signing service hardened to match: four paths that would have cost it its bond are closed
✅ Co-signed certificates were not being gossiped, so service-paid sends stayed pending for blocks: fixed
✅ Commit store refuses to continue after a failure in the one window where retrying would corrupt the log
✅ Release artefacts now built by a pipeline on a second machine, on tags only, in the canonical container
✅ Engine archives carry a TOOLCHAIN.txt naming the compilers that built them: a record, not a pin
✅ make test is now expected to pass on every published target, and the tree says so
✅ SECURITY.md: private reporting channels named (details in the next post)

🔜 Windows: file mode 0600 does nothing there, so the trust token and credit ledger rely on inherited ACLs. Decision taken: owner-only on every platform, Windows gets an explicit DACL. Please, anyone with a Windows Intel/AMD machine, help me with the patch.

On private reporting, since it was asked here and darkko quoted the old text: SECURITY.md was wrong on that point and has been updated.

While we are on testnet there is no coin and nothing to exploit for value, so everything can be filed in the open, and a public issue with a reproduction is the fastest route. Once mainnet is live, a finding that could be used against the running network is filed as a confidential issue on GitLab. Anyone who can open an issue can tick "This issue is confidential" when creating it; it is then visible only to the reporter and to project members with Reporter access or above. Put the reproduction in it. That option already works today, for anyone who would rather not disclose in the open.

What a report should contain is unchanged: the rule that breaks, by id, who does what in what order and what they gain, and a reproduction.
thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 25, 2026, 11:27:53 PM
 #24

I came from your post in the Monero community. I like the project; I think it has potential.

I can contribute by doing a quick code review. The code seems well-written. I found some tests failing on Windows and macOS due to environment issues; I ran them myself as well.

I ran the project and the benchmark to compare the results against the stated figures.



 Node & wallet (devnet) — macOS Apple Silicon, dev @ 4b00615
 
  • make build and make build-randomx both work. The RandomX binaries run and pass codesign --verify (the fix from !2 holds, no binutils needed).
  • zcd vectors: 152/152 passed; genesis ids match.
  • Devnet mined normally; created two wallets and sent a transfer (applied at height 16 (APPLIED)); the recipient's balance was confirmed.
  • zcd ui serves on loopback only; the API returns 401 without the token.
  • Small doc note: the README quickstart runs wallet balance / send without --devnet, which fails against a devnet node with a chain id mismatch.

  Benchmarks vs. your figures — median of 5 runs, -benchtime 2s, idle machine, 8 cores
 
 
MetricYours (10-core x86)Mine (macOS Apple Silicon)
Sequential fold, one core883,000 ops/s (~294K certs/s)1,033,091 ops/s (~344K certs/s)
Block of 2,900 certs: verify1,963 ms1,416 ms
Block of 2,900 certs: apply9.9 ms8.4 ms direct / 11.4 ms by subtraction
Parallel share99.5%99.2%
Stateless verification, per core1,470 certs/s2,095 certs/s
Stateless verification, all cores5,220/s (10 cores)~6,200–7,000/s (8 cores)
Single signature verify1,500/s2,226/s

  My numbers are close to yours and mostly faster. The ratio behind the design holds: applying the block is about 1% of block time, and verification is about 99%.

  Two observations:
 
  • The "1,963 ms to verify (parallel)" figure appears to be measured on one core: CheckBlockRules lives in core/, where goroutines are not allowed, and 2,900 / 1,470 per core
      ≈ 1.97 s. Through the node/verify pool the same block would take ~410 ms on this machine. It might be worth labelling it "parallelizable stage, single core".
  • Core scaling of the verify pool: 1→2 workers 1.92x, 1→4 3.08x, 1→8 2.97x. The efficiency cores add nothing past 4 workers.

  Commands used (the docs/BENCHMARKS.md referenced in cevm_era0_bench_test.go isn't in the repo):
 
Code:
go test -run XXX -bench 'BenchmarkFoldLoop|BenchmarkApplyBlock|BenchmarkBlockRules|BenchmarkEra0Baseline' -benchtime 2s -count 5 ./core/fold/
  go test -run XXX -bench . -benchtime 2s -count 5 ./node/verify/

Thanks to kenyfran for running the benchmarks and posting the numbers. They exposed a real problem, and we got two things wrong.

1. The "parallel" label was wrong. The "1,963 ms to verify (parallel)" figure in the first post was measured on a single core. A node spreads that work across all of its cores, so the real time was shorter than what we published.

2. More cores were not helping. As your numbers showed, going from 4 to 8 workers gained almost nothing. The design is not the cause: every transaction can be checked on its own, so the work splits across cores. Our implementation was the cause. One of the extra security checks on signatures was written in a way that ran about 10 times slower than necessary. It also filled memory with temporary data, and cleaning that up kept pausing every core at once. Adding cores therefore did not add throughput.

We fixed it without changing any protocol rule. Every transaction is accepted or rejected exactly as before, and the tests check that on thousands of cases.

Issue: #42
Fix: merge request !48

New numbers for checking a block of 2,900 transactions. These are estimates: we measured with 1 to 6 cores on a machine that was also running other work.

Code:
Cores   Before    After
1       2.35 s    0.47 s
2       1.31 s    0.25 s
4       0.80 s    0.15 s
6       0.78 s    0.11 s

On 6 cores that is about 7x faster: roughly 25,000 transactions checked per second instead of 3,700. Signature checking alone is about 5x faster per core. More cores now help: 6 cores are 4.2x faster than 1, where before it stalled at 3x. There is still some room left, and we are working on it.

We will update the first post with the corrected numbers. If you can re-run the benchmarks after the fix is merged, we'd be glad to see your results.
kaspa_grin
Newbie
*
Offline

Activity: 1
Merit: 0


View Profile
September 26, 2026, 02:15:00 AM
 #25

I created a Telegram group to make it convenient for everyone to communicate and learn.


https://t.me/+ufeCItfHJWU3ZjBl
darkko
Newbie
*
Offline

Activity: 6
Merit: 0


View Profile
September 28, 2026, 12:55:30 AM
Last edit: September 28, 2026, 06:39:08 PM by darkko
 #26

https://gitlab.com/users/Thesimstoshi/activity

https://gitlab.com/zycord-group/zycord-node/-/boards#/


thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 28, 2026, 01:41:26 PM
Last edit: September 28, 2026, 01:57:07 PM by thesimstoshi
 #27

Sorry for the lack of feedback. I ran a heavy battery of tests and evaluation of the network last week, mainly validating the transaction scalability layer with smart contracts.

In these tests I found a usability problem. It would not cause any serious security problem, but it would make the network slow for a high-demand application.

So I worked on an update patch that solved this. I ran several batteries of tests to ensure everything will go well at the mainnet launch on October 1st.

These last 15 days of testnet were very important because they allowed me to deeply test the entire chain.

https://gitlab.com/zycord-group/zycord-node/-/merge_requests/49
thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 28, 2026, 02:29:22 PM
 #28

I created a Telegram group to make it convenient for everyone to communicate and learn.


https://t.me/+ufeCItfHJWU3ZjBl

Thank you very much for the message and for all the care with the community. I am extremely grateful that you created this space.

This week the user Ultimate Digi created our community on Discord. I have already added the links to the initial post of the thread and to the Zycord website.

https://discord.gg/8DXTADJ6Es

Just one note: since I have little experience and little time to manage social networks, I won't be able to help much with moderation or administration of the server. I am only taking care of Bitcoin Talk, because forums are what is easiest and most habitual for me. But I am very happy to know that you and other people are organizing this. You can count on me for promotion.

I am also grateful to anyone who wants to create a community on Reddit as well. I tried to create one there, but since my IP comes from the TOR network and I am a newly created user, I have several blocks.
darkko
Newbie
*
Offline

Activity: 6
Merit: 0


View Profile
September 28, 2026, 04:37:26 PM
Last edit: September 28, 2026, 05:01:45 PM by darkko
 #29

https://www.reddit.com/r/zcd_zycord/

the name "zycord" only is banned on reddit.

i'll improve the design and texts soon.

thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 28, 2026, 06:00:13 PM
 #30

Zycord devlog – Sep 24 → Sep 28: v0.4.0

✅ Intents: sign once, cross-sequencer calls land as one atomic fill
✅ Forced path rebuilt: an intent with no sequencer is executed by the block producer at the end of the block. No queue, no lease, no quota
✅ Simpler rules: bonds, slashing and every free-drop rule are gone. A certificate applies, skips (billed to the sequencer at fault, never the user), or cannot enter the block
✅ Contract admin: sets or hands off the sequencer; contract code can move its own with the new SETSEQ opcode
✅ Wallet and zcd: intents with paid participants, the forced path, and a warning before calling an open contract that could be sequenced under you
✅ Block verification ~7x faster on 6 cores, and more cores now help (#42). No rule changed
✅ Windows: trust token, credit ledger, peer store and settings are now owner-only through an explicit ACL, and the stores no longer trip over open files (#38). Thanks kenyfran
✅ Windows engine build documented: source tag, Go pin, compiler and how to verify it (#36)
✅ Engine archives' TOOLCHAIN.txt now also names the source commit and the linker
✅ Mainnet parameters: coinbase maturity 240 blocks (2 hours); bonding never opens on mainnet
✅ Plus everything in the Sep 24 devlog: block-body pruning, protocol v3, release pipeline, Rule V10

Internal test, three nodes, three sequencers, 24 users trading at once: 781 of 781 intents applied, 692 of them cross-sequencer fills, median inclusion 4.8 s, up to 48 fills per block. Zero skips, zero chain splits, every sequencer paid exactly. With a sequencer stopped, users got through on the forced path. The reference fold agrees on all 295 golden vectors.

Details: merge request !49

🔜 Mainnet genesis: 1 Oct 2026, 00:00 UTC.
thesimstoshi (OP)
Newbie
*
Offline

Activity: 17
Merit: 0


View Profile
September 28, 2026, 06:06:42 PM
 #31

https://www.reddit.com/r/zcd_zycord/

the name "zycord" only is banned on reddit.

i'll improve the design and texts soon.

It was me. Since my IP comes from the TOR network and I am a new user, it already flags me as spam for any comment/community I create. I already contacted Reddit support a few weeks ago, but I got no response. Create it with a variation of the name.
darkko
Newbie
*
Offline

Activity: 6
Merit: 0


View Profile
September 28, 2026, 06:38:02 PM
 #32

https://www.reddit.com/r/zcd_zycord/

the name "zycord" only is banned on reddit.

i'll improve the design and texts soon.

It was me. Since my IP comes from the TOR network and I am a new user, it already flags me as spam for any comment/community I create. I already contacted Reddit support a few weeks ago, but I got no response. Create it with a variation of the name.

I have already created it with the following name: zcd_zycord

https://www.reddit.com/r/zcd_zycord/
Pages: « 1 [2]  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!