This is the implementation of on-chain content ownership with below features:
- User can create content and leverage Cardano blockchain to record ownership
- The content owner can update the content anytime
- The content owner can transfer content ownership to others
- Forward compatible: Incentive mechanism expansion
- Scalable: Up to 10,000 users, each with 10,000 piece of content
- User can use any native asset on Cardano to represent ownership identity
The specification of all scripts involved could be found at scripts_specs.md. Scripts are labelled with number 1 - 6. And we would use the label for referring to validation logic needed on below.
The are 4 steps of setting up the applications:
- Minting
oracle_nft
, one time minting policy with empty token name with quantity of 1.- Validation: 1.1
- Sending the the
oracle_nft
tooracle_validator
with initialized inline datum of specifying all compile scripts, addresses with owner keys. Setting both registry counts to0
.- Validation: N/A
- Creating
content_registry
by mintingcontent_registry_ref_token
tocontent_registry
address.- Validation: 2.1, 3.1
- Creating
ownership_registry
by mintingownership_registry_ref_token
toownership_registry
address.- Validation: 2.2, 4.1
Step 3 and 4 would be repeated anytime, considering:
- Operating concurrency (1 UTxO = 1 concurrency)
- Registry size (desired size to be tested)
- Create Content
- Validation: 4.1, 6.1
- Update Content
- Validation: 4.2
- Transfer Ownership
- Validation: 6.2
- Rotate keys
- Validation: 2.3
- Stop Oracle
- Validation: 1.2, 2.4
- Stop Content Registry
- Validation: 3.2, 4.3
- Stop Ownership Registry
- Validation: 5.2, 6.3
There is unit tests in this implementation. To run all tests, simply do:
aiken check