I’m interested to know more about your tech stack for achieving “smart contracts” over Bitcoin and Nostr.
Was chatting with nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424 and nostr:npub16secklpnqey3el04fy2drfftsz5k26zlwdsnz84wtul2luwj8fdsugjdxk the other day about this for the use case of allowing artists, actors, and musicians to cryptographically control paid access to their creations.
Bitcoin and Nostr should be all we need for “smart contracts” …
Controling paid access to digital data is hard because once access is given it can easily be copied.
Angor uses very simple concepts in bitcoin script (timelock and multisig) to achieve the gradual release of funds to founders, and we leverage taproot for a more efficient way of doing that.
But Angor uses base layer, I would assume pay for digital consumption doesn't need to use base layer because it is probably sending smaller amounts, which means L2 is an option, and you have more complex smart contracts in L2.
Do you have a more specific idea in mind?
Here’s what I’m thinking, for “smart contracts” to control file download over lightning and Nostr …
- author creates a blob (file) for paid access and generates a unique Nostr pubkey only for this blob.
- author encrypts the blob (nip 04 style) with their own key AND the blob specific key.
- author adds the blob pubkey as “p” tag to the blossom event which uploads the blob to a server. (Requires update to blossom NIP)
- author uses Frostr to shard the blob private key as many times as desired.
- author creates a key shard for use by every user who pays for access to the blob.
- using Frostr tools, author can keep track of every every time any shard is used to decrypt the blob.
- this is mostly trustless for the author to maintain access control of the blob download, except for the requirement to “trust” the Frostr key and shard management tools. Do you have thoughts?
- the problem I’m aware of is trustlessness for the person who pays for blob access. Is there a way cryptographically to assure that their lightning payment actually triggers a shard generation of the blob key?
- similarly the above would also work for advertisers to “assure” that a blob (ad image) has been accessed (viewed) … but I also wonder how to incorporate payments in a trustless manner.
I’m really not sure what’s possible with scripts on L2, or lightning specifically. Your feedback would be greatly appreciated.
nostr:nevent1qqsguuwxlc2yax6kgswme3jcw40zahgudmytl54u23tzgfv6q87k7cczyr0k07d8usgj2azuheavl0wdqd530qxxg00hhtts7hfppredflpqqqcyqqqqqqgpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgqg5waehxw309aex2mrp0yhxgctdw4eju6t0xfx2rx
It doesn't really solve the issue of restricting access to the contents though, you just need the one person to pay stream the whole blob and then republish it for free.
My opinion is I would not even try to restrict access, rather make the content very cheap and restrict at client level.
So cheap that a user wouldn't even think twice to stream some sats for access.
If it's cheap and easy the creator will make revenue on the numbers, most people will not mind paying.