Purpose
The aim of this Human Resources manual is to help protect and better retain Bitcoin Application Developer talent entering (or hovering around) the Bitcoin Cash (BCH) space.
By Bitcoin Application Developers, we’re referring to anyone writing apps with logic to lock and spend assets using on-chain script in decentralized applications validated by full nodes on the Bitcoin Cash network. So wallets, decentralized exchange protocols, and other basic financial instruments, etc.
This document is to manage expectations and help new recruits avoid the most active hazards taking developers out early… this isn’t a wholistic or complete survival manual.
This document is a cheap prophylactic possibly offering a limited partial protection―at most. It was written in the wee hours of 2025. Once it’s public, every day that passes will make it less effective and relevant.
Although we’re a loosely knit team cooperating separately, increasing the likelihood of success for one individual (ever so slightly) might increase the chances the group will succeed as a whole. This cat
of current survival tips is based on personal experience, as well as the successes and failures of many many many developers that have built or tried to build on bitcoin over the last 15 years.
Rule #1: No one gets out alive
We’re all gonna die and there is no secret manual to escape that truth.
While you could pioneer a legal way to minimize some income tax liability with bitcoin, we’re all still gonna die whether we do “the correct bitcoin” or not. Don’t ever feel the veiled threats aimed at everyone using “the freedom bitcoin” is a credible threat to kill you specifically.
The bitcoin project has experienced a number of setbacks since 2008.
Not everyone that started out is still among us. Not everyone who saw the potential of the idea stuck with it. Not everyone had time to work the process.
There is no shame in leaving the space, or even leaving with constructive feedback. Most people who step out are welcome back any time. A good project, hosted and funded on-chain, shouldn’t need the presence of a founder anyhow.
Life, health and loved ones are more important than any currency. Nothing is worth more than your health and well-being.
That said, finance, freedom and financial literacy should make everyone healthier and wealthier (not just a few) if we’re doing it right.
Module 2: The Woman in the Red Dress
Bitcoin is permissionless.
There are people that want to stop bitcoin as described in the whitepaper―our adversaries. But they aren’t allowed to stop it directly, because there is no way to stop it, by design.
Likewise, the people working on the relevant fork don’t have a magic wand to preemptively ban bad actors from making their “contributions” in the relevant space.
So, as long as we have free speech and the distribution of software is protected as speech, bad actors will be powerless to completely stop bitcoin.
Conversely, a permissible way to slow the development of bitcoin is to “buy” or influence people working on the project to follow a decidedly bad course of action.
We can always assume that any group representing any significant “monied” interest can, and is, playing along within any bitcoin space. Further, at any time, virtually anyone in the Bitcoin Cash space can also be turned or activated to betray the greater good or target other specific individuals headed down the right path.
In the “old days” (the gud ol’ hostile fork days) everything was simple. Prepositioned assets would all announce and signal publicly that the entire working bitcoin project should veer off in a strange new direction (that everyone could see was terrible). (Which, we suspected they were going to do years in advance). Everyone got to find out who the bad actors were at once and got to decide what to do with that information from there.
The cost of forking may have seemed extremely damaging to one branch of bitcoin (when combined with market manipulation). But consider the real cost to the hostile side: at the end of every round, the opponents of bitcoin have lost all their best and high ranking pieces on the relevant branch of value, which gets more expensive and untenable after every round of the game. Our opponents were not going to be able to continue with the decreasing effectiveness and increasing costs of that forking strategy.
If an extremely intelligent low-key billionaire (that routinely handles trillions in trade) says something is tremendously expensive in terms of not just monetary resources, that operation is EXPENSIVE.
They’re all in. It’s for all the marbles.
If they hit our chain with direct nuclear attacks three times in a row but did not stop it, they don’t have any bombs that can stop the thing they hate. They had to retool after the last hostile fork.
If human assets are developed to derail the project as a whole, they usually take years to develop and they can only be used once. It’s insanely expensive to buy the loyalty of dozens of people and maintain that loyalty indefinitely. There’s sets of human assets out in the world maintaining useless zombie projects because they have to keep pretending their bad ideas were their own.
A better and much cheaper approach would be to develop human assets that could target and derail individual developers. If people can make small unnoticed nudges (or jabs) at just the right time, that can be HUGELY problematic to identify and defend against.
In our modern era, Bitcoin Application Developers should expect overt private ultimatums, targeted harassment, traps, rugs, trolling, dragon boating and fake-outs―if they are headed in the right direction. This manual can help with some of the obvious stuff, but the biggest threat will be a slight shove in the wrong direction at the right time.
Not everyone is bad; sometimes the bad are just ugly.
As a rule, if someone claims that everyone is compromised, they’re the drama―and drama is bad.
But also, the best controlled human assets don’t know they’re the assets.
It’s not always possible to distinguish between someone with a bad personality and someone deliberately sabotaging the space.
A bad actor may not know why certain doors open or magical funding arrives. Useful idiots can’t reliably understand they’re being an idiot.
Bad behavior can be called out in private. Repeated bad behavior can be called out in public. But ultimately, it’s pretty difficult to permanently remove bad actors in a decentralized permissionless space.
A lot of what good people might consider “bad” is permissible in a free market.
It’s not the role of any newcomer to flail accusations at people that have been around for years building and developing the space. Such accusations might immediately burn the reputation of the newcomer.
Bad behavior can be reported up the chain to an identity you trust, but there should be no expectation that anything will be done with your report. There is nothing quick, pretty or satisfying about a highly decentralized permissionless process―sorry.
If an idea is useful and correct, people saying mean things about it on the internet can’t stop it.
Pick an identity that’s forgettable
If you’re planning on writing some dapp that goes viral and makes everyone realize the potential of Bitcoin Cash, it’s likely that the first thing to happen with that app will be absolutely nothing.
If you built the exact right thing, it’s likely that no one will know what it is, or want to use it, or understand how powerful it is―because it’s not a copy of a scam they’ve already seen.
Worse, some people (that can see it) might pop up to say they don’t get it, that it doesn’t make sense, or that there is no point.
People may look at your tree seed or seedling and identify the exact species and approximate size it will be when mature, and see the annual growth rate, but then dismiss that the idea has any potential value because the seedling is not a fully grown tree someone could harvest for timber today.
But if you built the right dapp, a thing that can survive without you, then there will be plenty of time between when the idea clicks for a general audience and when you got clear.
Being pseudonymous prevents high-level talent poaching. There may be offers to go work on nonsense securities and collectables in the wider web3 space, but nothing serious.
Anonymity can be a bit of a cushion. But ultimately, if you’re in a cohort of a few dozen people in eight billion, you’ll likely be made by people like you eventually, so act accordingly.
You’re gonna be squeaky clean.
You’re going to be a law abiding citizen.
Learn plain text accounting, then learn triplicate accounting (double-entry w/blockchain references).
Pay your taxes.
Don’t cheat, don’t hide, don’t worry.
Don’t do crimes on an immutable distributed public blockchain regardless of how private you believe it to be.
If you’re gonna post public code and do public fundraising, you might consider simplifying your accounting by accepting payment at a single address.
Doing honest work for sound money should be legal in free democracies, and there is no reason hide, conceal or be ashamed of honest money paid for honest work.
That said, it can be useful if some separation is kept between funds accepted publicly and the use of those funds for personal or operational expenses.
We have amnesia at ~/
Screenshots and logs with home directory names are about the fastest way to blow any pretense of anonymity.
Please just do a clean install and use the tails username, or some other neutral username.
A fresh linux install is like a clean desk.
Say “hi” passing “The Welcome Committee”, or don’t.
The quickest way to develop a dapp idea is to code the contract in the playground and post working CashScript on Bitcoin Cash Research. You can quickly get a range of feedback there. That course of action should bypass or “skip” the current welcoming group for now.
If you’d like both CashScript (solidity-style) and BitcoinScript (assembly-style) devs to read your code, (and you do), use this triplicate coding style:
// This snippet demonstrates a style of triplicate logic commenting
// OP_CODES
require(isCashscript == true)
// provided pubkeyhash must be the pubkeyhash of input1 (users address)
// OP_1 OP_UTXOBYTECODE 76a914 OP_5 OP_PICK OP_CAT 88ac OP_CAT OP_EQUALVERIFY
require(tx.inputs[1].lockingBytecode == new LockingBytecodeP2PKH(pubkeyhash));
// convert stakeBlocks to bytes for inclusion into commitment
// OP_2 OP_PICK OP_2 OP_NUM2BIN
bytes stakeLength = bytes2(stakeBlocks);
Where each block contains a comment with your expectation, the raw BitcoinScript and the correlate code in CashScript. Translating a version of your script to this format will also familiarize you with the BitcoinScript “under the hood” of your CashScript.
If the idea is more nebulous and there is some doubt whether it’s possible to do on BCH, asking around in chat groups and spaces will invite the help of a “Welcome Committee”.
There are “influencers”, moderators, trolls and personalities who may feel they have obtained some kind of gatekeeping or CTO status in Bitcoin Cash. There are people who feel they have some duty, right or privilege to curate which projects are “allowed” into the space―but they don’t have any such role or privilege.
The closer an idea is to the mark, the more hostile a welcoming committee will be. So someone may be rude or abrasively dictatorial. Or someone may be condescending and dismissive. The key data point would be whither the party claiming to assume some kind of project manager role has ever built a Bitcoin Cash dapp, or even worked on one, or whether they’ve even contributed toward software that dapps use.
If you are greeted by someone claiming to be a software developer that has been in bitcoin for 30 years, but can’t point to a line of code they wrote… consider yourself welcomed!
If someone has a tremendous amount of development work on Bitcoin Cash but shows zero interest in BitcoinScript and has strong opinions about what people can be “allowed” to do in Bitcoin Cash Defi… you are welcome!
There are no gatekeepers. No one bestows permission to buidl apps. There is no official welcome committee.
Beware of Not Invented Here (NIH) Towers.
“Not invented here” syndrome is a spectrum that ultimately effects just about everyone that writes software.
In an ideal world, with infinite time, we could each develop our own full node (optimized to our tastes), as well as an indexer and application framework to develop our permissionless apps for everyone else to use. It sounds like hyperbole, but it’s actually fairly practical to build out a substantial amount of that bitcoin software infrastructure without creating a single financial transaction―initially. Bitcoin was small. It was written by one experienced developer in a couple months.
However, while it’s very tempting to write a custom software stack or deploy on a new modern combined node/indexer, there are significant costs associated with each of those avenues. There are sixteen years of legacy decisions, bit rot and creep.
At the time of writing, Bitcoin Cash Node (BCHN) was the main mining implementation and fulcrum was one of the main SPV indexers, (there are multiple implementations like fulcrum). And there are some other new indexers it might be nice to try, however…
In the case where a developer invests a significant amount of time on duplicative custom infrastructure, it can involve significant resources to keep that infrastructure up-to-date. The process of upgrading for consensus can become grueling. Developers that were once cutting edge can become disgruntled laggards as upgrades march on and their one time investment turns into a significant annual cost with little benifit.
Then there’s NIH-lite. That’s the case where a developer finds a new shiny indexer or node, and decides to build on someone else’s NIH tower. All markets and applications that were built on that tower will fall out of consensus when that stack forks or falls.
If someone makes a cool new XBCH full node, with all kinds of graphql, grpc, async AI magic, and a dozen dapps decide to go build on the hot new thing, those dozen dapps go down with XBCH.
To avoid the NIH tower pitfall, just make the networking layer of your dapp “pluggable” internaly. Be very careful when using custom indexers to get some special feature.
It’s generally possible to confine logic interfacing with a network layer to a single file, and use a common interface for several network layers. This can both dramatically increase survival odds while allowing your project to use the hot new thing.
Many of the apps and libraries in Bitcoin Cash have adapted a pluggable network layer style to rapidly switch indexers when necessary. On the web, PSF, mainnet-js, and CashScript are some of the ready made libraries that have adopted an abstracted network provider layer.
Don’t ever go full multicoin
You might base your networking layer on the union of features available in all Bitcoin Cash indexers, the converse is true in supporting blockchains.
With the exception of a Bitcoin Cash integration for an existing multi-coin swap, there is little benefit to supporting dozens of blockchains for an application native to Bitcoin Cash.
There is no blockchain like Bitcoin Cash.
The union of all features available across all blockchains is a null set. The financial app deploying the intersection of features available on every blockchain is called “The barter system”―it’s actually a very fun app, but you don’t need to code it.
Crypto Twitter is Glorzo.
“Promortyus”, S4E7 Rick and Morty is the perfect metaphor for Crypto Twitter.
With twitter, someone infected with a face hugging parasite will show you an egg in hopes that you’ll contract a face hugging parasite as well. Unfortunately, this may cause you to want to sh*t out a big fat egg and die.
Don’t do that.
Collectables, bucket shops, casinos and unregistered securities have been around for centuries to dupe people out of their hard won coins. They’re not fabulous achievements, it’s always an obvious dub―a fact that is obvious to the uninitiated.
Get yer toothpick out.
The rise of individualized AI curated social media feeds in the last five years has lead to rapid changes in online engagement, social media and society.
We’ve become accustomed to allowing unauditable black box “algorithms” to not only shape our view of the world (by curating new incoming information), but to also decide whether our voices will be amplified or muted in public forums.
Catch some air.
Social media, like any social activity, was a great tool for developing ideas and communicating. But it’s now easily weaponized by malicious actors, and even overtly by the platforms themselves.
People in free democracies once picked up newspapers or books to shape a world view, but now, if someone is getting a filtered stream specifically tailored to them on an individual level, that can be VERY SCARY, because if that is someone’s view on the world, they can quickly be pushed to the point where their view of reality and their voice is completely filtered in and out.
Get the face hugger app away from your face.
Social media can take obviously bad ideas and amplify them to appear good or popular. Or conversely, it can inhibit good or powerful ideas by muting, silencing or banning them. The apps are entertainment, but also a weaponized means of control now.
So rather than social interactions helping people find common ground and developing better ideas, it’s pushing people toward more and more destructive anti-social behavior.
News organizations, public and private institutions, intellectuals, academics, writers and free speech advocates have largely left twitter. It is NOT an accurate representation of the world, or real markets or the political spectrum.
This change has happen slowly over the last decade, but it’s very real.
Basically, everyone with their face pointed at an eggs will eventually get infected. And they come back to the BCH community thinking only scams are popular and point people at them. And they’re completely incapable of injesting an idea that’s not in their feed without some like count next to it.
Unfortunately, certain prominent personalities in the Bitcoin Cash community have taken an inverted filter of good and bad, popular and unpopular, and use it to issue ultimatums that certain projects should be more like what exists elsewhere for it to be “included” in Bitcoin Cash “DeFi”.
It is OKAY to categorically dismiss ideas without consideration based on the source. It is OKAY to never look at a tweet again, and to consider everything on X a contra indicator. And it is OKAY to delete harmful apps.
It is okay to completely ignore people who chose the wrong path too many times or who are no longer willing to perceive reality beyond their feed.
Nobody has to copy a terrible idea from crypto twitter to be accepted into Bitcoin Cash. There are a number of lists like helpme.cash and awesomebitcoin.cash where a substantive financial application can be listed.
If the face-huggers hate your idea, it just might be a great idea―keep going.
Your dapp will be regression tested, where is up to you.
If you’re not using a regtest
network, you’re not automatically regression testing your BCH app. Regression testing is REQUIRED to launch a major app or contract system without problems.
There is no substitute for testing your smart contract dapp against a full BCHN node, and there might not be for some time. You have been warned and there is no excuse for regression testing in production or manually.
There are some testing and debugging tools to make developing Bitcoin Cash apps easier, but at the beginning of 2025, they simply aren’t complete yet. If you set out to build a Bitcoin Cash dapp using CashScript or BitcoinScript, it’s very likely to encounter problems going to production if you don’t develop a set of tests against a real node.
This warning should save some developers some embarrassment and headache.
Is testing with regtest actually “REQUIRED”? NO. Much like seat belts, chainsaw chaps, helmets, life preservers and harnesses, there is nothing to prevent you from juggling chainsaws while doing a wheelie on a Kawasaki across a frozen pond―except a single wrong move and natural selection.
The regression in functionality can be discovered by users in production. If an app developer starts by bricking or losing user funds, they’re probably not going to have a very long career here.
A regtest
node is when you start a clean bitcoin network with a full node and the --regtest
flag from a new genesis block. The regtest
mode allows an automated test suite to mine hundreds of blocks instantly and use those coins for all test, through ‘time’ against new blocks.
A bitcoin regression setup has been easy for a decade with tools like docker-compose that let developers spawn suites of interconnected services from a laptop.
This is a feature that made mainnet-js, unspent(s) and now FBCH easier to develop and ship with confidence.
Regtest is better than a testnet for frequent tests because the operator has all the bitcoins and can instantly mine hundreds of blocks. So it’s possible to run tests in an open source configuration without having to worry about acquiring testnet coins, or losing them. It’s also possible to easily test smart contracts in time, and quickly test long running timed contracts by mining new blocks on the isolated network.
A real BCHN regtest node will also behave more like a full node when it comes to network rules and contract evaluation than a mock substitute.
It will greatly increase the overall development speed of a project to build reliable automated testing at the outset. It’s much much faster to develop with regtest ready.
There has been a lot of work to build a bridge between CashScript and the BitAuth IDE and make debugging contracts and contract systems easier.
However, relying on an IDE and simulated VM isn’t sufficient. There will almost certainly be issues getting to production when a full node flags issues with a transaction that the libauth VM didn’t flag.
There are three exemptions to the standing regtest
requirement:
… if:
- You’re literally autistic in the special way that makes you good at writing raw op_codes.
- You’re part of a team of experts that assembled to write a single contract.
- You’re a solo expert writing contracts that are verbs like “warp”, “swap”, and “burn”.
For EVERYONE else, serious hiccups should be expected when the app is tested against a full node for the first time. It’s much faster to have automated regression tests against regtest
all the way along, rather than wait to test on chipnet
or mainnet
at launch.
Currently, writing unit tests using the latest MocknetProvider
in CashScript then coding e2e or integration tests against a RegTestProvider
is a fast way to gain a lot of coverage and catch just about every issue that might be discoverable with testing.
It is possible to mostly cheat by copying the work of someone autistic or someone that uses regtests.
Put up your Script well before launch.
There is no such thing as proprietary BitcoinScript. The contracts will be open sourced when the coins they control are spent.
Potential mistakes can be made early, on regtest or when values are small, or it can blow up in production later.
It’s beneficial to every developer (and the collective) for everyone to review everyone else’s contracts for potential errors or innovations.
Use the common style (comment expressing intent, op_codes, CashScript) that can facilitate more eyes getting on contracts earlier. The sooner contracts are open sourced, the faster we progress as a group.
In Bitcoin Cash, your idea is protected by a five thousand mile moat. There are things that can be done here that won’t work or scale anywhere else. It’s extremely unlikely that anyone would attempt to steal a good idea here.
If you’re willing to invest a significant amount of time and resources to build a dapp and run it, let’s do it right, let’s get your script out into the world.
There will be no hidden mistakes. Failing faster is better than failing later. It will be way better to catch a bug on a Bitcoin Cash Research post than if someone finds a bug via the assembly on a production app with user funds.
The webapp or associated code is not as important as the on-chain contract script.
Awesome projects will need awesome Codes of Conduct.
If you go down the right path, assume you will encounter the controlled opposition and bad actors within the Bitcoin Cash space.
One of the easiest ways to derail or stop development for any open source project is for one or several participants to engage in inappropriate or unwelcoming behavior.
This problem is not specific to bitcoin, it can affect any open source project.
Since it’s trivial, for example, for any private commercial software company to send saboteurs to any open source competitor, most large open source projects have adopted a standard code of conduct for this and other reasons.
Odds and ends
Learn enough about international sanctions to protect yourself.
Bitcoin is permissionless. It can easily transcend national borders.
There are people using Bitcoin Cash in Iran, Cuba, China, Nigeria, New York & North Korea.
While it might be perfectly legal to communicate information to individuals that they could otherwise freely find on the internet, beyond that, doing any kind of value transaction, trade, or exchange of specialized services should maybe be done with a quick check of sanctions against specific countries and consultation with a real lawyer.
There is no way to evade sanctions safely because there are intelligence assets all over the world. You must assume anyone propositioning to evade sanctions is working directly for the CIA and OFAC.
TINLA
Don’t touch the ocean
Don’t go in the ocean.
Don’t swim on a beach without a lifeguard.
Don’t do drugs in the ocean at night on a weird tourist beach in a country where people don’t generally learn to swim.
Not sure why this needs to be said or why this particular activity is so lethal to us but―don’t do it.
Be a member of your community
Talk to real people, real users. Talk to people of a whole range of socioeconmic backgrounds and hear their experience and economic concerns. Listen.
Touch grass
If you have the agency to write programs to run on bitcoin in a language that’s banned on StackOverflow, you have the agency to witness the waning spender of our collective home.
Get out there while it’s there. Money isn’t worth as much as people think it’s worth.