Skip to content

Stem Graph Contributions

Drew Cook edited this page Dec 1, 2022 · 4 revisions

Introduction

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

Structure

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


Clone this wiki locally