Yes, I was looking for a type field that could be used for basic smart contracts and a reason field, i.e “I am sending X coins to Y for service or goods Z” and using that as proof of payment etc. We have gone a bit sideways though in recent weeks to get complete unlinkability and privacy, so these things need to be reconsidered.
The 2 main points right now we need to solve is
- Proof of payment
- Farming
2. is kinda solved by 1. but with full privacy we need a way to prove to others something was paid for and this is true for farming also.
One simple idea for farming is: (cc @danda ) and it’s perhaps not great.
- On upload the user pays each mint node (elder) X to store Y chunks.
- Each elder takes the payments and signs the data
- Client aggregates sigs and can now store the data
Problem:
Adults are not paid
Possible solution:
We assume that the supermajority of Elders Are honest and this is important. So when an Adult is to be relocated ot rewarded (thx @neo ) each elder pays that adult a portion of the Elders earnings this session.
That means elders will pay different amounts, but all relative to the elders time in the section.
It’s sketchy right now, but this allows for private transactions and honest elders to pay Adults and do so without syncing with each other (which is a very nice property to have as sync is a nightmare).
Also in this vein, we can remove sync of store cost from the Elders (which is another nightmare). It would be like this
- Each elder calculates what it sees as the number of Adults and how full they are.
- This gives this Elder a store-cost.
Now we change the storage mechanism above change from
1. On upload the user pays each mint node (elder) X to store Y chunks.
2. Each elder takes the payments and signs the data
3. Client aggregates sigs and can now store the data
to
- Client sends each elder a storecost request for storing Y chunks
- Elder signs reply with a cost
- Now client executes the above block paying each elder the storecost they ask for (iff the client agrees the elder is not trying to inflate costs)
For pt. 3 As the storecost is signed and if a client suspects fraud, they can send that Elders StoreCost to every other elder. That allows us to find rouge elders trying to inflate storecost.
In any case, this is the kind of thing we are playing with right now. I know I have said we had all the tech worked out, but this is a bit extra as we advanced DBCs to be fully fungible and private, or at least we think we have. There is still a fork of commitments and another of blind sigs, the latter being favourite, but not 100% decided as we need to work out how to do all the above.