Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v0.1.0 #1
v0.1.0 #1
Changes from 8 commits
02fc52e
f3c64fc
cadd78c
29c014c
a251084
e57a7ac
68a387e
16956fb
428378a
99679aa
d9b0fee
c1bc821
096339a
ad1ec20
38f7d2f
f6f2658
8b3735a
e6f0c8c
d70988a
64cd3f8
19d8eb0
c29dd8a
1ac3b5a
892516d
508d921
8a69456
283583b
e96f18d
2556929
7e6f2d6
e8ae3c9
b4659f8
f48bfc7
e88800d
887bae3
d8bf865
1483fea
59a88d6
a2a8813
f8e650e
0fa485c
1ef2a32
b1a38c6
b21b5ce
b6a2828
cbcbea5
4ce2998
fdb39f3
1236f4f
b542457
f935c5d
ca95eb2
102cd41
da1ba15
ae0f6fd
c4b4f18
fc9cf55
b9dbc6c
ed201f1
fc1f1e7
6eb752d
7840f25
3eacc1b
5344b52
e87b317
5689113
a79dcc9
9e638d3
4dfd5b5
2668abc
e7aeae2
2dd8912
0dac02d
3e336f8
a5c2cb6
ed328f2
19bf685
f6fc338
d886fce
e19c70b
e9a914e
496570b
dd3815d
47c5719
921569f
2383f4d
3e95289
fc527d0
9ef5838
05369a7
0f8680c
f3652b6
88fbd37
017b5a7
d87a949
ce3d25e
c4c9be4
bdabdf2
2522f78
ce3ffb0
6717fcb
b157fad
8d137d4
c79253c
8b05002
392c765
4134850
b10cae0
e5639da
4ec759d
6cda9b2
41eb8e6
f1de75e
7e0bedb
0f6942f
c9a3345
6c75a60
4029ea2
f954ac5
26a3aef
32f8562
187d792
20037e3
53f9d79
9f68488
1feb8f8
9cf808f
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find this to requirement to be difficult to meet. In our setup actor doing the work would not have access to the key to sign the result, but it would have some delegation from the
aud
to act on it's behalf.I think it would be a good idea to consider such a setup and how delegates could sign on behalf of
aud
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea is that if a subdelegate is going to do the work, you need to create an invocation for them
Here we have both an delegation chain (the right to do the thing), and a wrapper invocation. Bob asks Carol to do the work. She doens't have access to everything required for the job, so she subdelegates a partial job to Dan and wraps it in another invocation.
Does that not match your picture?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Problem is that invocation will target web3.storage which has some did:key. But service that receives that invocation will not have access to that key, so it will not be able to sign receipt with it.
Service could have some delegation from web3.storage key as an authorization to act on it’s behalf, which it will get earlier than invocation.
This is more or less what I’ve been trying to accomplish with pipelining/forwarding threads. I
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ooooooh interesting @Gozala! You're trying to do that statelessly. The other way of modeling that is of course with a (stateful) DID document.
The problem with not aligning the audience in the invocation is that if you need to coordinate with an external service, you won't be able to prove the chain. For example, let's say that Fission starts using web3.storage for storage, and web3.storage uses Fission for DNSLink management. We would have no way to prove that the user intends to update their DNSLink if they started a request from your service (to abstract away the fact that there's many services here).
I agree that the forwarding concept would alleviate this! Also agree that "sure we'll run anything aimed at that DID" also works for a subset of cases where you're handing the entire request. If you want a service to openly interoperate, "the chain must be unbroken".
So: if we ship the forwarding/powerbox feature, does that make invocation better for you?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could do with did docs but that indeed introduces state and has additional tradeoffs that I’d like to avoid.
I’m not trying to make it stateless, but rather trying to capture state in the receipt so it could be verified even after state change
I think we misunderstand each other. All I’m proposing is just like agent could delegate invocation to another agent, it should be possible to delegate execution to another agent.
In other words I could delegate to you file upload capability. But so should upload service be able to delegate providing upload capability to another service. That way agent invoking capability does not need to know which upload service web3.storage relies on.
It is possible to accomplish above with active forwarding of delegations where our service accepts invocation and then forwards (redelegates) it to desired handler. But that implies signing things at every request and access to the keys.
Ideally it would be possible to just route request to a desired handler, who could sign receipt with own key and provide a proof chain warranting it to handle such requests on behalf of the
aud
service.That might be a way to address it, but there also might be different ways to address this specific problem without changing UCANs themselves
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, this is what I mean by "stateless" — in the same sense REST. It doesn't make reference to ambient external state, but everything required to fulfill the request is passed along together.
Absolutely! My understanding about this scenario is that web3.storage would be unable to further delegate to external services using UCAN 0.9. Is that correct?
This scenario would be impossible, because web3.storage would not be able to subdelegate to fission.codes under UCAN 0.9
This can be fixed with your forwarding/powerbox idea to connect the two disconnected chains in the proposed UCAN 0.10 changes
This is my current picture/plan for 0.10 ☝️ Does that match yours?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, we may actually need an invocation chain in the Receipts 🤔