Introduction

Cargo is a service platform that securely tokenizes tangible and digital assets on the Ethereum blockchain, allowing you to buy, sell, auction, trade or transfer them. For digital assets, Cargo also securely stores them. Cargo uses a powerful set of smart contracts to make this happen. You can interact with Cargo through the Cargo dashboard, programmatically through our client side library, or directly through the Cargo smart contracts. This documentation will outline the ways you can use Cargo to empower your decentralized applications - from the simplest use cases to the most complex.

Think of Cargo as a cargo ship. Cargo ships carry crates. Each of those crates are filled with goods that are most likely intended to be sold. Cargo is your digital cargo ship that also gives you access to a powerful set of tools to sell your goods and transfer the funds brought in by those goods. Cargo allows you to create crates, add vendors and beneficiaries, create token contracts, withdraw funds, as well as sell and auction your tokenized assets. Here's a list of terms you should be familiar with and how they work within the Cargo system.

Terms you should know.

Crates

Let's go back to the cargo ship analogy. Cargo ships have crates filled with goods. Crates on the Cargo platform are going to store all of your tokenized goods. When you tokenize an asset it will be tied to a crate. This is how Cargo groups your tokenized assets together and how you will be able to display them to those who will be interested in purchasing them.

Cargo uses opinionated ERC-721 contracts to tokenize digital and tangible assets. When you create a new token contract it will be stored in a crate. We think about these contracts in two ways. One way would be that each token created within this contract will be unique and have different meta-data associated with it. This works well for things like CryptoKitties where each cat is unique and has different attributes. This doesn't work as well for an art marketplace where you want to sell limited "digital prints" and each contract represents one piece of art with a limited number of copies. Cargo handles both use cases. You can create token contracts that will have unique metadata associated with each new token created and you can create contracts that have global metadata that each new token will share.

Vendors

Crates have vendors. Vendors can upload items to crates. When you create a crate you will automatically be added as the default vendor. You have the ability to add additional vendors to your crate that will enable you to create marketplaces. An example would be that you are an artist uploading digital art and selling it via Cargo. You want to allow other artists to add art and sell through your store. You can add the additional artists as vendors and they would be able to upload and sell through your store and you would get a specified percentage from each vendor sale.

Each vendor has a set of beneficiaries. Currently, you can have up to 50 beneficiaries tied to a vendor. Beneficiaries will get a percentage of the sale of an item that a particular vendor has created. Say you are a DJ and you upload your newest unheard track via Cargo. There may have been others who helped you make this new song. Maybe five of your friends are owed a percentage of the funds received through sales. You can add your 5 friends as beneficiaries and specify the amount they will receive from each sale. Beneficiaries will only receive a percentage from the vendor they are associated with. So if a crate has multiple vendors beneficiaries will receive a commission only from items sold by a particular vendor - the vendor they are associated with.

Reseller

A reseller is someone who has purchased a token from a vendor and is now reselling that token. A reseller may not necessarily be a vendor. Cargo keeps track of resellers by their wallet address and they are abstracted from any crate or vendor.

Interacting with Cargo

Now that you know a little bit more about Cargo it's time to start building your decentralized application. This documentation will outline how you can interact with Cargo in the following ways:

The Cargo dashboard is a graphical user interface that will allow you to tokenize assets, manage vendors and beneficiaries, and view and withdraw funds. You can create Crate pages right from the dashboard. A Crate page is a publicly accessible page, hosted on Cargo, that will display your tokenized assets and will allow your users to purchase items and manage things they own.

Cargo JS

Cargo offers Cargo JS - a JavaScript library that you can use to interact with Cargo through your own website.

You can also interact with Cargo by calling our smart contracts directly. All the contract methods you can use to empower your applications can be found in this guide under the "Smart Contracts" section.