Add WojakCoin (WOJAK) support - #456
Conversation
4b08612 to
96dbfc9
Compare
|
Thank you for your contribution. We will take a look. For now, I saw that the docker image for WojaCoin project is a placeholder. To be able to run all the integration test, we will need an actual image deployed to DockerHub. If you can continue with your contribution, this is an example for Bitcoin that you can use as inspiration:
|
|
Okay got it! Thanks! |
96dbfc9 to
287f158
Compare
Adds WojakCoin as a supported chain, following the existing Dogecoin and
Pepecoin integration pattern.
- nakamotojs: add wojakcoin / wojakcoinregtest / wojakcointestnet network
definitions and a WOJAK case in getNetwork(), plus NETWORKS entries
(ts_src and compiled src/networks.js + .d.ts). Address prefixes, WIF and
bip32 versions are taken from wojakcore chainparams (mainnet pubKeyHash
0x49 "W", scriptHash 0x05, wif 0xc9; testnet/regtest 0x6f/0xc4/0xef).
- node: add chain-setup/WOJAK/{mainnet,testnet,regtest} .env.example and
wojakcoin.conf.example. RPC/P2P ports follow wojakcore: mainnet
20760/20759, testnet 30760/30759, regtest 30760/18444. BITCOIN_IMAGE
uses reallyshadydev/wojakcoin-core:1.12.1, published on Docker Hub
(source: https://github.com/WojakCoinProj/docker-wojakcoin-core).
- Add WojakCoin to the nakamotojs and node package keywords.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
287f158 to
b8fdf40
Compare
|
done lmk if im missing anything thxs! |
@reallyshadydev thank you for uploading the Docker image. It would be great if you could provide a multi-platform image instead of an amd64-only build. The examples I linked show how to define a multi-platform image, you can build with |
|
Kk I will get that done today thank you so much |
|
@ltardivo done — the image is now multi-platform ( WojakCore only publishes x86_64 release binaries upstream, so I cross-compiled the Published to Docker Hub under the same tag the tests already use, so nothing changes on your side: $ docker buildx imagetools inspect reallyshadydev/wojakcoin-core:1.12.1
Name: docker.io/reallyshadydev/wojakcoin-core:1.12.1
MediaType: application/vnd.oci.image.index.v1+json
Manifests:
... Platform: linux/amd64
... Platform: linux/arm64Both variants report the right version ( |
Point BITCOIN_IMAGE at the version-matched, multi-platform (linux/amd64 + linux/arm64) image tag for mainnet/testnet/regtest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Small follow-up: I aligned everything to WojakCore's
Both arch variants report |
|
@reallyshadydev I can confirm that it is working correctly on my end as well. Thank you! We are currently in the middle of an important release, but we will continue working on the WOJAK integration as soon as we complete the current work and have resources available. Thank you for your patience. |
|
You guys are amazing! Thank you! |
|
Hi @reallyshadydev (and Wojak team). First of all, thank you for the excellent work on the WojakCoin integration, we appreciate it. While testing the integration on regtest we ran into a limitation that we believe is worth addressing. When we try to broadcast Bitcoin Computer transactions, we get this error from the Wojak node: {"code": -26, "message": "64: bad-txns-too-many-sigops"}The reason is that WojakCore (based on the 0.12.1.0 codebase) uses the pre-SegWit limits: Block limit (consensus): 20,000 sigops (MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE / 50) To make metaprotocols like the Bitcoin Computer work on Wojak, you would have to move closer to Bitcoin on both limits. The 4,000 limit is only a policy/standardness rule, not a consensus rule. Raising it does not require a hard fork or even a soft fork. Old nodes will simply remain more restrictive in what they relay. Just increasing the limit per transaction may allow to deploy a few Bitcoin Computer transactions per block. Raising the block limit would allow more chained transactions in a block, which translate to higher throughput and faster applications. |
|
i will get it done |
|
check pr lmk |
|
Awesome work @reallyshadydev! Let me know when you deploy a new docker image. Then we can try it out and post the results here. |
|
Any news? :D |
|
Hi @reallyshadydev, we are preparing a report for this integration, but so far it looks good, our internal integration test are passing completely. I will push the bundles with WojakCoin integrated soon. |
|
Ah thats amazing new, thank you so much for allowing us to tag along! |
|
Hi @reallyshadydev, We’ve completed the WojakCoin integration and tested it on our side. Here’s what we found: 1. Docker / ARM64 on macOSWhen running the multi-platform image on native Apple Silicon (ARM64), the Wojak node fails to start properly. The logs progress normally up to this point: After “scheduler thread start” no further logs appear and the process never becomes ready. It effectively hangs (and in practice the container keeps restarting). We suspect the ARM64 build of the latest image is not fully correct. As a temporary workaround we force the container to run under node:
image: ${BITCOIN_IMAGE}
networks:
- bitcoin
restart: always
platform: linux/amd64 # required on Apple Silicon2. Bytes-per-sigop density ruleYou correctly raised However we are still seeing rejections when broadcasting Bitcoin Computer transactions. The second, independent check that fires is the bytes-per-sigop density rule. This is an old anti-DoS policy that rejects transactions whose scripts are “sigop-dense”, i.e. a large number of signature operations (especially bare Bitcoin itself removed the hard rejection of this check in 0.13 and replaced it with a fee-adjustment approach (see the 0.13 release notes). Fortunately the check can be disabled. We added the following to With that flag the transactions are accepted. Note for network adoption: 3. RPC test –
|
The linux-aarch64 release binaries crash with SIGSEGV immediately after logging 'scheduler thread start', so arm64 Docker containers loop under restart: always. Reported by the Bitcoin Computer team in bitcoin-computer/monorepo#456. Reproduced natively on Apple Silicon (linux/arm64 container, no emulation). An unstripped CI-replica build shows the scheduler thread faulting on the first boost::function invocation in the process: pthread_mutex_lock is reached from CScheduler::serviceQueue() with a garbage this pointer produced by the boost::bind member-function dispatch. Boost 1.59 (2015) headers are miscompiled by the gcc 11 toolchain on the ubuntu-22.04-arm runner; the same binary runs under linux/amd64 emulation, and Bitcoin Core's own aarch64 releases only ever paired boost 1.59 with gcc 5/6 era toolchains. Adopt Bitcoin Core v0.21's boost.mk (1.70.0), adapted for this tree: - download from archives.boost.io (bintray is gone) - wojakcore's library set (chrono, filesystem, program_options, system, thread, test) - backport boostorg/thread commit 74ff2db9 (shipped in 1.78) so boost.thread builds against glibc >= 2.34, where PTHREAD_STACK_MIN is no longer a preprocessor constant Verified on native linux/arm64 (ubuntu-22.04 + depends replica of the CI job): the identical build that crashed with exit 139 now reaches RPC readiness and mines regtest blocks via generatetoaddress. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The linux-aarch64 release binaries crash with SIGSEGV immediately after logging 'scheduler thread start', so arm64 Docker containers loop under restart: always. Reported by the Bitcoin Computer team in bitcoin-computer/monorepo#456. Reproduced natively on Apple Silicon (linux/arm64 container, no emulation). An unstripped CI-replica build shows the scheduler thread faulting on the first boost::function invocation in the process: pthread_mutex_lock is reached from CScheduler::serviceQueue() with a garbage this pointer produced by the boost::bind member-function dispatch. Boost 1.59 (2015) headers are miscompiled by the gcc 11 toolchain on the ubuntu-22.04-arm runner; the same binary runs under linux/amd64 emulation, and Bitcoin Core's own aarch64 releases only ever paired boost 1.59 with gcc 5/6 era toolchains. Adopt Bitcoin Core v0.21's boost.mk (1.70.0), adapted for this tree: - download from archives.boost.io (bintray is gone) - wojakcore's library set (chrono, filesystem, program_options, system, thread, test) - backport boostorg/thread commit 74ff2db9 (shipped in 1.78) so boost.thread builds against glibc >= 2.34, where PTHREAD_STACK_MIN is no longer a preprocessor constant Verified on native linux/arm64 (ubuntu-22.04 + depends replica of the CI job): the identical build that crashed with exit 139 now reaches RPC readiness and mines regtest blocks via generatetoaddress.
|
will upgrade codebase and fix build ill comment when done |
|
We will update to 0.21 , will be ready nxt week. Thank you. |
Summary
Adds WojakCoin (
WOJAK) as a supported chain, following the existing Dogecoin and Pepecoin integration pattern. Single, additive commit — no changes to existing chains.Changes
wojakcoin/wojakcoinregtest/wojakcointestnetnetwork definitions and aWOJAKcase ingetNetwork(), plusNETWORKSentries (TS source and compiledsrc/networks.js+.d.ts).chain-setup/WOJAK/{mainnet,testnet,regtest}/with.env.exampleandwojakcoin.conf.example.WojakCointo the nakamotojs and node package keywords.Network parameters
Address prefixes, WIF and bip32 versions are taken from wojakcore
chainparams:0x49(73, "W")0x6f0x050xc40xc9(201)0xef0x0488b21e/0x0488ade40x043587cf/0x04358394RPC / P2P ports follow wojakcore:
207602075930760307593076018444Node image
Chain-setup references
reallyshadydev/wojakcoin-core:1.12.1, published on Docker Hub. It packages the official WojakCore release binaries (release1.0.1.2, client version1.12.1) with SHA256 verification; source: https://github.com/WojakCoinProj/docker-wojakcoin-core🤖 Generated with Claude Code