Note: I’m a web3 novice and this is just me thinking out loud. If you spot any wrong assumptions or faulty logic, please do let me know!
Relying on Income Share Agreements (ISAs) as a revenue model (as we do at SharpestMinds) brings many unique challenges. I’m a big believer that, done right, ISAs increase accessibility and align incentives. But I sometimes envy SaaS (Software as a Service) companies for their simplicity. Gate some value behind a subscription fee. Measure churn and retention. Enjoy a predictable revenue stream.
An ISA is a promise to pay a percentage of one’s future income for some duration. The absolute amount to be paid is not known in advance, nor is the when. And before you can collect payments, you need to verify income.
During a small dive into the web3 world, I began to wonder how an ISA might work on the blockchain. Smart contracts seemed promising for the job—immutable code with a promise to execute once some conditions are met. Wouldn’t it be nice to write something like if: (income > threshold) then: share_income()
and never have to think about it again?
But almost immediately, the oracle problem shows up. Smart contracts can only access information that is on-chain. If you want your code to execute based on external data that isn’t on the blockchain, you need an oracle—something like Chainlink. According to their landing page, “Chainlink greatly expands the capabilities of smart contracts by enabling access to real-world data and off-chain computation.”
For an ISA smart contract to work, you’d need the income to be on-chain or you’d need an oracle to access off-chain income data. Both solutions seem plausible to me. But if we go with the latter—relying on an oracle to verify income—it seems like we’re back to the original off-chain struggle which relies heavily on trust. Does blockchain technology actually give any benefits in this scenario?
As far as I can tell, the best case for an ISA smart contract is one where there is a single source of truth for someone’s income. If everyone gets paid in Ether, then their income would be accessible to a smart contract on the Ethereum blockchain. (Though, I think you’d still have to trust that their income will be sent to the same eth address specified in the smart contract.)
Is that a likely world? I don’t think so. Is it even desirable? I’m not sure. It’s a world where the storage of income data is decentralized, but there is a centralized source of truth. Also, if it’s a public blockchain like Ethereum, it’s a world where your income is theoretically public knowledge. As far as I can tell, this is the world the DeFi movement wants to create. I sympathize with many of the DeFi goals, but one of the tradeoffs, as far as I can tell, is a lack of financial privacy.
There are likely another scenarios that I’m missing here. Perhaps a middle man, like SharpestMinds, could collect and distribute income via a private blockchain. But this feels antithetical to the web3 ethos of decentralization. And, again, I have a hard time seeing the perks of blockchain tech in this scenario.
The other issue I came across was immutability. This is often touted as a feature of blockchains and smart contracts. Code is law. Once a smart contract is written, it cannot be changed. This prevents governments and tech giants from changing the rules on a whim and screwing over the little guys.
But immutability makes me nervous. I don’t like absolutes. It’s hard to know the future. The ability to update the rules based on new information is usually a good thing. Imagine if society had had locked in all its laws 100 years ago. It’s a feature that we can update our laws, not a bug.
We are continuously surprised at SharpestMinds with how our ISAs get modified. The mentor offers a discounted rate, the payment term is extended, the income threshold is raised, payments are paused for a few months. Maybe the smart contract can include the ability to modify the agreement with digital signatures from each party.
But how can you be sure you’ve got all the possible edge cases programmed in? Legal contacts can be modified and amended quite easily. It may be possible to build the same flexibility into a smart contract. But then I have to wonder, why are we using smart contracts again?
Finally, for the ISAs on SharpestMinds—in which a mentor gives their time and support in exchange for a share of their mentee’s income—there is another, even thornier, oracle problem. How do you measure that value was actually delivered? That the mentor upheld their end of the agreement? There is an unavoidable aspect of trust involved.
Again, maybe this can be handled with digital signatures from each party verifying that value was added. But how would you handle disputes? What if the mentor and mentee disagree? Especially when there is some off-chain promise of value, I think it’s preferable to have a central, trusted authority to resolve disputes. That’s part of the value that platforms like Airbnb and Uber (and SharpestMinds) bring to the table.
Hi Russell, thanks for sharing your thoughts even the crude ones :))) I liked the way you think about ISA as I had some similar thoughts. Actually we are three team member at ropera.net just started to work on a new idea 3 weeks ago (after some fast failure on our previous ideas during last 6 months). And we are thinking about using ISA to help mobile developers (Android and iOS) to immigrate to EUROPE, from countries that their currency don't allow developers to pay the mentorship cost at the start of mentorship or have financial problem, but they are potentially good developers.
We would be more than happy if we could have an hour meeting with you. I'll send you this message to your LinkedIn as well, to have more chance for it to be seen by you. Regards, Mohsen