Digital asset management systems ensure that operations are only performed on a digital asset by individuals (or organizations) that have the proper access rights and permissions for the asset.
This developer pattern shows how to set up a digital asset management application with smart contracts that govern the transactions performed by registered users of the system on the digital assets maintained in the system.
A digital asset is defined as the content (such as an image, a music file, a document, or a video file) and its metadata. The metadata can be as simple as the name of the asset, the name of the owner of the asset, and the date of creation of the asset — or it could be something more complex, such as extracted speech from a video (subtitles). Digital asset management systems help in managing these assets by providing a means to ensure only permitted users make modifications to assets.
The large number of users (participants) in this use case, as well as the different kinds of actions (transactions) that can be executed, indicate that this is a good use case for blockchain. Blockchain also allows for the history of the transactions to be maintained in the ledger, thereby ensuring that there is always a chain of record for any changes that have been made to any asset.
In any digital asset management system, there can be any number of users, and these users can have the ability to perform various actions on the asset in the system based on the permissions that they have. Examples of such actions that are covered in this developer pattern are:
- User registration and user login
- Viewing all existing assets in the system
- Viewing assets owned by the user that is currently logged in
- Uploading a new asset
- Deleting an existing asset
- Suggesting edits to an existing asset
- Viewing suggested edits for an asset that is owned by the user that is currently logged in
- Approving or denying suggested edits for an asset that is owned by the user that is currently logged in
- Allowing other users the permission to update an asset owned by the user that is currently logged in
- Assigning another user as the owner of an asset that is owned by the user that is currently logged in
- Downloading assets
- The Blockchain Operator sets up the IBM Blockchain Platform service.
- The IBM Blockchain Platform service creates a Hyperledger Fabric network on an IBM Kubernetes Service, and the Blockchain Operator installs and instantiates the smart contract on the network.
- The Node.js application server uses the Fabric SDK to interact with the deployed network on the IBM Blockchain Platform, IBM Cloud Object Storage instance, and the Mailtrap Server (fake SMTP testing server) and creates APIs for a web client.
- The Vue.js client uses the Node.js application API to interact with the network.
- The user interacts with the Vue.js web interface to interact with the digital asset management application.
Ready to get started? Check out the README for the step-by-step details and learn how to:
- Clone the repo.
- Package the smart contract.
- Create the Mailtrap server.
- Create IBM Cloud services.
- Build a network.
- Deploy the blockchain for maintaining digital assets smart contract on the network.
- Connect the application to the network.
- Run the application.