-
Notifications
You must be signed in to change notification settings - Fork 7
Stem Graph Contributions
Drew Cook edited this page Dec 1, 2022
·
4 revisions
Arbor currently naively allows users to mint an NFT representing a collection of stems. Included within this NFT is a JSON IPFS link and a list of contributing addresses. The JSON data contains some NFT metadata, and a wav audio file URI to the submitted flattened audio samples.
This approach raises a few questions:
- How do we manage the complexity of reward issuance as the number of contributor addresses grows exponentially?
- How can we prove that the data submitted to IPFS was submitted by the author address?
- How can we prove that the associated samples are valid samples?
- How can we validate that the authors of associated samples are being paid correctly
The Arbor protocol can be thought of as a directed acyclic graph where the nodes are samples and the edges are references to samples.
A sample consists of:
- Authors
- Referenced Samples
- Audio Data
- Author Signatures
IPFS Sample (0x0001)
authors: [address]
refs: [bytes32] -> Hashed samples as references to other IPFS samples, you can build the graph edges from these hashes
audio: string -> IPFS CID to flattened audio file (currently only supporting wav)
sigs: [bytes32] -> Audio data signed by authors in the order they appear in the authors field
e.g.
IPFS Sample 1
--
authors: [0xa]
refs: []
audio: Gzadwa21e21da
sigs: [0xa21dwa]
--
|
| Hash
V
0x1dwa
--
IPFS Sample 2
--
authors: [0xb]
refs: [0x1dwa]
audio: Gwdoapdo1
signs: [0xo3iuijnh]
--
|
|
V
Is the length of 'authors' equal to the length of 'signs'?
Yes: continue
No: invalid sample
Is each signature a valid signature of the IPFS raw audio data?
Yes: continue
No: invalid sample
Do all refs point to a valid IPFS sample (via hash of sample data)
At this point we've established that all of the signers / artist addresses agree on the audio data being submitted to IPFS
This could be a point where we can allow for contractual obligations such as agreeing that the artist owns the samples, otherwise they may be blacklisted from the protocol.
IPFS sample is valid.
|
|
v
IPFS Sample 2 -- Valid
--
authors: [0xb]
refs: [0x1dwa]
audio: Gwdaopdo1
signs: [0xo3iuijnh]
--
|
| Hash
v
0x1qaz
Node in stem / sample graph
Current graph:
0x1dwa
|
|
|
V
0x1qaz
--
Let's add more stems / samples
IPFS Sample 3
--
authors: [0xb]
refs: [0x1qaz]
audio: Gw12qeht
signs: [0x1283iegbij]
--
|
| Hash
v
0xpokij12
IPFS Sample 4
--
authors: [0xb]
refs: [0x1dwa]
audio: Gwlopjihn
signs: [0xkpojnihb]
--
|
| Hash
v
0xy7218a
New Graph:
0x1dwa
|---------------
| |
| |
V |
0x1qaz v
| 0xy7218a
|
v
0xpokij12