N/A
Enhancement
P1
This is to allow construction of transactionally correct programs, relative to gc, under arbitrary concurrency.
Following up from https://github.com/ipfs/notes/issues/106
First one to start with here would be ipfs dag put. I think that makes the most sense.
echo "{}" | ipfs dag put --pin
ideal api for this from @ianopolous on Peergos in https://github.com/ipfs/notes/issues/106:
ipfs transaction start $duration_millis => tid
ipfs transaction close $tid
Then write commands (block put in our case) get an optional tid parameter so usage would look like:
ipfs transaction start $duration_millis => tid
ipfs block put .... tid=$tid
...
ipfs block put .... tid=$tid
ipfs pin add $hash
ipfs transaction close $tid
Comment on timing/constraints (@eingenito for context) - Peergos would like to have a stable API defined that they can build some new features against in the next ~month or so, but actual implementation can lag that schedule as needed.
@momack2 @eingenito I just want to remind everyone that I'm out from 10/20-11/4. I'm happy to take on this task, but that should be taken into consideration if there are time constraints.
He @momack2 - we (C5) can pick this up. I think Hannah is looking for the next feature and we all followed along with Michael's pinning work (which actually was pretty different). I'm sure whoever starts it will have more questions but mine are:
@Stebalien does this seem like an appropriate priority for us to start on next?
At a high level what is the scope of the desired feature? Are we adding --pin flag to ipfs dag put? Is that sufficient to meet the immediate requirements? Or are we adding commands to create and then participate in an enclosing transaction with respect to GC?
Michael just pointed me to #4004 which already added --pin to dag put. I guess we're not doing that. Are we doing the other thing?
Until I hear otherwise, I'm going to assume that the work here is to do something like the transaction command that was given as an example above.
@michaelavila Yep, that plus the tid option on block.put would be sufficient.
Implemented on dag put and block put. IPFS still doesn't support _transactions_, but that's a separate issue.
Most helpful comment
First one to start with here would be
ipfs dag put. I think that makes the most sense.echo "{}" | ipfs dag put --pin