Quickstart
Start building on Story quickly.
You want to start building on Story quickly… so let’s get started!
Looking to read up on Story first?
If you’d like to read up on Story before diving into the technical details, check out our awesome Learn Hub which will explain the who, what, and why of Story.
Credit to the original tweet here.
Add Network
Enable Story’s mainnet or testnet for your wallet.
Add Story Mainnet
Connect your wallet to Story’s mainnet.
Add Story 'Aeneid' Testnet
Connect your wallet to Story’s ‘Aeneid’ testnet.
Skip everything. Go to the code.
TypeScript Code Example
This is a clone-able quickstart for you to check out. You can clone it directly and follow the associated README.
React Code Example
This is a clone-able quickstart for you to check out. You can clone it directly and follow the associated README.
Smart Contract Code Example
This is a boilerplate for you to check out. You can clone it directly, study the example smart contracts, and follow the associated README for running the tests.
Story Network Infra
See Network Info for all RPC, explorer, and faucet info.
Use our SDKs
Check out the entire SDK Reference to see an explanation + example for every function in our 🛠️ TypeScript SDK (can use this in React as well) and 🐍 Python SDK.
We have also built a 🛠️ TypeScript SDK Guide, which is more of a step-by-step walkthrough, with its own in-depth tutorials for popular functions and use cases.
Deployed Smart Contracts
Check out the addresses for the deployed smart contracts here. Note that there are two different kinds of contracts:
- Story Protocol Core - This repository contains the core protocol logic, consisting of a thin IP registry (the IP Asset Registry), a set of 🧱 Modules defining logic around 📜 Licensing, 💸 Royalty, ❌ Dispute, metadata, and a module manager for administering module and user access control.
- Story Protocol Periphery- Whereas the core contracts deal with the underlying protocol logic, the periphery contracts deal with protocol extensions that greatly increase UX and simplify IPA management. This is mostly handled through the 📦 SPG.
Use our API
Check out the entire API Reference for learning how to use our API. For common things like fetching gas price, average block time, market cap, token price, and more, check out the Blockscout API.
Register IP on Story
Let’s start with the most basic question: “What does it take to register IP on Story in my app? How do I do this?”
To register IP on Story, you’ll first need an NFT. If your IP is an ERC-721 NFT (ex. an Azuki or Pudgy Penguin on Story), you’re already set. If not, you must mint an NFT to represent your off-chain IP. And don’t worry, we’ll help you do this in the following tutorials.
Next you’d register that NFT on Story, ultimately creating an 🧩 IP Asset. An “IP Asset” is your IP registered on Story, empowered by:
- all of Story’s 🧱 Modules like transparent licensing, automatic royalty payments, and disputing of wrongfully registered IP
- IP protection through the 💊 Programmable IP License (PIL)
Follow the below tutorials to register IP on Story:
Using the SDK
Learn how to register IP on Story using the TypeScript SDK.
Using the Smart Contracts
Learn how to register IP on Story using the Smart Contracts.
Difference Between IP Metadata vs. NFT Metadata
A common question we get from developers while registering their IP on Story is: “What metadata should be/is expected to be attached to the NFT, and then separately, the IP Asset?”
To answer that question, please see NFT vs. IP Metadata.
Licensing Your IP
You may be wondering, “How do I take advantage of Story’s on-chain licensing? How do I make sure my registered IP has a license ready to go?”
Before you attach any sort of licenses or license terms to your 🧩 IP Asset, it would be best to first understand what the 💊 Programmable IP License (PIL) actually is. This “PIL” is what defines the available License Terms on Story, which in turn - when attached to an IP Asset - is what defines how others can use (commercially, create derivatives, etc) that IP Asset.
Our tutorials will show you exactly how to attach license terms to your IP Asset:
Using the SDK
Learn how to attach license terms to your IP on Story using the TypeScript SDK.
Using the Smart Contracts
Learn how to attach license terms to your IP on Story using the Smart Contracts.
For more information on licensing and the terminology behind it, check out the 📜 Licensing Module.
Royalties / Revenue Sharing
Now you may be wondering, “How do I set up automatic royalty sharing between my IP Asset and someone else’s? How do I then collect that payment?”
When you attach License Terms to your 🧩 IP Asset, you can specify certain commercial terms such as commercialRevShare
, which is the amount of revenue (from any source, original & derivative) that must be shared by derivative works with the original IP. See the above section for licensing questions.
If someone then creates a derivative of my IP Asset - which has a commercialRevShare
of let’s say 10% in its license terms - and earns revenue on it, Story enforces the share of this revenue through the 💊 Programmable IP License (PIL) (otherwise resulting in an on-chain dispute using the ❌ Dispute Module or traditional legal arbitration) and then handles the upstream revenue share at the protocol level. If the derivative work earns 100 $WIP, my original IP Asset could claim 10 $WIP.
Our tutorials will show you exactly how to claim revenue:
Using the SDK
Learn how to claim revenue on Story using the TypeScript SDK.
Using the Smart Contracts
Learn how to claim revenue on Story using the Smart Contracts.
For more information on royalty and how it functions, check out the Royalty Module.
Disputing
Now you may be wondering, “How can I actually dispute someone else’s IP if they steal mine, or don’t pay me proper revenue for using it?”
There are two main philosophies/ways to take down “bad” IP.
The first is the 🕵️ Story Attestation Service. This compromises of a bunch of infringement detection providers that, upon IP registration, automatically review the IP - using their own methods, whether it’s AI, manual checking, etc - and flag it if the IP is infringing (ex. registering a picture of Pikachu). Then, any IP discovery platform like the IP Portal can surface the reviews and let users decide if they want to use an IP or not.
For example, an IP that has hundreds of flags from different infringement providers probably isn’t a legitimate IP.
The second is using the ❌ Dispute Module to officially tag & block IP at the protocol level. Anyone can flag an IP and it will be sent off to arbitration partners like UMA who will decide its fate. If officially tagged, an IP can no longer earn revenue or create derivatives via the protocol.
For example, if someone doesn’t make a proper payment for using an IP commercially, or uses it in a disallowed territory, or contains NSFW content.
Our tutorials will show you exactly how to raise a dispute on-chain:
For more information on filing a dispute on-chain, check out the ❌ Dispute Module.