├── .github ├── CODEOWNERS └── workflows │ └── combine.md.yml ├── .gitignore ├── README.md ├── _order.yaml ├── combined.md ├── custom_pages └── _order.yaml ├── docs ├── Archive │ ├── _order.yaml │ ├── academy.md │ ├── archive.md │ ├── bounties.md │ ├── ethdenver-buidlathon.md │ ├── exploring-story-protocol.md │ ├── get-started-with-the-react-sdk-copyyy │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── react-sdk-attach-a-policy-to-an-ip-asset.md │ │ ├── react-sdk-create-a-pil-policy.md │ │ ├── react-sdk-mint-a-license.md │ │ ├── react-sdk-register-an-nft-as-an-ip-asset.md │ │ └── react-sdk-setup-copyyy.md │ ├── introduction │ │ ├── _order.yaml │ │ ├── ideas-for-interested-builders │ │ │ ├── _order.yaml │ │ │ ├── ai-generated-assets-marketplace.md │ │ │ ├── capital-formation-platform.md │ │ │ ├── content-management-system-and-collaboration-hub.md │ │ │ ├── content-remixing-mobile-app.md │ │ │ ├── defi-applications-and-rwa.md │ │ │ ├── external-hooks.md │ │ │ ├── index.md │ │ │ └── ip-licensing-platform.md │ │ ├── index.md │ │ ├── public-domain-project.md │ │ └── suggests-services-for-common-use-cases.md │ ├── ip-derivation-remixing-loop.md │ ├── ipaccount │ │ ├── _order.yaml │ │ ├── index.md │ │ └── open-data-access.md │ ├── licensing-and-royalties.md │ ├── periphery-contracts │ │ ├── _order.yaml │ │ ├── default-ip-collection.md │ │ ├── index.md │ │ ├── ip-creation.md │ │ ├── mint-and-register-derivative-ip.md │ │ ├── mint-and-register-ip.md │ │ ├── register-derivative-ip.md │ │ └── register-ip.md │ ├── python-sdk │ │ ├── _order.yaml │ │ ├── attach-terms-to-an-ip-asset-python.md │ │ ├── collect-claim-royalty-python.md │ │ ├── index.md │ │ ├── mint-a-license-python.md │ │ ├── python-sdk-setup.md │ │ ├── register-an-ipa-as-a-derivative-python.md │ │ ├── register-an-nft-as-an-ip-asset-python.md │ │ ├── register-pil-terms-python.md │ │ └── spg-functions-python.md │ └── react-sdk │ │ ├── _order.yaml │ │ ├── attach-license-terms-to-an-ip-asset-react.md │ │ ├── collect-claim-royalty-react.md │ │ ├── index.md │ │ ├── mint-a-license-token-react.md │ │ ├── react-sdk-setup │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── wagmi-dynamic-setup.md │ │ ├── wagmi-rainbowkit-setup.md │ │ └── wagmi-walletconnect-setup.md │ │ ├── register-an-ipa-as-a-derivative-react.md │ │ ├── register-an-nft-as-an-ip-asset-react.md │ │ ├── register-pil-terms-react.md │ │ └── spg-functions-react.md ├── Developers │ ├── _order.yaml │ ├── deployed-smart-contracts.md │ ├── dev-overview.md │ ├── get-started-with-the-smart-contracts │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── sc-attach-license-terms.md │ │ ├── sc-claiming-royalty.md │ │ ├── sc-example.md │ │ ├── sc-mint-license-token.md │ │ ├── sc-register-an-ip-asset.md │ │ ├── sc-register-license-terms.md │ │ ├── sc-remix-ipa.md │ │ └── sc-setup.md │ ├── react-guide │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── react-setup │ │ │ ├── _order.yaml │ │ │ ├── dynamic-setup.md │ │ │ ├── index.md │ │ │ ├── rainbowkit-setup.md │ │ │ ├── reown-setup.md │ │ │ └── tomo-setup.md │ │ └── using-the-sdk-in-react.md │ ├── releases-page.md │ ├── tutorials │ │ ├── _order.yaml │ │ ├── case-study-register-derivative-ippy.md │ │ ├── finetune-images.md │ │ ├── how-to-register-ip-on-story.md │ │ ├── how-to-register-music-on-story.md │ │ ├── how-to-tip-an-ip.md │ │ ├── index.md │ │ ├── privy-tutorial.md │ │ ├── protect-dalle-ai-generated-images.md │ │ └── register-stability-images.md │ ├── typescript-sdk │ │ ├── _order.yaml │ │ ├── attach-terms-to-an-ip-asset.md │ │ ├── claim-revenue.md │ │ ├── index.md │ │ ├── mint-a-license.md │ │ ├── pay-ipa.md │ │ ├── raise-a-dispute.md │ │ ├── register-a-derivative.md │ │ ├── register-an-ip-asset.md │ │ └── typescript-sdk-setup.md │ └── version-matrix │ │ ├── _order.yaml │ │ ├── index.md │ │ └── sdk-v13-migration-guide.md ├── Ecosystem & Governance │ ├── _order.yaml │ ├── ecosystem-getting-started.md │ └── governance.md ├── Introduction │ ├── _order.yaml │ ├── ai-agents-on-story │ │ ├── _order.yaml │ │ ├── implementing-the-atcpip-whitepaper.md │ │ ├── index.md │ │ └── using-cursor-with-story.md │ ├── explain-like-im-five.md │ ├── faq.md │ ├── quickstart.md │ └── what-is-story.md ├── Protocol Concepts │ ├── _order.yaml │ ├── access-controller.md │ ├── concepts-faq.md │ ├── dispute-module │ │ ├── _order.yaml │ │ ├── index.md │ │ └── uma-arbitration-policy.md │ ├── grouping-module.md │ ├── ip-asset │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── ip-account.md │ │ ├── ipa-metadata-standard.md │ │ └── ipa-modifications.md │ ├── licensing-module │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── license-config-hook.md │ │ ├── license-template.md │ │ ├── license-terms.md │ │ └── license-token.md │ ├── overview.md │ ├── programmable-ip-license │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── pil-flavors.md │ │ └── pil-terms.md │ ├── registry │ │ ├── _order.yaml │ │ ├── group-ip-asset-registry.md │ │ ├── index.md │ │ ├── ip-asset-registry.md │ │ ├── license-registry.md │ │ └── module-registry.md │ ├── royalty-module │ │ ├── _order.yaml │ │ ├── external-royalty-policies.md │ │ ├── index.md │ │ ├── ip-royalty-vault.md │ │ ├── liquid-absolute-percentage.md │ │ ├── liquid-relative-percentage.md │ │ └── payments-and-revenue-tokens.md │ ├── spg │ │ ├── _order.yaml │ │ ├── batch-spg-function-calls.md │ │ └── index.md │ ├── story-attestation-service.md │ └── story-modules │ │ ├── _order.yaml │ │ ├── base-module.md │ │ ├── hooks.md │ │ ├── how-to-create-and-register-modules.md │ │ ├── index.md │ │ └── view-module.md ├── SDK Reference │ ├── _order.yaml │ ├── sdk-dispute.md │ ├── sdk-group.md │ ├── sdk-ipaccount.md │ ├── sdk-ipasset.md │ ├── sdk-license.md │ ├── sdk-nftclient.md │ ├── sdk-overview.md │ ├── sdk-permissions.md │ ├── sdk-royalty.md │ └── wip-client.md ├── Smart Contract Reference │ ├── _order.yaml │ ├── beta-ipaccountimplsol.md │ ├── beta-modules │ │ ├── _order.yaml │ │ ├── basemodulesol-1.md │ │ ├── dispute-3 │ │ │ ├── _order.yaml │ │ │ ├── dispute-module-sol.md │ │ │ └── index.md │ │ ├── external │ │ │ ├── _order.yaml │ │ │ ├── index.md │ │ │ └── tokenwithdrawalmodule.md │ │ ├── index.md │ │ ├── licensing │ │ │ ├── _order.yaml │ │ │ ├── basepolicyframeworkmanagersol.md │ │ │ ├── index.md │ │ │ ├── licensingmoduleawaresol.md │ │ │ ├── licensingmodulesol.md │ │ │ └── pilpolicyframeworkmanagersol.md │ │ ├── registrationmodulesol-1.md │ │ └── royalty-1 │ │ │ ├── _order.yaml │ │ │ ├── index.md │ │ │ └── royaltymodulesol.md │ ├── beta-reference │ │ ├── _order.yaml │ │ ├── accesscontrolled-1.md │ │ ├── accesscontrollersol.md │ │ └── index.md │ ├── beta-registries │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── ipaccountregistrysol.md │ │ ├── ipassetregistrysol.md │ │ ├── licenseregistrysol.md │ │ ├── metadata │ │ │ ├── _order.yaml │ │ │ ├── index.md │ │ │ ├── ipassetrenderersol.md │ │ │ ├── ipmetadataprovidersol.md │ │ │ ├── metadataproviderbasesol.md │ │ │ └── metadataproviderv1sol.md │ │ └── moduleregistrysol.md │ ├── beta-resolvers │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── ipresolversol.md │ │ ├── keyvalueresolversol.md │ │ └── resolverbasesol.md │ ├── beta-utils │ │ ├── _order.yaml │ │ ├── index.md │ │ └── shortstringops-1.md │ ├── libraries │ │ ├── _order.yaml │ │ ├── accesspermissionmd.md │ │ ├── arrayutilssol.md │ │ ├── datauniquenesssol.md │ │ ├── errorssol.md │ │ ├── governancelibsol.md │ │ ├── index.md │ │ ├── ipaccountcheckermd.md │ │ ├── ipsol.md │ │ ├── licensingsol.md │ │ ├── metatxsol.md │ │ ├── modulemd.md │ │ └── pilframeworkerrorssol.md │ └── policy-1 │ │ ├── _order.yaml │ │ ├── dispute-2 │ │ ├── _order.yaml │ │ ├── arbitrationpolicyspsol.md │ │ └── index.md │ │ ├── index.md │ │ └── royalty-2 │ │ ├── _order.yaml │ │ ├── ancestorvaultlapsol.md │ │ ├── index.md │ │ └── royaltypolicylapsol.md ├── Story Network (L1) │ ├── _order.yaml │ ├── become-a-validator.md │ ├── become-a-validator │ │ └── _order.yaml │ ├── infrastructure-partners.md │ ├── more │ │ ├── _order.yaml │ │ ├── additional-resources.md │ │ ├── index.md │ │ ├── network-faq.md │ │ └── oracle │ │ │ ├── _order.yaml │ │ │ ├── gelato.md │ │ │ ├── index.md │ │ │ ├── pyth.md │ │ │ └── redstone.md │ ├── network-info │ │ ├── _order.yaml │ │ ├── aeneid.md │ │ ├── index.md │ │ ├── localnet.md │ │ └── mainnet.md │ ├── operating-a-node │ │ ├── _order.yaml │ │ ├── index.md │ │ ├── node-setup-mainnet.md │ │ ├── node-upgrade.md │ │ ├── operate-your-node.md │ │ └── release-notes.md │ ├── story-architect-overview.md │ ├── story-node-structure │ │ ├── _order.yaml │ │ ├── cosmos-modules │ │ │ ├── _order.yaml │ │ │ ├── cosmos-module-overview.md │ │ │ ├── evmengine-module.md │ │ │ ├── evmstaking-module.md │ │ │ ├── index.md │ │ │ ├── mint-module.md │ │ │ └── staking-module.md │ │ ├── engine-api.md │ │ ├── index.md │ │ └── precompile.md │ └── tokenomics-staking.md └── _order.yaml └── reference ├── Consensus Client Api ├── _order.yaml ├── cosmos-origin │ ├── _order.yaml │ ├── cosmos-originauth │ │ ├── _order.yaml │ │ ├── getauthparams.md │ │ └── index.md │ ├── cosmos-originbank │ │ ├── _order.yaml │ │ ├── getbankbalancesaddressbydenom.md │ │ ├── getbankparams.md │ │ ├── getbankspendablebalancesaddressbydenom.md │ │ ├── getbanksupplybydenom.md │ │ └── index.md │ ├── cosmos-origindistribution │ │ ├── _order.yaml │ │ ├── getdistributiondelegatorsdelegatoraddressrewards.md │ │ ├── getdistributiondelegatorsdelegatoraddressrewardsvalidatoraddress.md │ │ ├── getdistributiondelegatorsdelegatoraddressvalidators.md │ │ ├── getdistributionparams.md │ │ ├── getdistributionvalidatorsvalidatoraddress.md │ │ ├── getdistributionvalidatorsvalidatoraddresscommission.md │ │ ├── getdistributionvalidatorsvalidatoraddressoutstandingrewards.md │ │ ├── getdistributionvalidatorsvalidatoraddressslashes.md │ │ └── index.md │ ├── cosmos-originmint │ │ ├── _order.yaml │ │ ├── getmintparams.md │ │ └── index.md │ ├── cosmos-originstaking │ │ ├── _order.yaml │ │ ├── getstakingdelegationsdelegatoraddr.md │ │ ├── getstakingdelegatorsdelegatoraddrredelegations.md │ │ ├── getstakingdelegatorsdelegatoraddrunbondingdelegations.md │ │ ├── getstakingdelegatorsdelegatoraddrvalidators.md │ │ ├── getstakingdelegatorsdelegatoraddrvalidatorsvalidatoraddr.md │ │ ├── getstakinghistoricalinfoheight.md │ │ ├── getstakingparams.md │ │ ├── getstakingpool.md │ │ ├── getstakingvalidators.md │ │ ├── getstakingvalidatorsvalidatoraddr.md │ │ ├── getstakingvalidatorsvalidatoraddrdelegations.md │ │ ├── getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddr.md │ │ ├── getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddrunbondingdelegation.md │ │ ├── getstakingvalidatorsvalidatoraddrunbondingdelegations.md │ │ └── index.md │ └── index.md └── story-extend │ ├── _order.yaml │ ├── index.md │ └── story-extendstaking │ ├── _order.yaml │ ├── getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegations.md │ ├── getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegationsperioddelegationid.md │ └── index.md ├── Getting Started ├── _order.yaml ├── api-introduction.md └── blockscout-api.md ├── ReadMeConfig ├── _order.yaml ├── authentication.md ├── getting-started.md └── my-requests.md ├── Story Protocol API Reference ├── _order.yaml ├── collections │ ├── _order.yaml │ ├── get_api-v3-collections-collectionid.md │ ├── index.md │ └── post_api-v3-collections.md ├── disputes │ ├── _order.yaml │ ├── get_api-v3-disputes-disputeid.md │ ├── index.md │ └── post_api-v3-disputes.md ├── ipassets │ ├── _order.yaml │ ├── get_api-v3-assets-assetid-metadata.md │ ├── get_api-v3-assets-assetid.md │ ├── index.md │ ├── post_api-v3-assets-edges.md │ └── post_api-v3-assets.md ├── ipgroup │ ├── _order.yaml │ ├── index.md │ ├── post_api-v3-ip-group-edges.md │ └── post_api-v3-ip-groups.md ├── iplicenseterms │ ├── _order.yaml │ ├── get_api-v3-licenses-ip-terms-ipid.md │ ├── get_api-v3-licenses-terms-default.md │ ├── index.md │ ├── post_api-v3-detailed-ip-license-terms.md │ └── post_api-v3-licenses-ip-terms.md ├── licenses │ ├── _order.yaml │ ├── get_api-v3-licenses-mintingfees-licensemintingfeepaidid.md │ ├── index.md │ └── post_api-v3-licenses-mintingfees.md ├── licensetemplates │ ├── _order.yaml │ ├── get_api-v3-licenses-templates-licensetemplateid.md │ ├── index.md │ └── post_api-v3-licenses-templates.md ├── licenseterms │ ├── _order.yaml │ ├── get_api-v3-licenses-terms-licensetermid.md │ ├── index.md │ └── post_api-v3-licenses-terms.md ├── licensetokens │ ├── _order.yaml │ ├── get_api-v3-licenses-tokens-licensetokenid.md │ ├── index.md │ └── post_api-v3-licenses-tokens.md ├── modules │ ├── _order.yaml │ ├── get_api-v3-modules-moduleid.md │ ├── index.md │ └── post_api-v3-modules.md ├── permissions │ ├── _order.yaml │ ├── get_api-v3-permissions-permissionid.md │ ├── index.md │ └── post_api-v3-permissions.md ├── royalties │ ├── _order.yaml │ ├── get_api-v3-royalties-payments-royaltypayid.md │ ├── index.md │ └── post_api-v3-royalties-payments.md └── transactions │ ├── _order.yaml │ ├── get_api-v3-transactions-trxid.md │ ├── index.md │ ├── post_api-v3-transactions-latest.md │ └── post_api-v3-transactions.md ├── _order.yaml ├── consensus-client-api.json └── swagger.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @jacob-tucker 2 | * @gregsantos -------------------------------------------------------------------------------- /.github/workflows/combine.md.yml: -------------------------------------------------------------------------------- 1 | name: Combine Markdown Files 2 | 3 | on: 4 | push: 5 | branches: 6 | - v1.3 7 | 8 | jobs: 9 | combine-md-files: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Check out the repository 14 | uses: actions/checkout@v3 15 | with: 16 | token: ${{ secrets.PAT_TOKEN }} 17 | fetch-depth: 0 18 | 19 | - name: Combine .md files 20 | run: | 21 | find . -type f -name "*.md" \ 22 | -not -path "./docs/reference/*" \ 23 | -not -path "./docs/Archive/*" \ 24 | -not -path "./docs/Smart Contract Reference/*" \ 25 | -not -path "./reference/*" \ 26 | -not -path "./docs/Ecosystem/*" \ 27 | -not -name "combined.md" \ 28 | -not -name "combined.md.yml" \ 29 | -exec sh -c ' 30 | perl -0777 -ne '\'' 31 | if (/^---\n.*?title: (.*?)[\n].*?---\n(.*)/s) { 32 | print "# $1\n$2\n\n"; 33 | } 34 | '\'' "$1" 35 | ' sh {} \; > combined.md 36 | 37 | - name: Commit and push changes 38 | run: | 39 | git config --global user.name "github-actions[bot]" 40 | git config --global user.email "github-actions[bot]@users.noreply.github.com" 41 | git add combined.md 42 | git commit -m "Update combined.md [skip ci]" || echo "No changes to commit" 43 | git push "https://${{ secrets.PAT_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git" v1.3 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Please see the new docs [here](https://github.com/storyprotocol/docs) 2 | -------------------------------------------------------------------------------- /_order.yaml: -------------------------------------------------------------------------------- 1 | - reown-setup 2 | - Story Protocol API Reference 3 | - ipassets-8 4 | - postapiv2assets 5 | - postapiv2assetsedges 6 | - getapiv2assetsassetid 7 | - getapiv2assetsassetidmetadata 8 | - collections-8 9 | - postapiv2collections 10 | - getapiv2collectionscollectionid 11 | - iplicenseterms-8 12 | - postapiv2detailediplicenseterms 13 | - disputes-8 14 | - postapiv2disputes 15 | - getapiv2disputesdisputeid 16 | - ipgroup-8 17 | - postapiv2ipgroupedges 18 | - postapiv2ipgroups 19 | - postapiv2licensesipterms 20 | - getapiv2licensesiptermsipid 21 | - licenses-8 22 | - postapiv2licensesmintingfees 23 | - getapiv2licensesmintingfeeslicensemintingfeepaidid 24 | - licensetemplates-8 25 | - postapiv2licensestemplates 26 | - getapiv2licensestemplateslicensetemplateid 27 | - licenseterms-8 28 | - postapiv2licensesterms 29 | - apiv2licensestermsdefault 30 | - getapiv2licensestermsdefault 31 | - getapiv2licensestermslicensetermid 32 | - licensetokens-8 33 | - postapiv2licensestokens 34 | - getapiv2licensestokenslicensetokenid 35 | - modules-8 36 | - postapiv2modules 37 | - getapiv2modulesmoduleid 38 | - permissions-8 39 | - postapiv2permissions 40 | - getapiv2permissionspermissionid 41 | - royalties-8 42 | - postapiv2royaltiespayments 43 | - getapiv2royaltiespaymentsroyaltypayid 44 | - transactions-8 45 | - postapiv2transactions 46 | - postapiv2transactionslatest 47 | - getapiv2transactionstrxid 48 | -------------------------------------------------------------------------------- /custom_pages/_order.yaml: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /docs/Archive/_order.yaml: -------------------------------------------------------------------------------- 1 | - academy 2 | - react-sdk 3 | - python-sdk 4 | - introduction 5 | - archive 6 | - exploring-story-protocol 7 | - licensing-and-royalties 8 | - ipaccount 9 | - ip-derivation-remixing-loop 10 | - get-started-with-the-react-sdk-copyyy 11 | - periphery-contracts 12 | - ethdenver-buidlathon 13 | - bounties 14 | -------------------------------------------------------------------------------- /docs/Archive/academy.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ecosystem 3 | deprecated: false 4 | hidden: true 5 | metadata: 6 | robots: index 7 | --- 8 | Story provides a versatile framework to manage the entire lifecycle of IP development, enabling features like provenance, contribution tracking, frictionless licensing, and revenue sharing. The protocol has been designed with modularity and extensibility in mind, allowing developers to build a diverse array of applications on top of it, including generative AI, fandom platforms, gaming, franchise management, DeFi, social media, and DAO. 9 | 10 | The [Story Explorer](https://explorer.story.foundation/) provides a comprehensive view of transactions on-chain and is there to assist in debugging during development. 11 | 12 | # Join Story Academy 13 | 14 | The Story Academy is a builder program designed to support, mentor, and accelerate promising entrepreneurs and innovative projects building on Story. We will provide technical expertise, marketing know-how, grants, and investor network introductions matching the level of ambition and execution capability of each admitted project. If you're a visionary builder already working on or planning to build a project on top of Story, we want to talk to you. 15 | 16 | [Learn more about Story Academy](https://www.story.foundation/academy) -------------------------------------------------------------------------------- /docs/Archive/get-started-with-the-react-sdk-copyyy/_order.yaml: -------------------------------------------------------------------------------- 1 | - react-sdk-setup-copyyy 2 | - react-sdk-register-an-nft-as-an-ip-asset 3 | - react-sdk-create-a-pil-policy 4 | - react-sdk-attach-a-policy-to-an-ip-asset 5 | - react-sdk-mint-a-license 6 | -------------------------------------------------------------------------------- /docs/Archive/get-started-with-the-react-sdk-copyyy/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get Started with the React SDK 3 | excerpt: For React developers who want to build with Story Protocol. 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | pages: 13 | - type: basic 14 | slug: react-sdk-setup 15 | title: React SDK Setup 16 | --- 17 | The best way to jump-start with Story Protocol is to get your hands dirty and start building. 18 | 19 | > 🏁 You can jump right to [this app](https://github.com/storyprotocol/tutorial-react) which contains an example for all of the following tutorials. 20 | 21 | In this series of tutorials, you will learn how to build IP applications with Story Protocol React SDK and the concepts we mentioned in the [Architecture Overview](doc:overview) of Story Protocol. 22 | 23 | Along the way, you will learn how to: 24 | 25 | * [Setup SDK](doc:react-sdk-setup) 26 | * [Register IP Assets](https://docs.storyprotocol.xyz/docs/react-sdk-register-an-nft-as-an-ip-asset) 27 | * [Create a PIL policy](doc:react-sdk-create-a-pil-policy) 28 | * [Attach a Policy to an IP Asset (IPA)](doc:react-sdk-attach-a-policy-to-an-ip-asset) 29 | * [Mint a license](doc:react-sdk-mint-a-license) 30 | -------------------------------------------------------------------------------- /docs/Archive/get-started-with-the-react-sdk-copyyy/react-sdk-attach-a-policy-to-an-ip-asset.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Attach a Policy to an IP Asset 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | pages: 13 | - type: basic 14 | slug: react-sdk-mint-a-license 15 | title: Mint a License 16 | --- 17 | This section demonstrates how to add an existing policy to an IPA. By creating such a policy, an IPA becomes eligible for licensing creation. Users who then wish to creative derivatives of the IP may then mint licenses, which can be burned to enroll their IPs as derivative IPAs of the original work. 18 | 19 | ## Prerequisites 20 | 21 | * [Setup](doc:react-sdk-setup) the Web3Provider. 22 | * An existing IPA (`ipId`). Learn how to register an IP Asset [here](doc:react-sdk-register-an-nft-as-an-ip-asset). 23 | * An existing Policy (`policyId`). Learn how to create a PIL Policy [here](doc:react-sdk-create-a-pil-policy). 24 | 25 | # Attach a Policy to an IP asset 26 | 27 | Once the policy is created, you can add the policy to your IP asset so you will be able to mint licenses based on the policy later on. One IP asset can have multiple policies. 28 | 29 | Below is the code example to add the policy we just created to our IP Asset using the `useMintLicense` hook: 30 | 31 | ```jsx AddPolicyToIPAsset.tsx 32 | 'use client'; 33 | import { useAddPolicyToIp, useMintLicense } from '@story-protocol/react'; 34 | 35 | export default function AddPolicyToIp() { 36 | const { writeContractAsync, isPending, data: txHash } = useAddPolicyToIp(); 37 | 38 | const ipId = '0x12591729eDd365807C48AC90dc857f6f28b5e448'; // Update this with the IP ID address you registered from RegisterRootIp.tsx 39 | const policyId = BigInt(4); // Update this with the policy registered in RegisterPILPolicy.tsx, or use a pre-existing policy that allows for derivatives 40 | 41 | function handleClick() { 42 | writeContractAsync({ 43 | functionName: 'addPolicyToIp', 44 | args: [ipId, policyId], 45 | }); 46 | } 47 | 48 | return ( 49 | 52 | ); 53 | } 54 | ``` 55 | -------------------------------------------------------------------------------- /docs/Archive/get-started-with-the-react-sdk-copyyy/react-sdk-mint-a-license.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mint a License 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | This section demonstrates how to mint a license for an IP asset. You can only mint a license for an IP asset if it has a policy added to its configuration. A license is minted as an ERC1155 token and contains the necessary licensing details. 14 | 15 | ## Prerequisites 16 | 17 | * [Setup](doc:react-sdk-setup) the Web3Provider. 18 | * An IP asset that has a policy added. Learn how to add a policy to an IP asset [here](doc:react-sdk-attach-a-policy-to-an-ip-asset). 19 | 20 | # Mint License 21 | 22 | To mint a license, we will need the `ipId` (address of the IP asset), the `policyId` string of the policy for the intended license, the `mintAmount` of licenses to be minted (usually 1, unless the minter decides to mint a batch and distribute it in another way later on), and the `receiverAddress` (usually the wallet address that is executing the transaction). 23 | 24 | We can use the `useMintLicense` hook to mint a license: 25 | 26 | ```jsx MintLicense.tsx 27 | 'use client'; 28 | import { useMintLicense } from '@story-protocol/react'; 29 | import { Address, zeroAddress } from 'viem'; 30 | import { useAccount } from 'wagmi'; 31 | 32 | export default function MintLicense() { 33 | const { writeContractAsync, isPending, data: txHash } = useMintLicense(); 34 | const { address } = useAccount(); 35 | 36 | //* NOTE: if the `policyId` has commercialUse = true, then this transaction below will fail because it requires payments. 37 | //* For the sake of this example, we will keep it simpler (non commercial) 38 | 39 | // Update these 40 | const ipId = '0x12591729eDd365807C48AC90dc857f6f28b5e448'; // Update this with the IP ID address from RegisterRootIp.tsx 41 | const policyId = BigInt(4); // Update this with a policy that's attached to the IP Asset 42 | 43 | const amount = BigInt(1); // The amount of licenses to mint 44 | const minter = address as Address; // The recipient of the license 45 | const royaltyContext = '0x'; // Additional calldata for the royalty policy 46 | 47 | function handleClick() { 48 | writeContractAsync({ 49 | functionName: 'mintLicense', 50 | args: [policyId, ipId, amount, minter, royaltyContext], 51 | }); 52 | } 53 | 54 | return ( 55 | 58 | ); 59 | } 60 | ``` 61 | 62 | Setting`waitForTransaction: true` in the transaction options will return the `licenseId` of the newly minted license(s). 63 | -------------------------------------------------------------------------------- /docs/Archive/get-started-with-the-react-sdk-copyyy/react-sdk-register-an-nft-as-an-ip-asset.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Register an NFT as an IP Asset 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | pages: 13 | - type: basic 14 | slug: react-sdk-create-a-pil-policy 15 | title: Create a PIL Policy 16 | --- 17 | This section demonstrates how to register an IP asset using the React SDK. There are generally two methods of IP registration: 18 | 19 | 1. Register an existing NFT as an IP asset 20 | 2. Create an NFT and register it as an IP asset in one transaction 21 | 22 | For this section, we will register an existing NFT as an IP asset (#1 above). 23 | 24 | ## Prerequisites 25 | 26 | * [Setup](doc:react-sdk-setup) the Web3Provider. 27 | * Own an ERC721 NFT in your wallet. Have it's contract address and token ID ready. 28 | 29 | # Register an Existing NFT as an IP Asset 30 | 31 | You can register your NFT as an IP Asset by utilizing the `useRegisterRootIp` hook and passing in the following options: 32 | 33 | ```jsx RegisterIPAsset.tsx 34 | 'use client'; 35 | import { useRegisterRootIp } from '@story-protocol/react'; 36 | import { stringToHex } from 'viem'; 37 | 38 | export default function RegisterIpAsset() { 39 | const { 40 | writeContractAsync, 41 | isPending: isPendingInWallet, 42 | data: txHash, 43 | } = useRegisterRootIp(); 44 | 45 | const tokenId = BigInt(12); // Update if using your own NFT 46 | const nftContract = '0xd516482bef63Ff19Ed40E4C6C2e626ccE04e19ED'; // Update if using your own NFT 47 | 48 | // You can use an existing `policyId` or register your own 49 | // in `RegisterPILPolicy.tsx` 50 | const policyId = BigInt(0); 51 | const ipName = 'IP Man'; // Name of your IP, if applicable 52 | const contentHash = stringToHex('0x', { size: 32 }); // Content hash of your NFT, if applicable 53 | const externalURL = 'https://example.com'; // External URL for your IP, if applicable 54 | 55 | async function handleClick() { 56 | await writeContractAsync({ 57 | functionName: 'registerRootIp', 58 | args: [policyId, nftContract, tokenId, ipName, contentHash, externalURL], 59 | }); 60 | } 61 | 62 | return ( 63 | 66 | ); 67 | } 68 | ``` 69 | -------------------------------------------------------------------------------- /docs/Archive/introduction/_order.yaml: -------------------------------------------------------------------------------- 1 | - suggests-services-for-common-use-cases 2 | - public-domain-project 3 | - ideas-for-interested-builders 4 | -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/_order.yaml: -------------------------------------------------------------------------------- 1 | - external-hooks 2 | - capital-formation-platform 3 | - defi-applications-and-rwa 4 | - ai-generated-assets-marketplace 5 | - ip-licensing-platform 6 | - content-management-system-and-collaboration-hub 7 | - content-remixing-mobile-app 8 | -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/ai-generated-assets-marketplace.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: AI-generated Assets Marketplace 3 | excerpt: Shutterstock/Getty Images for AI assets 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Anyone who has worked on product design, website development, or marketing campaigns for small businesses or early-stage startups understands the cost of creating new visual assets from scratch. That is why stock image platforms like Shutterstock and Getty Images provide a vast catalog of readily available assets for a reasonably cheap price. 14 | 15 | It might surprise many that the stock visual asset market is a multi-billion dollar annual revenue business. However, with the advent of generative AI, there is an open window of opportunity for a new type of visual asset marketplace to emerge that serves creators using generative AI models to craft high-quality assets. Midjourney recently updated its Terms & Conditions, granting full ownership of the output to its paid subscribers and providing an excellent opportunity to target its users. 16 | 17 | Assumptions 18 | 19 | * Quality output prompts are very hard, so the target audience still prefers to buy existing assets that meet their requirement 20 | * Thanks to the low cost of production, one could offer the most extensive catalog addressing very niche demands 21 | 22 | Some additional features 23 | 24 | * Require prompt submission along with the output asset to check for IP or artist-style infringement 25 | * Use ZKP or simple hash of prompt to validate that the marketplace is running infringement checks without revealing prompts 26 | * Unlike a prompt marketplace, the visual asset is the product being sold, so tailor the experience for assets browsing and purchase flow 27 | * Beyond simple stock image T\&C, enable more advanced licensing that allows creators to incorporate the assets into their IP and participate in the upside (narrative universe, animation, NFT projects, gaming) -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/capital-formation-platform.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Capital Formation Platform 3 | excerpt: Better governance and incentive alignment 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: >- 9 | The document discusses the lessons learned from the 2021 NFT mania, 10 | highlighting the importance of oversight, clawback options, and a better 11 | funding mechanism to prevent overpromised and underdelivered projects. It 12 | suggests implementing a system where the community can approve the gradual 13 | release of funds based on project milestones achieved. 14 | robots: index 15 | next: 16 | description: '' 17 | pages: 18 | - type: basic 19 | slug: external-hooks 20 | title: External Hooks 21 | --- 22 | One lesson learned from the 2021 NFT mania is that too much capital can be crippling to less experienced teams. If you add zero oversight from the community and no clawback options for overfunded NFT projects, it is easy to see how it can become a recipe for disaster - aka overpromised and underdelivered. 23 | 24 | We are eager to see the NFT space evolve into more mature stages, and to achieve that, we need a better funding mechanism. Instead of distributing the entirety of the funding raised, the platform should give the participating community a way to approve (e.g., via a “board of overseers”) the gradual release of funds based on milestones achieved. If a project consistently misses deliverables or the quality is far below what is promised, the platform should be able to return the funds to users. 25 | 26 | Some additional features 27 | 28 | * Projects could also grant specific commercial licenses of their finished IP 29 | * KYC process to enable participants to join the project's royalty pool 30 | * Different tiers of contribution allowing and rewards, Kickstarter style 31 | * Ways for project to share updates and keep backers posted in less intrusive (spammy) ways -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/content-management-system-and-collaboration-hub.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content Management System and Collaboration Hub 3 | excerpt: WordPress/GitHub meets Fandom 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | GitHub revolutionized content management for software projects. WordPress did the same for web content. We believe a new CMS powered by Story Protocol can become the default solution for creative IP. 14 | 15 | Story Protocol provides all of the building blocks that capture the atomic components of each IP on-chain, with a comprehensive suite of extensible modules to address the needs of a growing IP franchise. However, Story Protocol is the underlying Git equivalent infrastructure, thus we need a platform like GitHub to become the default go-to for IP owners to register and publish their work, set contribution terms, or create commercial licenses for their IP. 16 | 17 | Ideally, this platform can handle distributed contributions from collaborators and community members like GitHub, including version control, while still providing the project owner the final control of what to accept and merge into the canon. 18 | 19 | Some additional features: 20 | 21 | * Fandom-style wiki pages to outline project details, characters, locations, art style 22 | * Licensing page for both commercial and non-commercial use cases, including co-creation 23 | * Request for contribution functionality so project owners can easily post what type of help they are looking for 24 | * Discussion section to allow community members and fans a way to connect, discuss, and propose -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/content-remixing-mobile-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content Remixing Mobile App 3 | excerpt: Instagram filter before the social part 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Instagram didn’t set out to compete with existing giant social networks from day one. Instead, they offered one hyper-focused feature and ensured it was the best in the market - the photo filter app. This differentiating value prop drove millions of users to download it within a year. However, differently from the earlier-mover competitor Hipstamatic, the first popular photo filtering app, Instagram presented two key additions: 14 | 15 | * It provided an easy way to export the asset to Facebook and other apps 16 | * It had a light social component in their app from day one (but never making it their main value prop) 17 | 18 | Story Protocol is particularly suited for large-scale remixing with attribution, providing rich IP graphs for creators to see all remixes and derivatives of their content in one place. We envision a consumer-friendly, simple mobile app allowing anyone to upload original content (video or digital art) with authorized remix/derivative licensing. It can provide creator tools and easy export functionality to existing social platforms. The core differentiation for this app is the rich IP graph. Creators can check the entire remix graph for all of their original content, similar to how one can easily check all nested comments under a post. Like a Twitter comment or quote link, no matter which downstream asset link gets shared, a user can always browse back to the original content that kickstarted it all. -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/defi-applications-and-rwa.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: DeFi Applications and RWA 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Each IP Asset will be registered as an NFT (ERC-721) on Story Protocol, and the same goes for licenses issued. The protocol was designed for maximum composability so each IP organization (franchise) can access the broader web3 ecosystem, including all the DeFi services already servicing NFT projects. 14 | 15 | Many possible services can be built on these assets, such as collateralized loans backed by NFT collectibles or licenses with intrinsic value (upfront payment) or royalty payment expectations, fractionalized ownership of super limited NFT collectibles from popular IP franchises, or crowdfunding/capital formation solutions. One attractive characteristic of IPs registered on Story is their duality as web3 native and real-world assets. -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/external-hooks.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: External Hooks 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Story protocol uses hooks to integrate external services into workflows. Async hooks can call external oracle service providers to get off-chain data. Some examples include KYC services or IP Infringement detection services. 14 | 15 | * KYC service like user geographic location identification or age verification 16 | * External service to verify user’s social network profile 17 | * Service to detect duplicated IP registration or detection of well-known IP registration -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Ideas for Builders 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Below are some useful applications that can be built in the ecosystem, and you are welcome to share your bold ideas and applications built with Story Protocol. If you're a builder, check out our [builder program](https://www.storyprotocol.xyz/builder-program). 14 | 15 | * **Check out our[Ideas](https://github.com/storyprotocol/ideas) repo!** 16 | * [Content Remixing Mobile App](doc:content-remixing-mobile-app) 17 | * [Content Management System and Collaboration Hub](doc:content-management-system-and-collaboration-hub) 18 | * [IP Licensing Platform](doc:ip-licensing-platform) 19 | * [AI-generated Assets Marketplace](doc:ai-generated-assets-marketplace) 20 | * [DeFi Applications and RWA](doc:defi-applications-and-rwa) 21 | * [Capital Formation Platform](doc:capital-formation-platform) 22 | * [External Hooks](doc:external-hooks) 23 | 24 | # -------------------------------------------------------------------------------- /docs/Archive/introduction/ideas-for-interested-builders/ip-licensing-platform.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IP Licensing Platform 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The traditional way of licensing IPs requires a tedious multi-month legal process and 1:1 negotiations only justified for outcomes in the high five figures or multi-million dollars. That limits access to many smaller or upcoming IPs that could otherwise benefit from opening their world to other collaborators or co-creators. 14 | 15 | With the advent of new ways to bootstrap community-centric or outright community-owned IPs, we see untapped opportunities to reduce friction in the licensing process. We envision an IP platform or marketplace where any project, storytelling universe, game, animation, or PFP can provide licensing opportunities that are internet native. With this platform, projects can easily present promising licensing deals to their community holders or set up commercial terms that collaborators can easily acquire with a few clicks (one can even set pre-determined conditions to qualify). 16 | 17 | The motivation to acquire a license could vary, below are some examples: 18 | 19 | * Existing brands or consumer product companies wanting to partner for brand exposure 20 | * Production companies interested in adapting an IP that is showing promise 21 | * Creators interested in finding early-stage IPs they can help co-create and grow 22 | * NFT projects looking to acquire IPs they can incorporate into their project with clear commercial terms and rights -------------------------------------------------------------------------------- /docs/Archive/introduction/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | excerpt: Explore the Story Ecosystem 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Story provides a versatile framework to manage the entire lifecycle of IP development, enabling features like provenance, contribution tracking, frictionless licensing, and revenue sharing. The protocol has been designed with modularity and extensibility in mind, allowing developers to build a diverse array of applications on top of it, including generative AI, fandom platforms, gaming, franchise management, DeFi, social media, and DAO. 14 | 15 | The [Story Explorer](https://explorer.story.foundation/) provides a comprehensive view of transactions on-chain and is there to assist in debugging during development. 16 | 17 | Additionally, we are sharing some applications that can be built under the ecosystem, and you are welcome to share your bold ideas and applications built with Story Protocol. 18 | 19 | * [Content Remixing Mobile App](doc:content-remixing-mobile-app) 20 | * [Content Management System and Collaboration Hub](doc:content-management-system-and-collaboration-hub) 21 | * [IP Licensing Platform](doc:ip-licensing-platform) 22 | * [AI-generated Assets Marketplace](doc:ai-generated-assets-marketplace) 23 | * [DeFi Applications and RWA](doc:defi-applications-and-rwa) 24 | * [Capital Formation Platform](doc:capital-formation-platform) 25 | * [External Hooks](doc:external-hooks) 26 | 27 | # Join Story Academy 28 | 29 | The Story Academy is a builder program designed to support, mentor, and accelerate promising entrepreneurs and innovative projects building on Story. We will provide technical expertise, marketing know-how, grants, and investor network introductions matching the level of ambition and execution capability of each admitted project. If you're a visionary builder already working on or planning to build a project on top of Story, we want to talk to you. 30 | 31 | [Learn more about Story Academy](https://www.story.foundation/academy) -------------------------------------------------------------------------------- /docs/Archive/introduction/suggests-services-for-common-use-cases.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: External Services for Common Use-Cases 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | As you build applications in the world of IP, you'll find you might uncover use-cases that require additional corollary services. Our core protocol is purposefully kept generic and focused on the core mechanics of intellectual property. If you require services such as duplicate asset detection, relative rarity scoring, NSFW detection, and the like, we suggest you integrate with dedicated services that special in this. Below is an ecosystem services list categorized by function. 14 | 15 | ### Image scoring: infringement, rarity and NSFW tagging 16 | 17 | * [Yakoa](https://yakoa.io/): IP protection for the blockchain. Use Yakoa AI to protect intellectual property from duplication, manipulation, and scams. 18 | * [Pastel Network](https://pastel.network/): Pastel infrastructure enables existing layer-1 blockchains, decentralized applications, or third-party enterprises to protect creators and collectors. From digital collectibles & media to documents & applications, users and developers are able to certify asset rareness and truly store data forever. 19 | * [Doppel](https://doppel.com) : Doppel offers several services, such as detecting phishing and brand cyber attacks, phishing, counterfeiting and more. Leading cybersecurity teams use Doppel to protect against threats on emerging and traditional digital channels. 20 | 21 | ### Confidentiality 22 | 23 | * [Lit Protocol](https://litprotocol.com): Lit is a key management network for decentralized signing and encryption. Create apps and wallets that use secrets without single points of failure. -------------------------------------------------------------------------------- /docs/Archive/ipaccount/_order.yaml: -------------------------------------------------------------------------------- 1 | - open-data-access 2 | -------------------------------------------------------------------------------- /docs/Archive/ipaccount/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IP Account 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | IP Account is a critical component that adheres to the EIP-6551 standard. As token-bound accounts, IP Accounts are uniquely deployed at deterministic addresses via the official 6551 account registry. These accounts, essentially smart contracts, are equipped to store comprehensive IP-related data, including metadata and ownership details of various NFTs such as License NFTs or Royalty NFTs. Serving as a centralized hub, IP Account streamlines the management and organization of intellectual property (IP) data. 16 | 17 | The operational flexibility of IP Account is one of its key strengths. It can actively engage with various modules by initiating calls akin to a conventional transaction sender. This capability enables fluid and efficient manipulation of the state and data associated with IP. Importantly, any changes to the IP's state or data are meticulously recorded and stored within the IP Account, ensuring data integrity and traceability. 18 | 19 | A fundamental aspect of IP Account in the **Programmable IP** framework is its role in data stewardship and module interaction. As a foundational component, IP Account not only stores IP-related data but also facilitates the utilization of this data by various modules. These modules interact with and contribute to the IP Account, creating and storing data. This symbiotic relationship enhances the functionality and efficiency of the IP management process. 20 | 21 | One of the innovative features of IP Account is its approach to data sharing and standardization. It establishes a standardized method for storing and sharing data among modules based on namespaces. Each module is assigned its own namespace within the IP Account, wherein it has the autonomy to write data. However, in fostering a collaborative and transparent environment, each module is granted the ability to freely read data from the namespaces of other modules. This structure not only promotes data sharing but also maintains data segregation and security, ensuring that each module operates within its designated purview while benefiting from the collective intelligence of the system. 22 | -------------------------------------------------------------------------------- /docs/Archive/licensing-and-royalties.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Licensing and Royalties 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## Licensing and Royalties Call Flow 14 | 15 | ![](https://files.readme.io/20dce78-image.png) 16 | 17 | Whenever a user wants to mint a commercial license or links to parents using a commercial license, then the licensing module will call the royalty module, which will perform checks and redirect the call to the appropriate royalty policy contract - which for the beta version is always the `RoyaltyPolicyLAP.sol`. As more royalty policies are added in the future new options will be available. 18 | 19 | In the call flows above there is a need to pass in the variable `bytes[] royaltyContext`. Each royalty policy will decode this variable in its custom way - in the case of the royalty policy LAP - the decoding happens in the form of the struct below: 20 | 21 | ```sol 22 | struct InitParams { 23 | address[] targetAncestors; // the expected ancestors addresses of an ipId 24 | uint32[] targetRoyaltyAmount; // the expected royalties of each of the ancestors for a given ipId 25 | address[] parentAncestors1; // addresses of the ancestors of the first parent 26 | address[] parentAncestors2; // addresses of the the ancestors of the second parent 27 | uint32[] parentAncestorsRoyalties1; // the royalties of each of the first parent ancestors 28 | uint32[] parentAncestorsRoyalties2; // the royalties of each of the second parent ancestors 29 | } 30 | ``` 31 | 32 | Let's give an example - in the IP graph below let's imagine IP Asset 0 is linking to parents IPAs 1 and 2: 33 | 34 | ![](https://files.readme.io/3e07223-image.png) 35 | 36 | In the example mentioned the struct `InitParams` then would look like this: 37 | 38 | * `targetAncestors = [0x1,0x3,0x7,0x8,0x4,0x9,0x10,0x2,0x5,0x11,0x12,0x6,0x13,0x14] ` | When linking IPA 0 to its new parents IPAs 1 and 2 39 | 40 | if we assume (for example) that the royalties demanded by each IP are equal to 5% if the IP Asset number has 2 digits and 1% if lower we get: 41 | 42 | * `targetRoyaltyAmount= [10,10,10,10,10,10,50,10,10,50,50,10,50,50]` \| `targetRoyaltyAmount` is a mirror array of `targetAncestors` and shows how many RNFTs each ancestor address demands from IP Asset 0 43 | * `parentAncestors1 = [0x3,0x7,0x8,0x4,0x9,0x10]` 44 | * `parentAncestorsRoyalties1 = [10,10,10,10,10,50]` 45 | * `parentAncestors2=[0x5,0x11,0x12,0x6,0x13,0x14]` 46 | * `parentAncestorsRoyalties2 =[10,50,50,10,50,50]` 47 | 48 | The struct `InitParams` is prepared under the hood by the SDK. More information in [SDK documentation](doc:sdk-overview) 49 | -------------------------------------------------------------------------------- /docs/Archive/periphery-contracts/_order.yaml: -------------------------------------------------------------------------------- 1 | - default-ip-collection 2 | - ip-creation 3 | - register-ip 4 | - mint-and-register-ip 5 | - register-derivative-ip 6 | - mint-and-register-derivative-ip 7 | -------------------------------------------------------------------------------- /docs/Archive/periphery-contracts/default-ip-collection.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Default IP Collection 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | For version `v0.1-beta`, Story Protocol makes the assumption that every prospective IP asset MUST first exist as an ERC-721 before it can be registered onto the protocol. For this reason, Story Protocol has a global, publicly mint-able ERC-721 IP collection deployed on every supported chain that it recommends new users to represent their IP on, known as the default ERC721 SP NFT. This IP collection treats every NFT as a completely different entity with entirely customizable metadata, along with native support for IP data attribution once registered into the protocol. As such, for users who do not yet have an NFT to represent the IP they wish to enroll, we highly recommend simply utilizing the default ERC721 SP NFT address, and registering your IP either with the [Mint And Register IP](doc:mint-and-register-ip) or [Mint And Register Derivative IP](doc:mint-and-register-derivative-ip) functions. 14 | -------------------------------------------------------------------------------- /docs/Archive/periphery-contracts/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Story Protocol Gateway 3 | excerpt: >- 4 | The Story Protocol Gateway serves as the main entrypoint for simplified IP 5 | interaction. For most simpler use-cases involving IP registration and 6 | management, we recommend calling this contract. 7 | deprecated: false 8 | hidden: true 9 | metadata: 10 | title: '' 11 | description: '' 12 | robots: index 13 | next: 14 | description: '' 15 | --- 16 | The Story Protocol Protocol Gateway ("SPG") is the main periphery contract smart contract developers should interact with if building simpler abstractions on top of the core protocol. It provides simple tooling for IP collection management, IP registration, IP licensing, and access control management. 17 | 18 | The SPG is deployed on Sepolia at: `0x5a12E3F0DAeF58d493fa4c5a462e8cEB7b15cF28` 19 | 20 | Listed below are the core functions provided by the SPG, with a detailed explanation of how to craft these inputs to build the programmable IP of your dreams! 21 | 22 | * [Default IP Collection](doc:default-ip-collection) 23 | * [Create IP Collection](doc:ip-creation) 24 | * [Register IP](doc:register-ip) 25 | * [Mint And Register IP](doc:mint-and-register-ip) 26 | * [Register Derivative IP](doc:register-derivative-ip) 27 | * [Mint And Register Derivative IP](doc:mint-and-register-derivative-ip) 28 | -------------------------------------------------------------------------------- /docs/Archive/python-sdk/_order.yaml: -------------------------------------------------------------------------------- 1 | - python-sdk-setup 2 | - register-an-nft-as-an-ip-asset-python 3 | - register-pil-terms-python 4 | - attach-terms-to-an-ip-asset-python 5 | - mint-a-license-python 6 | - register-an-ipa-as-a-derivative-python 7 | - collect-claim-royalty-python 8 | - spg-functions-python 9 | -------------------------------------------------------------------------------- /docs/Archive/python-sdk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🐍 Python SDK 3 | excerpt: For Python developers who want to build with Story. 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The best way to get started is to get your hands dirty and start building. 14 | 15 | > 🏁 Python Tutorial 16 | > 17 | > Extremely easy & straightforward examples for all of the following tutorials, combined into 1 script. 18 | > 19 | > * Try the script yourself and read the code [COMING SOON](https://github.com/storyprotocol/python-sdk/). 20 | 21 | In the following series of tutorials, you will learn how to build IP applications with Story SDK and the concepts we mentioned in the [Architecture Overview](doc:overview) of Story Protocol. 22 | 23 | Along the way, you will learn how to: 24 | 25 | * [Python SDK Setup](doc:python-sdk-setup) 26 | * [Register an NFT as an IP Asset](doc:register-an-nft-as-an-ip-asset-python) 27 | * [Register PIL Terms](doc:register-pil-terms-python) 28 | * [Attach License Terms to an IP Asset](doc:attach-license-terms-to-an-ip-asset-python) 29 | * [Mint a License Token](doc:mint-a-license-token-python) 30 | * [Register an IPA as a Derivative](doc:register-an-ipa-as-a-derivative-python) 31 | * [Collect & Claim Royalty](doc:collect-claim-royalty-python) 32 | 33 |
34 | 35 | * -------------------------------------------------------------------------------- /docs/Archive/python-sdk/mint-a-license-python.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mint a License Token 3 | excerpt: Learn how to mint a License Token from an IP Asset in Python. 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | This section demonstrates how to mint a License Token for an IPA. You can only mint a License Token for an IPA if it has License Terms attached to it. A License Token is minted as an ERC721 token and contains the necessary licensing details. 14 | 15 | > 💰 Paid Licenses 16 | > 17 | > Note that some IP Assets may have license terms attached that require the user minting the license to pay a `mintingFee`. You can see an example of that soon. 18 | 19 | > 📘 Max Number of Licenses 20 | > 21 | > If you're curious about setting the maximum number of licesnes that can be created from your IP, check out the [License Config / Hook](doc:license-config-hook) section of our documentation. 22 | 23 | ## Prerequisites 24 | 25 | * [Setup](doc:python-sdk-setup) the client object. 26 | * An IPA that has License Terms added. Learn how to add License Terms to an IPA [here](doc:attach-license-terms-to-an-ip-asset-python). 27 | 28 | # Mint License 29 | 30 | To mint a License Token, we will need the: 31 | 32 | * `licensor_ip_id` - the ipId of the IPA we are minting a License Token from 33 | * `license_template` - the address of the license template (which is just the address of the PILTemplate) 34 | * `license_terms_id` - the id of the License Terms (ex. "1" for Non-Commercial Social Remixing) 35 | * `amount` - # of License Tokens to be minted (usually 1) 36 | * `receiver` - wallet receiving the License Token, usually the wallet address that is executing the transaction 37 | 38 | ```python Python 39 | response = story_client.License.mintLicenseTokens( 40 | licensor_ip_id="0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba", 41 | license_template="0x58E2c909D557Cd23EF90D14f8fd21667A5Ae7a93", 42 | license_terms_id=1, 43 | amount=1, 44 | receiver="0x14dC79964da2C08b23698B3D3cc7Ca32193d9955" 45 | ) 46 | 47 | print(f"License Token minted at transaction hash {response['txHash']} License ID: {response['licenseTokenIds']}") 48 | ``` 49 | ```python Request Type 50 | mint_license_tokens_request = { 51 | 'licensor_ip_id': str, 52 | 'license_template': str, 53 | 'license_terms_id': int, 54 | 'amount': int, 55 | 'receiver': str, 56 | 'max_minting_fee': int, # optional 57 | 'max_revenue_share': int, # optional 58 | 'tx_options': dict # optional 59 | } 60 | ``` 61 | ```python Response Type 62 | mint_license_tokens_response = { 63 | 'txHash': str, 64 | 'licenseTokenIds': list 65 | } 66 | ``` -------------------------------------------------------------------------------- /docs/Archive/python-sdk/python-sdk-setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Python SDK Setup 3 | excerpt: "" 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: "" 8 | description: "" 9 | robots: index 10 | next: 11 | description: "" 12 | --- 13 | 14 | # Prerequisite 15 | 16 | For running the tutorial for developers, we require Python 10 or later version and pip 24 to be installed in your environment. To install python and pip, we recommend you go to the [Python official website](https://www.python.org/) and download an appropriate version. 17 | 18 | If you want to upgrade python to 10 or higher version, we recommend you to use [pyenv](https://github.com/pyenv/pyenv). If you want to upgrade pip to the latest version, you can run the command `pip install --upgrade pip`. 19 | 20 | # Create a Python Project 21 | 22 | Create a folder to host the node project called `story-python-example`: 23 | 24 | ```Text Shell 25 | mkdir story-python-example 26 | ``` 27 | 28 | Go into the folder: 29 | 30 | ```Text Shell 31 | cd story-python-example/ 32 | ``` 33 | 34 | # Install the Dependencies 35 | 36 | In the current folder `story-python-example`, install the Story Protocol Python SDK package, as well as `web3` ([https://pypi.org/project/web3/](https://pypi.org/project/web3/)) to access the DeFi wallet accounts. 37 | 38 | ```python pip 39 | pip install story_protocol_python_sdk web3 40 | ``` 41 | 42 | # Initiate SDK Client 43 | 44 | Next we can initiate the SDK Client by first setting up our account and then the client itself. 45 | 46 | ## Set Up Private Key Account 47 | 48 | There are two ways to set up an account. The first is to use a private key locally: 49 | 50 | > :information_source: Make sure to have WALLET_PRIVATE_KEY set up in your .env file. 51 | > 52 | > :information_source: Make sure to have RPC_PROVIDER_URL for your desired chain set up in your .env file. You can use a public default one (`RPC_PROVIDER_URL=https://aeneid.storyrpc.io`) or check out other RPCs [here](https://docs.story.foundation/docs/story-network#explorers). 53 | 54 | ```python main.py 55 | import os 56 | from dotenv import load_dotenv 57 | from web3 import Web3 58 | 59 | from story_protocol_python_sdk import StoryClient 60 | 61 | load_dotenv() 62 | private_key = os.getenv('WALLET_PRIVATE_KEY') 63 | rpc_url = os.getenv('RPC_PROVIDER_URL') 64 | 65 | # Initialize Web3 66 | web3 = Web3(Web3.HTTPProvider(rpc_url)) 67 | 68 | # Set up the account with the private key 69 | account = web3.eth.account.from_key(private_key) 70 | 71 | # Create StoryClient instance 72 | story_client = StoryClient(web3, account, 1516) 73 | ``` 74 | -------------------------------------------------------------------------------- /docs/Archive/python-sdk/register-an-nft-as-an-ip-asset-python.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Register an IP Asset 3 | excerpt: Learn how to Register an NFT as an IP Asset in Python. 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | This section demonstrates how to register an IP Asset using the Python SDK. There are generally two methods of IP registration: 14 | 15 | 1. Register an existing NFT as an IP Asset 16 | 2. Create an NFT and register it as an IP Asset in one transaction (**NOT IMPLEMENTED YET**) 17 | 18 | ## Prerequisites 19 | 20 | * [Setup](doc:python-sdk-setup) the client object. 21 | 22 | > 📘 Default License Terms 23 | > 24 | > Note that every single IP Asset registered on Story automatically has [Non-Commercial Social Remixing License Terms](https://docs.story.foundation/docs/pil-flavors#flavor-1-non-commercial-social-remixing) attached to it. 25 | > 26 | > If it's a root IP Asset (meaning it has no more parents), you can attach more License Terms to it later. Please see [Attach Terms to an IPA](doc:attach-terms-to-an-ip-asset-python) for more info. 27 | 28 | # Register an NFT as an IP Asset 29 | 30 | You can register your NFT as an IP Asset by simply calling `story_client.IPAsset.register()` and passing in the token's contract address and token ID, like so: 31 | 32 | > 📘 NFT Metadata 33 | > 34 | > Note that this function will also set the underlying NFT's `tokenUri` to whatever is passed under `ipMetadata.nftMetadataURI`. 35 | 36 | ```python Python 37 | response = story_client.IPAsset.register( 38 | nft_contract="0xd516482bef63Ff19Ed40E4C6C2e626ccE04e19ED", # your NFT contract address 39 | token_id=12, # your NFT token ID 40 | ip_metadata={ 41 | 'ipMetadataURI': "test-uri", #uri of IP metadata 42 | 'ipMetadataHash': web3.to_hex(web3.keccak(text="test-metadata-hash")), #hash of IP metadata 43 | 'nftMetadataURI': "test-uri", #uri of NFT metadata 44 | 'nftMetadataHash': web3.to_hex(web3.keccak(text="test-nft-metadata-hash")) #hash of NFT metadata 45 | } 46 | ) 47 | 48 | print(f"Root IPA created at transaction hash {response['txHash']}") 49 | print(f"IPA ID: {response['ipId']}") 50 | ``` 51 | ```python Request Type 52 | register_request = { 53 | 'nft_contract': str, 54 | 'token_id': int, 55 | 'ip_metadata': dict, # optional 56 | 'deadline': int, # optional 57 | 'tx_options': dict # optional 58 | } 59 | ``` 60 | ```python Response Type 61 | register_response = { 62 | 'txHash': str, 63 | 'ipId': str 64 | } 65 | ``` 66 | 67 | After we run the above code, the console output will look like: 68 | 69 | ```text Console Output 70 | Root IPA created at transaction hash 0xa3e1caa7c2124b1550d459abc739291cb1be77ac73b99c097707878ac4ef57ae, 71 | IPA ID: 0x4c1f8c1035a8cE379dd4ed666758Fb29696CF721 72 | ``` -------------------------------------------------------------------------------- /docs/Archive/react-sdk/_order.yaml: -------------------------------------------------------------------------------- 1 | - react-sdk-setup 2 | - register-an-nft-as-an-ip-asset-react 3 | - register-pil-terms-react 4 | - attach-license-terms-to-an-ip-asset-react 5 | - mint-a-license-token-react 6 | - register-an-ipa-as-a-derivative-react 7 | - collect-claim-royalty-react 8 | - spg-functions-react 9 | -------------------------------------------------------------------------------- /docs/Archive/react-sdk/attach-license-terms-to-an-ip-asset-react.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Attach Terms to an IP Asset in React 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | This section demonstrates how to add License Terms to an IPA. By attaching terms, an IPA becomes eligible for licensing creation. Users who then wish to creative derivatives of the IP may then mint licenses, which can be burned to enroll their IPs as derivative IPAs of the original work. 14 | 15 | ## Prerequisites 16 | 17 | * [React SDK Setup](doc:react-sdk-setup) 18 | * An existing IPA (`ipId`). Learn how to register an IP Asset [here](doc:register-an-nft-as-an-ip-asset-react). 19 | * An existing License Terms (`termsId`). Learn how to create PIL Terms [here](doc:register-pil-terms-react). 20 | 21 | # Attach License Terms 22 | 23 | Below is a code example to add License Terms to our IP Asset: 24 | 25 | ```jsx AttachTerms.tsx 26 | import { useLicense } from "@story-protocol/react-sdk"; 27 | 28 | export default async function AttachTerms() { 29 | const { attachLicenseTerms } = useLicense(); 30 | 31 | const response = await attachLicenseTerms({ 32 | licenseTermsId: "1", 33 | ipId: "0x4c1f8c1035a8cE379dd4ed666758Fb29696CF721", 34 | txOptions: { waitForTransaction: true } 35 | }); 36 | 37 | if (response.success) { 38 | console.log(`Attached License Terms to IPA at transaction hash ${response.txHash}.`) 39 | } else { 40 | console.log(`License Terms already attached to this IPA.`) 41 | } 42 | 43 | return ( 44 | {/* */} 45 | ) 46 | } 47 | ``` 48 | ```typescript Request Type 49 | export type AttachLicenseTermsRequest = { 50 | ipId: Address; 51 | licenseTermsId: string | number | bigint; 52 | licenseTemplate?: Address; 53 | txOptions?: TxOptions; 54 | }; 55 | ``` 56 | ```typescript Response Type 57 | export type AttachLicenseTermsResponse = { 58 | txHash?: string; 59 | encodedTxData?: EncodedTxData; 60 | success?: boolean; 61 | }; 62 | ``` 63 | 64 | *Note:[Non-Commercial Social Remixing](https://docs.story.foundation/docs/pil-flavors#flavor-1-non-commercial-social-remixing) License Terms are attached **by default** to every IP Asset.* 65 | -------------------------------------------------------------------------------- /docs/Archive/react-sdk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ⚛️ React SDK 3 | excerpt: For React developers who want to build with Story. 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The best way to get started is to get your hands dirty and start building. 14 | 15 | > 🏁 React Tutorial 16 | > 17 | > Try our open-source Developer Sandbox for an interactive tutorial that shows you the React SDK being used in a Next.js project. 18 | 19 | In the following series of tutorials, you will learn how to build IP applications with Story SDK and the concepts we mentioned in the [Architecture Overview](doc:overview) of Story Protocol. 20 | 21 | Along the way, you will learn how to: 22 | 23 | * [React SDK Setup](doc:react-sdk-setup) 24 | * [Register an IP Asset in React](doc:register-an-nft-as-an-ip-asset-react) 25 | * [Register PIL Terms in React](doc:register-pil-terms-react) 26 | * [Attach Terms to an IP Asset in React](doc:attach-license-terms-to-an-ip-asset-react) 27 | * [Mint a License Token in React](doc:mint-a-license-token-react) 28 | * [Register an IPA as a Derivative in React](doc:register-an-ipa-as-a-derivative-react) 29 | * [Collect & Claim Royalty in React](doc:collect-claim-royalty-react) 30 | -------------------------------------------------------------------------------- /docs/Archive/react-sdk/mint-a-license-token-react.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mint a License Token in React 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | This section demonstrates how to mint a License Token for an IPA. You can only mint a License Token for an IPA if it has License Terms attached to it. A License Token is minted as an ERC721 token and contains the necessary licensing details. 14 | 15 | > 💰 Paid Licenses 16 | > 17 | > Note that some IP Assets may have license terms attached that require the user minting the license to pay a `mintingFee`. You can see an example of that in the TypeScript Tutorial. 18 | 19 | > 📘 Max Number of Licenses 20 | > 21 | > If you're curious about setting the maximum number of licesnes that can be created from your IP, check out the [License Config / Hook](doc:license-config-hook) section of our documentation. 22 | 23 | ## Prerequisites 24 | 25 | * [React SDK Setup](doc:react-sdk-setup) 26 | * An IPA that has License Terms added. Learn how to add License Terms to an IPA [here](doc:attach-terms-to-an-ip-asset-react). 27 | 28 | # Mint License 29 | 30 | To mint a License Token, we will need the: 31 | 32 | * `licenseTermsId` - the id of the License Terms (ex. "1" for Non-Commercial Social Remixing) 33 | * `licensorIpId` - the ipId of the IPA we are minting a License Token from 34 | * `receiver` - wallet receiving the License Token, usually the wallet address that is executing the transaction 35 | * `amount` - # of License Tokens to be minted (usually 1, unless the minter decides to mint a batch and distribute it in another way later on) 36 | 37 | ```jsx MintLicense.tsx 38 | import { useLicense } from "@story-protocol/react-sdk"; 39 | 40 | export default async function MintLicense() { 41 | const { mintLicenseTokens } = useLicense(); 42 | 43 | const response = await mintLicenseTokens({ 44 | licenseTermsId: "1", 45 | licensorIpId: "0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba", 46 | receiver: "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955", 47 | amount: 1, 48 | txOptions: { waitForTransaction: true } 49 | }); 50 | 51 | console.log(`License Token minted at transaction hash ${response.txHash}, License IDs: ${response.licenseTokenIds}`) 52 | 53 | return ( 54 | {/* */} 55 | ) 56 | } 57 | ``` 58 | ```typescript Request Type 59 | export type MintLicenseTokensRequest = { 60 | licensorIpId: Address; 61 | licenseTermsId: string | number | bigint; 62 | licenseTemplate?: Address; 63 | amount?: number | string | bigint; 64 | receiver?: Address; 65 | txOptions?: TxOptions; 66 | }; 67 | ``` 68 | ```typescript Response Type 69 | export type MintLicenseTokensResponse = { 70 | licenseTokenIds?: bigint[]; 71 | txHash?: string; 72 | encodedTxData?: EncodedTxData; 73 | }; 74 | ``` 75 | 76 | Setting `waitForTransaction: true` in the transaction options will return the `licenseTokenId` of the newly minted license(s). 77 | -------------------------------------------------------------------------------- /docs/Archive/react-sdk/react-sdk-setup/_order.yaml: -------------------------------------------------------------------------------- 1 | - wagmi-dynamic-setup 2 | - wagmi-rainbowkit-setup 3 | - wagmi-walletconnect-setup 4 | -------------------------------------------------------------------------------- /docs/Archive/react-sdk/react-sdk-setup/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: React SDK Setup 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | # Prerequisite 14 | 15 | For running the tutorial for developers, we require node version 20 or later version and npm version 8 to be installed in your environment. To install node and npm, we recommend you go to the [Node.js official website](https://nodejs.org) and download the latest LTS (Long Term Support) version. 16 | 17 | If you want to upgrade node to 20 or higher version, we recommend you to use [nvm](https://github.com/nvm-sh/nvm) (Node Version Manager). If you want to upgrade npm to the latest version, you can run the command `npm install -g nvm`. 18 | 19 | # Create a Next.js Project 20 | 21 | Create a folder called `story-react-example`. 22 | 23 | Then follow the short [Next.js "Getting Started: Installation"](https://nextjs.org/docs/getting-started/installation#automatic-installation) guide to set up a boilerplate Next.js project. 24 | 25 | # Initiate SDK Provider 26 | 27 | You can set up the `StoryProvider`, which is needed for the React SDK, any way you like. However we have provided three popular examples using [Wagmi](https://wagmi.sh/) and either [Dynamic](https://www.dynamic.xyz/), [RainbowKit](https://www.rainbowkit.com/) or [WalletConnect](https://walletconnect.com/) based on your preference. 28 | 29 | ## [Wagmi + Dynamic Setup](doc:wagmi-dynamic-setup) 30 | 31 | ## [Wagmi + RainbowKit Setup](doc:wagmi-rainbowkit-setup) 32 | 33 | ## [Wagmi + WalletConnect Setup](doc:wagmi-walletconnect-setup) 34 | -------------------------------------------------------------------------------- /docs/Developers/_order.yaml: -------------------------------------------------------------------------------- 1 | - dev-overview 2 | - tutorials 3 | - typescript-sdk 4 | - react-guide 5 | - get-started-with-the-smart-contracts 6 | - deployed-smart-contracts 7 | - releases-page 8 | - version-matrix 9 | -------------------------------------------------------------------------------- /docs/Developers/dev-overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 👋 Dev Overview 3 | excerpt: For developers who want to build on our protocol. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | If you're a developer, here is everything you need: 14 | 15 | > 📘 Can't find something? 16 | > 17 | > Ask the writer of our docs on Telegram for help: @jacobmtucker 18 | 19 | 20 | 21 | View all testnet block & transaction data on Story. 22 | 23 | 24 | 25 | View testnet transaction data specifically related to IP interactions like registering, licensing, etc. 26 | 27 | 28 | 29 | Start building on Story quickly. 30 | 31 | 32 | 33 | # SDK 34 | 35 | Check out the following resources to learn the SDK: 36 | 37 | * [SDK Reference](doc:sdk-overview) - view the entire SDK reference with detailed **explanations and examples** for each function ***(includes working code so you can jump right to coding)*** 38 | * [🛠️ TypeScript SDK Guide](doc:typescript-sdk) - a detailed, step-by-step walkthrough of how to set up and implement the most popular uses of the SDK (register IP, attach terms, register derivative, etc) ***(includes working code so you can jump right to coding)*** 39 | * [📘 Tutorials](doc:tutorials) - more specific, external topics/tutorials that may be popular questions, like "How do I register music on Story?", "How do I implement wallet-less onboarding with the SDK?", etc ***(includes working code so you can jump right to coding)*** 40 | 41 | # Smart Contracts 42 | 43 | Check out the following resources to learn the protocol: 44 | 45 | * [⚙️ Smart Contract Guide](doc:get-started-with-the-smart-contracts) - a walkthrough of how to set up and implement the most popular uses of the protocol ***(includes working code so you can jump right to coding)*** 46 | * [Deployed Smart Contracts](doc:deployed-smart-contracts) - all the deployed protocol addresses 47 | * [📘 Tutorials](doc:tutorials) - includes tutorials that cover more specific topics, like registering music, registering AI-generated images, etc ***(includes working code so you can jump right to coding)*** 48 | 49 | # API 50 | 51 | View our [API Reference](https://docs.story.foundation/reference/api-introduction). -------------------------------------------------------------------------------- /docs/Developers/get-started-with-the-smart-contracts/_order.yaml: -------------------------------------------------------------------------------- 1 | - sc-setup 2 | - sc-register-an-ip-asset 3 | - sc-register-license-terms 4 | - sc-attach-license-terms 5 | - sc-mint-license-token 6 | - sc-remix-ipa 7 | - sc-claiming-royalty 8 | - sc-example 9 | -------------------------------------------------------------------------------- /docs/Developers/react-guide/_order.yaml: -------------------------------------------------------------------------------- 1 | - react-setup 2 | - using-the-sdk-in-react 3 | -------------------------------------------------------------------------------- /docs/Developers/react-guide/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ⚛️ React Guide 3 | excerpt: Learn how to integrate the TypeScript SDK to work with React-based apps. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | robots: index 8 | --- 9 | The best way to get started is to get your hands dirty and start building. 10 | 11 | 12 | 13 | Clone our "developer sandbox" locally to see a working code example that shows setting up & calling TypeScript SDK functions in Next.js 14 | 15 | 16 | 17 | Play around with a live version of our developer sandbox to get an introductory walkthrough of our SDK. 18 | 19 | 20 | 21 | View the whole SDK reference, which shows examples and types for every function in our SDK. 22 | 23 | 24 | 25 | In the following series of tutorials, you will learn how to setup the TypeScript SDK in React. -------------------------------------------------------------------------------- /docs/Developers/react-guide/react-setup/_order.yaml: -------------------------------------------------------------------------------- 1 | - dynamic-setup 2 | - rainbowkit-setup 3 | - reown-setup 4 | - tomo-setup 5 | -------------------------------------------------------------------------------- /docs/Developers/react-guide/react-setup/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Setup 3 | excerpt: Learn how to setup the TypeScript SDK in React. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | robots: index 8 | --- 9 | We do not have a specific React SDK, however **we can use the TypeScript SDK in React** all the same, to delay signing & sending transactions to a JSON-RPC account like Metamask. 10 | 11 | We recommend using [wagmi](https://wagmi.sh/) as a Web3 provider and then installing a wallet provider like Dynamic or RainbowKit. We provide examples for all of the following: 12 | 13 | * [Dynamic Setup Tutorial](doc:dynamic-setup) 14 | * [RainbowKit Setup Tutorial](doc:rainbowkit-setup) 15 | * [WalletConnect Setup Tutorial](doc:walletconnect-setup) 16 | * [Tomo Setup Tutorial](doc:tomo-setup) -------------------------------------------------------------------------------- /docs/Developers/react-guide/using-the-sdk-in-react.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Using the SDK in React 3 | excerpt: Learn how to use the SDK in React once you have it set up. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | robots: index 8 | --- 9 | Once you have the SDK set up in React, you can use it just as we describe in the [🛠️ TypeScript SDK Guide](doc:typescript-sdk). 10 | 11 | 12 | 13 | A working code example that shows setting up & calling TypeScript SDK functions in Next.js 14 | 15 | 16 | 17 | View the whole SDK reference, which shows examples and types for every function in our SDK. 18 | 19 | 20 | 21 | ### :warning: Prerequisites 22 | 23 | 1. Complete the [SDK setup in React](doc:react-setup) 24 | 25 | ## Example 26 | 27 | Here is an example of calling an SDK function in React, which will look the same for any function you use: 28 | 29 | ```jsx TestComponent.tsx 30 | import { custom, toHex } from 'viem'; 31 | import { useWalletClient } from "wagmi"; 32 | import { StoryClient, StoryConfig } from "@story-protocol/core-sdk"; 33 | 34 | // example of how you would now use the fully setup sdk 35 | 36 | export default function TestComponent() { 37 | const { data: wallet } = useWalletClient(); 38 | 39 | async function setupStoryClient(): Promise { 40 | const config: StoryConfig = { 41 | wallet: wallet, 42 | transport: custom(wallet!.transport), 43 | chainId: "aeneid", 44 | }; 45 | const client = StoryClient.newClient(config); 46 | return client; 47 | } 48 | 49 | async function registerIp() { 50 | const client = await setupStoryClient(); 51 | const response = await client.ipAsset.mintAndRegisterIp({ 52 | spgNftContract: '0xc32A8a0FF3beDDDa58393d022aF433e78739FAbc', 53 | ipMetadata: { 54 | ipMetadataURI: "test-metadata-uri", 55 | ipMetadataHash: toHex("test-metadata-hash", { size: 32 }), 56 | nftMetadataURI: "test-nft-metadata-uri", 57 | nftMetadataHash: toHex("test-nft-metadata-hash", { size: 32 }), 58 | }, 59 | txOptions: { waitForTransaction: true } 60 | }); 61 | console.log( 62 | `Root IPA created at tx hash ${response.txHash}, IPA ID: ${response.ipId}` 63 | ); 64 | } 65 | 66 | return ( 67 | {/* */} 68 | ) 69 | } 70 | ``` -------------------------------------------------------------------------------- /docs/Developers/releases-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Releases Page 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | 42 | 45 | 46 | 47 | 48 | 51 | 52 | 53 | 54 | 57 | 58 | 59 |
17 | 18 |
25 | SDK :arrow_upper_right: 26 |
31 | [Deployed Smart Contract Addresses ↗️](doc:deployed-smart-contracts) 32 |
37 | Protocol Core :arrow_upper_right: 38 |
43 | Protocol Periphery :arrow_upper_right: 44 |
49 | Story - Consensus Implementation :arrow_upper_right: 50 |
55 | Story Geth - Execution Layer Implementation :arrow_upper_right: 56 |
60 | -------------------------------------------------------------------------------- /docs/Developers/tutorials/_order.yaml: -------------------------------------------------------------------------------- 1 | - case-study-register-derivative-ippy 2 | - how-to-register-music-on-story 3 | - how-to-tip-an-ip 4 | - how-to-register-ip-on-story 5 | - protect-dalle-ai-generated-images 6 | - finetune-images 7 | - register-stability-images 8 | - privy-tutorial 9 | -------------------------------------------------------------------------------- /docs/Developers/tutorials/how-to-register-ip-on-story.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Register IP on Story 3 | excerpt: Learn how to register an NFT as IP with proper metadata on Story. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | Learn how to register an IP using the SDK. 16 | 17 | 18 | 19 | Learn how to register an IP using the Smart Contracts. 20 | 21 | -------------------------------------------------------------------------------- /docs/Developers/tutorials/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 📘 Tutorials 3 | excerpt: A list of follow-along developer tutorials. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## 📋 Registration 14 | 15 | * [How to Register IP on Story](doc:how-to-register-ip-on-story) 16 | * [How to Register Music on Story](doc:how-to-register-music-on-story) 17 | * [Case Study: Registering a Derivative of Ippy](doc:case-study-register-derivative-ippy) 18 | 19 | ## :money_with_wings: Royalty 20 | 21 | * [How to Tip an IP](doc:how-to-tip-an-ip) 22 | 23 | ## :x: Dispute 24 | 25 | * [How to Dispute an IP on Story](doc:how-to-dispute-ip-on-story) 26 | 27 | ## :robot: AI-Themed 28 | 29 | * [Protect DALL·E AI-Generated Images](doc:protect-dalle-ai-generated-images) 30 | * [Register & Monetize Stability Images](doc:register-stability-images) 31 | * [Finetune Images on Story](doc:finetune-images) 32 | 33 | ## :purse: Wallet-less / Onboarding 34 | 35 | * [Email Login & Sponsored Transactions with Privy](doc:privy-tutorial) -------------------------------------------------------------------------------- /docs/Developers/typescript-sdk/_order.yaml: -------------------------------------------------------------------------------- 1 | - typescript-sdk-setup 2 | - register-an-ip-asset 3 | - attach-terms-to-an-ip-asset 4 | - mint-a-license 5 | - register-a-derivative 6 | - pay-ipa 7 | - claim-revenue 8 | - raise-a-dispute 9 | -------------------------------------------------------------------------------- /docs/Developers/typescript-sdk/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🛠️ TypeScript SDK Guide 3 | excerpt: For TypeScript developers who want to build with Story. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | pages: 13 | - type: basic 14 | slug: typescript-sdk-setup 15 | title: TypeScript SDK Setup 16 | --- 17 | The best way to get started is to get your hands dirty and start building. 18 | 19 | 20 | 21 | Extremely easy & straightforward working code examples for all of the following tutorials. 22 | 23 | 24 | 25 | View the whole SDK reference, which shows examples and types for every function in our SDK. 26 | 27 | 28 | 29 | In the following series of tutorials, you will learn how to build IP applications with the Story SDK along with the concepts we mentioned in the [Architecture Overview](doc:overview). -------------------------------------------------------------------------------- /docs/Developers/typescript-sdk/typescript-sdk-setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Setup 3 | excerpt: Learn how to setup the TypeScript SDK. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ### :warning: Prerequisites 14 | 15 | We require node version 18 or later version and npm version 8 to be installed in your environment. To install node and npm, we recommend you go to the [Node.js official website](https://nodejs.org) and download the latest LTS (Long Term Support) version. 16 | 17 | ### :package: Install the Dependencies 18 | 19 | Install the [Story Protocol SDK](https://www.npmjs.com/package/@story-protocol/core-sdk) node package, as well as [viem](https://www.npmjs.com/package/viem). 20 | 21 | ```shell npm 22 | npm install --save @story-protocol/core-sdk viem 23 | ``` 24 | ```shell pnpm 25 | pnpm install @story-protocol/core-sdk viem 26 | ``` 27 | ```shell yarn 28 | yarn add @story-protocol/core-sdk viem 29 | ``` 30 | 31 | ## Initiate SDK Client 32 | 33 | Next we can initiate the SDK Client. There are two ways to do this: 34 | 35 | 1. Using a private key (preferable for some backend admin) 36 | 2. JSON-RPC account like Metamask where users sign their own transactions 37 | 38 | ### :key: Set Up Private Key Account 39 | 40 | 41 | 42 | Check out the TypeScript Tutorial for a working example of how to set up the Story SDK Client. 43 | 44 | 45 | 46 | Before continuing with the code below: 47 | 48 | 1. Make sure to have `WALLET_PRIVATE_KEY` set up in your `.env` file. 49 | 2. Make sure to have `RPC_PROVIDER_URL` set up in your `.env` file. 50 | 1. You can use the public default one (`https://aeneid.storyrpc.io`) or check out the other RPCs [here](https://docs.story.foundation/docs/aeneid#-rpcs). 51 | 52 | ```typescript utils.ts 53 | import { http } from "viem"; 54 | import { Account, privateKeyToAccount, Address } from "viem/accounts"; 55 | import { StoryClient, StoryConfig } from "@story-protocol/core-sdk"; 56 | 57 | const privateKey: Address = `0x${process.env.WALLET_PRIVATE_KEY}`; 58 | const account: Account = privateKeyToAccount(privateKey); 59 | 60 | const config: StoryConfig = { 61 | account: account, // the account object from above 62 | transport: http(process.env.RPC_PROVIDER_URL), 63 | chainId: "aeneid", 64 | }; 65 | export const client = StoryClient.newClient(config); 66 | ``` 67 | 68 | ### :purse: Setup for React (ex. Metamask) 69 | 70 | The [React Setup Guide](doc:react-setup) shows how we can also use the TypeScript SDK to delay signing & sending transactions to a JSON-RPC account like Metamask. -------------------------------------------------------------------------------- /docs/Developers/version-matrix/_order.yaml: -------------------------------------------------------------------------------- 1 | - sdk-v13-migration-guide 2 | -------------------------------------------------------------------------------- /docs/Developers/version-matrix/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Version Matrix 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | A version matrix showing the **currently available protocol versions** for different developer tools on both of our testnet networks. *Updated daily*. 14 | 15 | 16 | 17 | 18 | 21 | 22 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 37 | 38 | 41 | 42 | 49 | 50 | 51 | 52 | 55 | 56 | 59 | 60 | 66 | 67 | 68 | 69 | 72 | 73 | 76 | 77 | 80 | 81 | 82 |
19 | 20 | 23 | Odyssey Testnet 24 | 27 | Aeneid Testnet 28 |
35 | SDK 36 | 39 | [v1.2](https://www.npmjs.com/package/@story-protocol/core-sdk/v/1.2.0-rc.4) 40 | 43 | [v1.3](https://www.npmjs.com/package/@story-protocol/core-sdk/v/1.3.0-beta.2) 44 | 45 | :warning: Note this is still a beta version. 46 | 47 | **Migration Guide**: To go from v1.2 to v1.3, check out the [SDK v1.3 MIGRATION GUIDE](doc:sdk-v13-migration-guide). 48 |
53 | Protocol 54 | 57 | [v1.2](https://github.com/storyprotocol/protocol-core-v1/tree/v1.2.3) 58 | 61 | [Core v1.3](https://github.com/storyprotocol/protocol-core-v1)\ 62 | [Periphery v1.3](https://github.com/storyprotocol/protocol-periphery-v1) 63 | 64 | **Tutorial**: Check out [⚙️ Smart Contracts](doc:get-started-with-the-smart-contracts) for a tutorial on integrating with the v1.3 contracts 65 |
70 | API 71 | 74 | :warning: Deprecated (no longer available) 75 | 78 | [v1.3](https://docs.story.foundation/reference/api-introduction) 79 |
-------------------------------------------------------------------------------- /docs/Ecosystem & Governance/_order.yaml: -------------------------------------------------------------------------------- 1 | - governance 2 | - ecosystem-getting-started 3 | -------------------------------------------------------------------------------- /docs/Ecosystem & Governance/governance.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🏛️ Governance 3 | excerpt: Learn about Story's governance. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | robots: index 8 | --- 9 | As the steward of the Story ecosystem, the Story Foundation works in close alignment with $IP Tokenholders and the broader ecosystem. The Story Foundation supports the Story DAO by providing operational support, executing tokenholder governance decisions, and overseeing strategic development and growth of the overall ecosystem. This relationship is designed to empower decentralized governance while preserving efficiency and stability throughout the Story ecosystem. 10 | 11 | ## Story DAO's Constitution 12 | 13 | 14 | 15 | Read the entire Story DAO constitution. 16 | 17 | 18 | 19 | ## Story Foundation’s Role in Governance 20 | 21 | 22 | Provide **strategic grants** to align with innovation via partner projects including, but not limited to, infrastructure providers, application developers, artists, creators, brand partnerships, creative studios, and strategic growth partners. 23 | 24 | 25 | 26 | **Promote network security** by creating a security council and appointing members to serve on this council. 27 | 28 | 29 | 30 | Developing the ecosystem and protocol by **implementing proposals** of the Story DAO that are approved in accordance with the process outlined in the Story DAO Constitution and engaging parties to build apps. This may include funding research, public education, and establishing grant programs. 31 | 32 | 33 | 34 | Organizing **educational initiatives and hosting events** to increase awareness of and promote the Story Network, Story Protocol and ecosystem. 35 | 36 | 37 | 38 | Advocating for and **supporting increased autonomy and decentralization** of the Story DAO. 39 | 40 | 41 | 42 | **Treasury management** and oversight to foster long-term ecosystem growth and support the Foundation’s ongoing mission. 43 | -------------------------------------------------------------------------------- /docs/Introduction/_order.yaml: -------------------------------------------------------------------------------- 1 | - what-is-story 2 | - explain-like-im-five 3 | - quickstart 4 | - ai-agents-on-story 5 | - faq 6 | -------------------------------------------------------------------------------- /docs/Introduction/ai-agents-on-story/_order.yaml: -------------------------------------------------------------------------------- 1 | - using-cursor-with-story 2 | - implementing-the-atcpip-whitepaper 3 | -------------------------------------------------------------------------------- /docs/Introduction/ai-agents-on-story/using-cursor-with-story.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Using Cursor with Story 3 | excerpt: Add the entire Story documentation to Cursor. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | image: >- 8 | https://files.readme.io/519d12412249d2310708c39735bfa6268f386d52c07a910de29e18c1d71482f1-Screenshot_2025-02-13_at_12.15.17_AM.png 9 | robots: index 10 | --- 11 | [Cursor](https://www.cursor.com/) is an AI code editor that makes it easy to write code while building Story apps. Let's walk through how to setup Cursor for the best possible results with Story. 12 | 13 | ## Add Story Docs 14 | 15 | Adding Story docs lets you interact with our docs directly and get the most accurate answers to your questions. 16 | 17 | 1. Go to Cursor Settings > Features > Docs and click "+ Add new doc" 18 | 19 | 20 | 21 | 2. Paste the URL `https://raw.githubusercontent.com/storyprotocol/documentation/refs/heads/v1.3/combined.md` 22 | 1. This is our entire documentation combined into a single `.md` file, **which is automatically updated every single time our docs have changes.** 23 | 3. Change the name to Story, and leave everything else the same 24 | 25 | 26 | 27 | ## Using the Docs 28 | 29 | You can then reference the Story docs in your prompt with the `@Story` symbol. 30 | 31 | -------------------------------------------------------------------------------- /docs/Introduction/explain-like-im-five.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🤔 Explain Like I'm Five 3 | excerpt: An easy to understand overview of Story. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | image: >- 10 | https://files.readme.io/a998b5de53be113970b66e76def469e142a4ccec7e89bb65c1ee3c742212edf6-eli5.png 11 | robots: index 12 | next: 13 | description: '' 14 | --- 15 | Credit to the original tweet [here](https://x.com/devrelius/status/1812865477657694513). 16 | Credit to the original tweet [here](https://x.com/devrelius/status/1812865477657694513). 17 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/_order.yaml: -------------------------------------------------------------------------------- 1 | - overview 2 | - ip-asset 3 | - story-modules 4 | - licensing-module 5 | - royalty-module 6 | - dispute-module 7 | - grouping-module 8 | - registry 9 | - programmable-ip-license 10 | - access-controller 11 | - spg 12 | - story-attestation-service 13 | - concepts-faq 14 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/concepts-faq.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ❓ Concepts FAQ 3 | excerpt: Common technical questions related to our protocol documentation. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## *"What is the difference between License Tokens, Royalty Tokens, and Revenue Tokens?"* 14 | 15 | 16 | 17 | 18 | 21 | 22 | 25 | 26 | 29 | 30 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 42 | 45 | 46 | 49 | 50 | 53 | 54 | 55 | 56 | 59 | 60 | 65 | 66 | 69 | 70 | 75 | 76 | 77 | 78 | 81 | 82 | 85 | 86 | 89 | 90 | 93 | 94 | 95 |
19 | 20 | 23 | License Tokens 24 | 27 | Royalty Tokens 28 | 31 | Revenue Tokens 32 |
39 | **Module** 40 | 43 | [📜 Licensing Module](doc:licensing-module) 44 | 47 | [💸 Royalty Module](doc:royalty-module) 48 | 51 | [💸 Royalty Module](doc:royalty-module) 52 |
57 | **Explanation** 58 | 61 | An ERC-721 NFT that gets minted from an IP Asset with specific license terms. It is essentially the license you hold that gives you access to use the associated IP Asset based on the terms in the License Token. 62 | 63 | A License Token is burned when it is used to register an IP Asset as a derivative of another. 64 | 67 | Each IP Asset has 100,000,000 Royalty Tokens associated, where each token represents the right of whoever owns them to claim 0.000001% of the gains ("*Revenue Tokens*") deposited into the IPA's Royalty Vault. 68 | 71 | These are the tokens that are actually used for payment (ex. $WIP). 72 | 73 | "*Royalty Tokens*" are used to claim these Revenue Tokens when an IP Asset earns them. 74 |
79 | **Associated Docs** 80 | 83 | [License Token](doc:license-token) 84 | 87 | [IP Royalty Vault](doc:ip-royalty-vault) 88 | 91 | [IP Royalty Vault](doc:ip-royalty-vault) 92 |
-------------------------------------------------------------------------------- /docs/Protocol Concepts/dispute-module/_order.yaml: -------------------------------------------------------------------------------- 1 | - uma-arbitration-policy 2 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/ip-asset/_order.yaml: -------------------------------------------------------------------------------- 1 | - ip-account 2 | - ipa-metadata-standard 3 | - ipa-modifications 4 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/ip-asset/ip-account.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ⚙️ IP Account 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | > 🐦 Skip the Read 14 | > 15 | > Get a quick 2-minute overview of IP Accounts [here](https://twitter.com/jacobmtucker/status/1787603252198134234). 16 | 17 | When an [🧩 IP Asset](doc:ip-asset) is registered, it is given an associated **IP Account**. An IP Account is a modified ERC-6551 (Token Bound Account) implementation. It is a separate contract bound to the IP Asset for controlling permissions around interactions with Story's modules or storing the IP's associated data. Upon registration, an IP Asset is assigned a unique ID. This ID is the address of the IP Account that is bound to the IP Asset. 18 | 19 | ![](https://files.readme.io/aab60607fd795080b061d93bfdfaf9a800930db861be332d205a48d637e234f1-image.png) 20 | 21 | An IP Account mainly does two things: 22 | 23 | 1. Stores comprehensive IP-related data, including metadata and ownership details of associated assets such as the License Tokens or Royalty Tokens that are created from the IP. 24 | 2. Facilitates the utilization of this data by various modules. These modules interact with and contribute to the IP Account, creating and storing data. For example, licensing, revenue/royalty sharing, remixing, disputing an IP, and other modules are made possible due to the IP Account's programmability. 25 | 26 | > 📘 Transferring the Underlying NFT 27 | > 28 | > If the underlying NFT is transferred, the new owner is also automatically the owner of the associated IP Asset & IP Account. 29 | 30 | ## `execute` and `executeWithSig` 31 | 32 | A key feature of IP Account is the generic `execute()` function, which allows calling arbitrary modules within Story via encoded bytes data (thus extensible for future modules). Additionally, there is a `executeWithSig()` function that enables users to sign transactions and have others execute on their behalf for seamless UX. 33 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/licensing-module/_order.yaml: -------------------------------------------------------------------------------- 1 | - license-template 2 | - license-terms 3 | - license-token 4 | - license-config-hook 5 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/licensing-module/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 📜 Licensing Module 3 | excerpt: Learn about creating & attaching real legal license to your IP on Story. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | The Licensing Module allows you to create a real legal license from a **License Template** (which is the [Programmable IP License (PIL💊)](doc:programmable-ip-license)) and attach it to your IP Asset. This license, and the **License Terms** that define it, restrict how others can use your IP, commercialize it, and remix it. 15 | 16 | If License Terms are attached to an IP Asset, anyone can mint a **License Token** (an ERC-721 NFT) from it which acts as the license to use that work based on the terms that define it. This token can then be burned to register a derivative work. This then establishes a parent-child relationship between assets, unlocking things like automatic royalty flow from the [💸 Royalty Module](doc:royalty-module). 17 | 18 | 19 | The owner of an IP Asset owns intellectual property rights such as creating derivatives, being commercially exploited, and being reproduced in different platforms. 20 | 21 | IP Assets can programmatically grant permissions for any users to exercise those rights with some autonomy via [License Tokens](doc:license-token) (an ERC-721 NFT), which point to a particular set of conditions, known as [License Terms](doc:license-terms). 22 | 23 | The contracts in blue are built into the protocol. The contracts in white can be developed by the community or 3rd party vendor. 24 | 25 | ## LicensingModule 26 | 27 | 28 | 29 | View the smart contract for the License Module. 30 | 31 | 32 | 33 | The `LicensingModule.sol` contract is the main entry point for the licensing system. It is responsible for: 34 | 35 | * Attaching License Terms to IP Assets 36 | * Minting License Tokens 37 | * Registering derivatives 38 | * Setting License Configs 39 | 40 | ## Further Readings 41 | 42 | The following document will walk through all of the major components of the Licensing Module as shown above: 43 | 44 | * [License Template](doc:license-template) 45 | * [License Terms](doc:license-terms) 46 | * [License Token](doc:license-token) 47 | * [License Registry](doc:license-registry) 48 | * [License Config / Hook](doc:license-config-hook) -------------------------------------------------------------------------------- /docs/Protocol Concepts/licensing-module/license-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: License Template 3 | excerpt: >- 4 | A legal framework, written in code ("programmable"), that defines various 5 | licensing terms for an IP. 6 | deprecated: false 7 | hidden: false 8 | metadata: 9 | title: '' 10 | description: '' 11 | robots: index 12 | next: 13 | description: '' 14 | --- 15 | A License Template is a legal framework, written in code ("programmable"), that defines various licensing terms for an IP. Such as: 16 | 17 | * "Is commercial use allowed?" - true/false (bool) 18 | * "Is the license transferrable?" - true/false (bool) 19 | * "If commercial, what % of royalty do I receive?" - number 20 | 21 | These terms and values differ per License Template. 22 | 23 | The first (and currently only) example of a License Template was developed by the Story team directly, and is called the Programmable IP License (PIL :pill:). 24 | 25 | 26 | 27 | Learn about the first implementation of a License Template 28 | 29 | 30 | 31 | View the smart contract for the PIL. 32 | 33 | 34 | 35 | ## License Template Requirements 36 | 37 | License Templates are responsible for: 38 | 39 | * Providing a link to the actual, off-chain, legal contract template, with all the parameters, their possible values, and the correspondent legalese, in `licenseTextUrl`. 40 | * For a licensing framework to be compatible with Story Protocol, the legal text **must** be clear and parametrized, with each licensing parameter establishing the possible outcomes of each value. 41 | * The parameter values in each License Template (called "License Template terms") drive the legal text for each license agreement. 42 | * Defining a `struct` with the particular definitions of the parameters in accordance, which must be encoded into the License Terms struct (described below). 43 | * Providing registration methods for the License Terms, and getters. 44 | * **Verifying** that both the **minter** and the address **linking a derivative are allowed by the License Template terms to perform those actions**. 45 | * These conditions could be enforced by the License Template itself or through hooks. They can range from limitations on the derivative creations, token-gating LNFT holders, creative control from licensors, KYC, etc. It's up to the implementation of each License Template. 46 | * **Verifying that the License Terms are compatible if a derivative has or will have multiple parents** 47 | 48 | ## Create Your Own Template 49 | 50 | You can create your own License Template (like the PIL), but it must be approved by the Story team to be fully embedded into the protocol. -------------------------------------------------------------------------------- /docs/Protocol Concepts/programmable-ip-license/_order.yaml: -------------------------------------------------------------------------------- 1 | - pil-terms 2 | - pil-flavors 3 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/_order.yaml: -------------------------------------------------------------------------------- 1 | - ip-asset-registry 2 | - group-ip-asset-registry 3 | - license-registry 4 | - module-registry 5 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/group-ip-asset-registry.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Group IP Asset Registry 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | View the smart contract for the Group IP Asset Registry. 16 | 17 | 18 | 19 | The Group IP Asset Registry is responsible for managing the registration and tracking of Group IP Assets, including the group members and reward pools. 20 | 21 | The Group IP Asset Registry will maintain grouping relationship on-chain between the Group's IP Account and individual IP Accounts through a mapping: 22 | 23 | ```sol GroupIPAssetRegistry.sol 24 | mapping(address groupIpId => EnumerableSet.AddressSet memberIpIds) groups; 25 | ``` 26 | 27 | ### Notable Functions 28 | 29 | ```sol GroupIPAssetRegistry.sol 30 | function registerGroup(address groupNft, uint256 groupNftId, address rewardPool) external onlyGroupingModule whenNotPaused returns (address groupId) 31 | ``` 32 | 33 | This function registers a new Group IPA on Story. 34 | 35 | ```sol GroupIPAssetRegistry.sol 36 | function addGroupMember(address groupId, address[] calldata ipIds) external onlyGroupingModule whenNotPaused 37 | ``` 38 | 39 | Adds already registered IPAs to an existing Group IPA. 40 | 41 | ```sol GroupIPAssetRegistry.sol 42 | function removeGroupMember(address groupId, address[] calldata ipIds) external onlyGroupingModule whenNotPaused 43 | ``` 44 | 45 | Removes registered IPAs from a Group IPA. -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🗂️ Registry 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The various registries on Story function as a primary directory/storage for the global states of the protocol. Obviously, they also contain functions to update that storage. 14 | 15 | Unlike [⚙️ IP Accounts](doc:ip-account), which manage the state of specific IPs, a **registry** oversees the broader states of the protocol. 16 | 17 | # Types of Registries 18 | 19 | Below are all of the registries on Story. 20 | 21 | ## [IP Asset Registry](doc:ip-asset-registry) 22 | 23 | Responsible for registering IPs into the protocol. 24 | 25 | ## [Group IP Asset Registry](doc:group-ip-asset-registry) 26 | 27 | Responsible for registering and maintaining Group IP Assets. 28 | 29 | ## [License Registry](doc:license-registry) 30 | 31 | Stores all license-related states within the protocol, like attaching License Terms to IP Assets, registering derivatives, creating new License Templates, etc. 32 | 33 | ## [Module Registry](doc:module-registry) 34 | 35 | Maintains and updates the global list of modules and hooks registered permissionlessly on Story -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/ip-asset-registry.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IP Asset Registry 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | View the smart contract for the IP Asset Registry. 16 | 17 | 18 | 19 | The IP Asset Registry is responsible for registering IPs into the protocol. It deploys a dedicated [IP Account](doc:ip-account) contract for each new IP Asset registered on the protocol (*NOTE: This registry inherits from the* [IP Account Registry](https://github.com/storyprotocol/protocol-core-v1/blob/main/contracts/registries/IPAccountRegistry.sol)) 20 | 21 | ### Notable Functions 22 | 23 | ```sol IPAssetRegistry.sol 24 | function register(uint256 chainid, address tokenContract, uint256 tokenId) external whenNotPaused returns (address id) 25 | ``` 26 | 27 | This function registers an ERC-721 NFT as a new IP Asset on Story. -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/license-registry.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: License Registry 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | View the smart contract for the License Registry. 16 | 17 | 18 | 19 | The License Registry stores all license-related states within the protocol, including managing global state like registering new License Templates like the [Programmable IP License (PIL💊)](doc:programmable-ip-license), attaching licenses to individual [IP Assets](doc:ipasset), registering derivatives, and the like: 20 | 21 | ```sol LicenseRegistry.sol 22 | struct LicenseRegistryStorage { 23 | /// The default license template address 24 | address defaultLicenseTemplate; 25 | /// The default license terms ID 26 | uint256 defaultLicenseTermsId; 27 | /// Registered license templates 28 | mapping(address licenseTemplate => bool isRegistered) registeredLicenseTemplates; 29 | /// Mapping of parent IPs to derivative IPs 30 | mapping(address childIpId => EnumerableSet.AddressSet parentIpIds) parentIps; 31 | /// Mapping of derivative IPs to parent IPs 32 | mapping(address parentIpId => EnumerableSet.AddressSet childIpIds) childIps; 33 | /// attachedLicenseTerms Mapping of attached license terms to IP IDs 34 | mapping(address ipId => EnumerableSet.UintSet licenseTermsIds) attachedLicenseTerms; 35 | /// Mapping of license templates to IP IDs 36 | mapping(address ipId => address licenseTemplate) licenseTemplates; 37 | /// Mapping of minting license configs to a licenseTerms of an IP 38 | mapping(bytes32 ipLicenseHash => Licensing.LicensingConfig licensingConfig) licensingConfigs; 39 | /// Mapping of minting license configs to an IP, the config will apply to all licenses under the IP 40 | mapping(address ipId => Licensing.LicensingConfig licensingConfig) licensingConfigsForIp; 41 | } 42 | ``` 43 | 44 | ### Notable Functions 45 | 46 | ```sol LicenseRegistry.sol 47 | function attachLicenseTermsToIp(address ipId, address licenseTemplate, uint256 licenseTermsId) external onlyLicensingModule 48 | ``` 49 | 50 | This function allows you to attach License Terms to an IP Asset. 51 | 52 | ```sol LicenseRegistry.sol 53 | function registerDerivativeIp(address childIpId, address[] calldata parentIpIds, address licenseTemplate, uint256[] calldata licenseTermsIds, bool isUsingLicenseToken) external onlyLicensingModule 54 | ``` 55 | 56 | This function allows you to register an IP Asset as a derivative of another IP Asset, unlocking things like claimable royalty flows from the [💸 Royalty Module](doc:royalty-module). -------------------------------------------------------------------------------- /docs/Protocol Concepts/registry/module-registry.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Module Registry 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | 15 | View the smart contract for the Module Registry. 16 | 17 | 18 | 19 | The Module Registry maintains and updates the global list of modules and hooks registered permissionlessly on Story. It can enable/disable modules on a per-IP Account basis for granular control over each IP Account's interaction with modules and hooks. 20 | 21 | **This module is likely not very important for you** unless you wish to dive into creating/reading modules. -------------------------------------------------------------------------------- /docs/Protocol Concepts/royalty-module/_order.yaml: -------------------------------------------------------------------------------- 1 | - ip-royalty-vault 2 | - liquid-absolute-percentage 3 | - liquid-relative-percentage 4 | - external-royalty-policies 5 | - payments-and-revenue-tokens 6 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/spg/_order.yaml: -------------------------------------------------------------------------------- 1 | - batch-spg-function-calls 2 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/spg/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 📦 SPG (Periphery) 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The Story Protocol Gateway (SPG) is a group of periphery/utility smart contracts, deployed on our protocol that **allows you to combine independent operations** - like registering an [🧩 IP Asset](doc:ip-asset) and attaching License Terms to that IP Asset - **into one transaction to make your life easier**. 14 | 15 | This was primarily developed to make our [SDK](doc:sdk-overview) easier to use. 16 | 17 | For example, this `mintAndRegisterIpAndAttachPILTerms` is one of the functions in the SPG (more specifically in the `LicenseAttachmentWorkflows.sol`) that allows you to mint an NFT, register it as an IP Asset, and attach License Terms to it all in one call: 18 | 19 | ```sol LicenseAttachmentWorkflows.sol 20 | function mintAndRegisterIpAndAttachPILTerms( 21 | address spgNftContract, 22 | address recipient, 23 | WorkflowStructs.IPMetadata calldata ipMetadata, 24 | WorkflowStructs.LicenseTermsData[] calldata licenseTermsData, 25 | bool allowDuplicates 26 | ) external onlyMintAuthorized(spgNftContract) returns (address ipId, uint256 tokenId, uint256[] memory licenseTermsIds) 27 | ``` 28 | 29 | ## All Supported Workflows 30 | 31 | As mentioned above, there are many different functions we have created for you that combine multiple functions into one. We have categorized them into different groups. These groups are called "workflows". 32 | 33 | 34 | 35 | Click here to view all of the supported workflows. 36 | 37 | 38 | 39 | Click here to view the workflow smart contracts. 40 | 41 | 42 | 43 | ## Batching Calls 44 | 45 | Although the SPG contains certain functions like `mintAndRegisterIpAndAttachPILTerms`, `registerIpAndAttachPILTerms`, and a bunch more, it would be tedious for us to continually update the contract to account for every single combination of possible interactions with an IP Asset. 46 | 47 | Instead, we have allowed for a "Multicall" mechanism where you can batch transactions how you like. For more info, see [Batch Function Calls](doc:batch-spg-function-calls). -------------------------------------------------------------------------------- /docs/Protocol Concepts/story-modules/_order.yaml: -------------------------------------------------------------------------------- 1 | - base-module 2 | - hooks 3 | - view-module 4 | - how-to-create-and-register-modules 5 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/story-modules/base-module.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Base Module 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | The Base Module provides a standard set of must-have functionalities for all modules registered on Story Protocol. Anyone wishing to create and register a module on Story Protocol must inherit and override the Base Module. 14 | 15 | > 🗒️ Contract 16 | > 17 | > View the smart contract [here](https://github.com/storyprotocol/protocol-core-v1/blob/main/contracts/modules/BaseModule.sol). 18 | 19 | # Key Features 20 | 21 | ## Simplicity and Flexibility 22 | 23 | The BaseModule is intentionally kept simple and generalized. It only implements the ERC165 interface, which is crucial for interface detection. This design choice allows for maximum flexibility when developing more specific modules within the Story Protocol. 24 | 25 | ## ERC165 Interface Implementation 26 | 27 | By implementing the ERC165 interface, BaseModule allows other contracts to query whether it supports a specific interface. This feature is essential for ensuring compatibility and interoperability within the Story Protocol ecosystem and beyond. 28 | 29 | ```sol BaseModule.sol 30 | abstract contract BaseModule is ERC165, IModule { 31 | ... 32 | } 33 | ``` 34 | 35 | ## `supportsInterface` Function 36 | 37 | A key function in the BaseModule is `supportsInterface`, which overrides the ERC165's `supportsInterface` method. This function is crucial for interface detection, allowing the contract to declare support for both its own `IModule` interface and any other interfaces it might inherit. 38 | 39 | ```sol BaseModule.sol 40 | function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { 41 | return interfaceId == type(IModule).interfaceId || super.supportsInterface(interfaceId); 42 | } 43 | ``` 44 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/story-modules/hooks.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🪝 Hooks 3 | excerpt: Learn about and view the available hooks on Story. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Hooks are defined as a specialized interface that inherits from the Module framework. They are designed for developers to create custom implementations that integrate seamlessly with existing Modules. 14 | 15 | 16 | 17 | ## Concept and Functionality 18 | 19 | While Modules are the backbone of the Story Protocol, executing actions and managing interactions, Hooks are distinct in their specific focus. They are tailored to verify conditions, an essential feature embodied in their `verify()` functionality. This design choice positions Hooks as a unique subset of Modules, specialized for particular tasks within the ecosystem. 20 | 21 | ## Design Philosophy 22 | 23 | From a structural standpoint, Hooks are not treated as separate entities from Modules. This decision avoids unnecessary complexity in the architecture. Viewing Hooks as specialized Modules allows for a simplified, efficient design that emphasizes clarity in roles and interactions. 24 | 25 | ## Available Hooks 26 | 27 | Below are available hooks deployed on our protocol that you can use. 28 | 29 | > 📘 Deployed Addresses 30 | > 31 | > View the deployed addresses for these hooks [here](https://docs.story.foundation/docs/deployed-smart-contracts#periphery-contracts). 32 | 33 | | Hook | Description | Contract Code | 34 | | :------------------------- | :------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | 35 | | LockLicenseHook | Stop the minting of license tokens or registering new derivatives. | View here ↗️ | 36 | | TotalLicenseTokenLimitHook | Set a limit on the amount of license tokens that can be minted, updatable at any time. | View here ↗️ | -------------------------------------------------------------------------------- /docs/Protocol Concepts/story-modules/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🧱 Modules 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Modules are standalone contracts that adhere to the [`IModule` interface](https://github.com/storyprotocol/protocol-core-v1/blob/main/contracts/interfaces/modules/base/IModule.sol). These modules play a crucial role in taking action on IP to change the data/state around or of IP. 14 | 15 | # Existing Modules 16 | 17 | There are a few important modules, created by the Story team, to be aware of: 18 | 19 | ## [📜 Licensing Module](doc:licensing-module) 20 | 21 | Responsible for defining and attaching licenses to IP Assets. 22 | 23 | ## [💸 Royalty Module](doc:royalty-module) 24 | 25 | Responsible for handling royalty flow between parent & child IP Assets. 26 | 27 | ## [❌ Dispute Module](doc:dispute-module) 28 | 29 | Responsible for handling the dispute of wrongfully registered or misbehaved IP Assets. 30 | 31 | ## [👥 Grouping Module](doc:grouping-module) 32 | 33 | Responsible for handling groups of IPAs. 34 | -------------------------------------------------------------------------------- /docs/Protocol Concepts/story-modules/view-module.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: View Module 3 | excerpt: '' 4 | deprecated: false 5 | hidden: true 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | # Overview 14 | 15 | The View Module, inheriting from the Module in Story Protocol, is designed for interpreting and displaying IP data. Its primary role is to function as a read-only module, focusing on the presentation of IP-related data in various accessible formats. 16 | 17 | 18 | 19 | # Design 20 | 21 | The View Module is uniquely tailored to aggregate data from multiple namespaces within an IPAccount. This design enables it to present a comprehensive view of an IP, encompassing different data types and sources. It is structured to prioritize interpretability and user-friendly display of information. 22 | 23 | 24 | 25 | # Use Cases Example 26 | 27 | * **Core Metadata Immutability:**Utilizes CoreMetadataModule to ensure the immutability of core IP metadata. 28 | * **User-Defined Metadata:** Employs UserMetadataModule for new metadata additions and UserMetadataViewModule for reading and showcasing data from Core and User Metadata. 29 | * **Metadata Upgrade/Migration:** Focuses on seamless data evolution with MetadataModuleV2 and MetadataViewModuleV2, combining information from original and upgraded metadata sources without the need for migration. 30 | -------------------------------------------------------------------------------- /docs/SDK Reference/_order.yaml: -------------------------------------------------------------------------------- 1 | - sdk-overview 2 | - sdk-ipasset 3 | - sdk-ipaccount 4 | - sdk-license 5 | - sdk-royalty 6 | - sdk-dispute 7 | - sdk-permissions 8 | - sdk-group 9 | - sdk-nftclient 10 | - wip-client 11 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/_order.yaml: -------------------------------------------------------------------------------- 1 | - beta-ipaccountimplsol 2 | - beta-reference 3 | - beta-modules 4 | - beta-registries 5 | - beta-resolvers 6 | - policy-1 7 | - libraries 8 | - beta-utils 9 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/_order.yaml: -------------------------------------------------------------------------------- 1 | - basemodulesol-1 2 | - registrationmodulesol-1 3 | - dispute-3 4 | - licensing 5 | - royalty-1 6 | - external 7 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/basemodulesol-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: BaseModule.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Base implementation for all modules in Story Protocol. 14 | 15 | ### supportsInterface 16 | 17 | ```solidity 18 | function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) 19 | ``` 20 | 21 | IERC165 interface support. 22 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/dispute-3/_order.yaml: -------------------------------------------------------------------------------- 1 | - dispute-module-sol 2 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/dispute-3/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dispute 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Contracts associated with the module that provides the dispute feature in Story Protocol. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/external/_order.yaml: -------------------------------------------------------------------------------- 1 | - tokenwithdrawalmodule 2 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/external/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: External 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | For Beta, since IPAccounts are limited to calling `execute` modules, we must write modules that can facilitate IPAccounts on interacting with external contracts. External Contract Modules facilitate this. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Modules 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Modules are internal logics encapsulated into individual contracts, responsible for atomic interactions in the protocol. For example, the royalty module handles all interactions involving royalty, while the licensing module handles all interactions involving licensing. 14 | 15 | Modules can interact with other modules as long as either (1) the IPAccount owner grants permission for a module-to-module function call; or (2) the global permission for a module-to-module function call has been granted by the protocol admin. 16 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/licensing/_order.yaml: -------------------------------------------------------------------------------- 1 | - licensingmodulesol 2 | - licensingmoduleawaresol 3 | - basepolicyframeworkmanagersol 4 | - pilpolicyframeworkmanagersol 5 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/licensing/basepolicyframeworkmanagersol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: BasePolicyFrameworkManager.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Base contract for policy framework managers. 14 | 15 | ### name 16 | 17 | ```solidity 18 | string name 19 | ``` 20 | 21 | Returns the name to be shown in license NFT (LNFT) metadata 22 | 23 | ### licenseTextUrl 24 | 25 | ```solidity 26 | string licenseTextUrl 27 | ``` 28 | 29 | Returns the URL to the off chain legal agreement template text 30 | 31 | ### constructor 32 | 33 | ```solidity 34 | constructor(address licensing, string name_, string licenseTextUrl_) internal 35 | ``` 36 | 37 | ### supportsInterface 38 | 39 | ```solidity 40 | function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) 41 | ``` 42 | 43 | IERC165 interface support. 44 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/licensing/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Licensing 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Contracts associated with the module that provides the licensing feature in Story Protocol. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/licensing/licensingmoduleawaresol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: LicensingModuleAware.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Base contract to be inherited by modules that need to access the licensing module. 14 | 15 | ### LICENSING\_MODULE 16 | 17 | ```solidity 18 | contract ILicensingModule LICENSING_MODULE 19 | ``` 20 | 21 | Returns the protocol-wide licensing module. 22 | 23 | ### constructor 24 | 25 | ```solidity 26 | constructor(address licensingModule) internal 27 | ``` 28 | 29 | ### onlyLicensingModule 30 | 31 | ```solidity 32 | modifier onlyLicensingModule() 33 | ``` 34 | 35 | Modifier for authorizing the calling entity to only the LicensingModule. 36 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/royalty-1/_order.yaml: -------------------------------------------------------------------------------- 1 | - royaltymodulesol 2 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-modules/royalty-1/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Royalty 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Contracts associated with the module that provides the royalty feature in Story Protocol. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-reference/_order.yaml: -------------------------------------------------------------------------------- 1 | - accesscontrolled-1 2 | - accesscontrollersol 3 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Access 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Access contracts are involved in granting, checking, and validating any permissions involved between calls, which range from delegated IPAccount calls to module-to-module interactions. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-registries/_order.yaml: -------------------------------------------------------------------------------- 1 | - metadata 2 | - ipaccountregistrysol 3 | - ipassetregistrysol 4 | - licenseregistrysol 5 | - moduleregistrysol 6 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-registries/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Registries 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | A registry is a contract that serves as the source of truth for Story Protocol regarding its associated data. For instance, IPAssetRegistry is the source of truth for all IPs registered in Story Protocol. 14 | 15 | A registry is made to be an entry point for any external contract calls; it routes all calls to modules with internal business logic to serve its requirements. 16 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-registries/metadata/_order.yaml: -------------------------------------------------------------------------------- 1 | - ipassetrenderersol 2 | - ipmetadataprovidersol 3 | - metadataproviderbasesol 4 | - metadataproviderv1sol 5 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-registries/metadata/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Metadata 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Contracts associated with the Metadata Registry. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-registries/metadata/ipmetadataprovidersol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPMetadataProvider.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Base contract used for customization of canonical IP metadata. 14 | 15 | ### MODULE\_REGISTRY 16 | 17 | ```solidity 18 | contract IModuleRegistry MODULE_REGISTRY 19 | ``` 20 | 21 | Gets the protocol-wide module registry. 22 | 23 | ### \_ipMetadata 24 | 25 | ```solidity 26 | mapping(address => bytes) _ipMetadata 27 | ``` 28 | 29 | Maps IPs to their metadata based on their IP IDs. 30 | 31 | ### constructor 32 | 33 | ```solidity 34 | constructor(address moduleRegistry) public 35 | ``` 36 | 37 | ### getMetadata 38 | 39 | ```solidity 40 | function getMetadata(address ipId) external view virtual returns (bytes) 41 | ``` 42 | 43 | Gets the metadata associated with an IP asset. 44 | 45 | #### Parameters 46 | 47 | | Name | Type | Description | 48 | | ---- | ------- | --------------------------------------- | 49 | | ipId | address | The address identifier of the IP asset. | 50 | 51 | #### Return Values 52 | 53 | | Name | Type | Description | 54 | | ---- | ----- | ----------------------------------------------------------- | 55 | | \[0] | bytes | metadata The encoded metadata associated with the IP asset. | 56 | 57 | ### setMetadata 58 | 59 | ```solidity 60 | function setMetadata(address ipId, bytes metadata) external 61 | ``` 62 | 63 | Sets the metadata associated with an IP asset. 64 | 65 | #### Parameters 66 | 67 | | Name | Type | Description | 68 | | -------- | ------- | ----------------------------------------------------- | 69 | | ipId | address | The address identifier of the IP asset. | 70 | | metadata | bytes | The metadata in bytes to associate with the IP asset. | 71 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-resolvers/_order.yaml: -------------------------------------------------------------------------------- 1 | - ipresolversol 2 | - keyvalueresolversol 3 | - resolverbasesol 4 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-resolvers/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Resolvers 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Resolvers are contracts that return custom data/value for a given address. Users can associate or disassociate resolvers to their IPAccounts at any time, akin to ENS resolvers. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-resolvers/ipresolversol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPResolver.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Canonical IP resolver contract used for Story Protocol. 14 | 15 | ### name 16 | 17 | ```solidity 18 | string name 19 | ``` 20 | 21 | Returns the string identifier associated with the module. 22 | 23 | ### constructor 24 | 25 | ```solidity 26 | constructor(address accessController, address ipAssetRegistry) public 27 | ``` 28 | 29 | ### supportsInterface 30 | 31 | ```solidity 32 | function supportsInterface(bytes4 id) public view virtual returns (bool) 33 | ``` 34 | 35 | IERC165 interface support. 36 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-resolvers/keyvalueresolversol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: KeyValueResolver.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Resolver used for returning values associated with keys. This is the\ 14 | preferred approach for adding additional attribution to IP that the\ 15 | IP originator thinks is beneficial to have on chain. 16 | 17 | ### \_values 18 | 19 | ```solidity 20 | mapping(address => mapping(string => string)) _values 21 | ``` 22 | 23 | *Stores key-value pairs associated with each IP.* 24 | 25 | ### setValue 26 | 27 | ```solidity 28 | function setValue(address ipId, string key, string val) external virtual 29 | ``` 30 | 31 | Sets the string value for a specified key of an IP ID. 32 | 33 | *Enforced to be only callable by users with valid permission to call on behalf of the ipId.* 34 | 35 | #### Parameters 36 | 37 | | Name | Type | Description | 38 | | ---- | ------- | ----------------------------------------- | 39 | | ipId | address | The canonical identifier of the IP asset. | 40 | | key | string | The string parameter key to update. | 41 | | val | string | The value to set for the specified key. | 42 | 43 | ### value 44 | 45 | ```solidity 46 | function value(address ipId, string key) external view virtual returns (string) 47 | ``` 48 | 49 | Retrieves the string value associated with a key for an IP asset. 50 | 51 | #### Parameters 52 | 53 | 54 | 55 | 56 | 59 | 60 | 63 | 64 | 67 | 68 | 69 | 70 | 71 | 72 | 75 | 76 | 79 | 80 | 83 | 84 | 85 | 86 | 89 | 90 | 93 | 94 | 97 | 98 | 99 |
57 | Name 58 | 61 | Type 62 | 65 | Description 66 |
73 | ipId 74 | 77 | address 78 | 81 | 82 |
87 | key 88 | 91 | string 92 | 95 | The string parameter key to query. 96 |
100 | 101 | #### Return Values 102 | 103 | | Name | Type | Description | 104 | | ---- | ------ | -------------------------------------------------- | 105 | | \[0] | string | value The value associated with the specified key. | 106 | 107 | ### supportsInterface 108 | 109 | ```solidity 110 | function supportsInterface(bytes4 id) public view virtual returns (bool) 111 | ``` 112 | 113 | IERC165 interface support. 114 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-resolvers/resolverbasesol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ResolverBase.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | IP Resolver Base Contract 14 | 15 | ### constructor 16 | 17 | ```solidity 18 | constructor(address accessController, address assetRegistry) internal 19 | ``` 20 | 21 | ### supportsInterface 22 | 23 | ```solidity 24 | function supportsInterface(bytes4 id) public view virtual returns (bool) 25 | ``` 26 | 27 | IERC165 interface support. 28 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-utils/_order.yaml: -------------------------------------------------------------------------------- 1 | - shortstringops-1 2 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-utils/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Utilities 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Custom utilities used by Story Protocol's core contracts. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/beta-utils/shortstringops-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ShortStringOps 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## ShortStringOps 14 | 15 | Library for working with Openzeppelin's ShortString data types. 16 | 17 | ### equal 18 | 19 | ```solidity 20 | function equal(ShortString a, ShortString b) internal pure returns (bool) 21 | ``` 22 | 23 | *Compares whether two ShortStrings are equal.* 24 | 25 | ### equal 26 | 27 | ```solidity 28 | function equal(ShortString a, string b) internal pure returns (bool) 29 | ``` 30 | 31 | *Checks whether a ShortString and a regular string are equal.* 32 | 33 | ### equal 34 | 35 | ```solidity 36 | function equal(string a, ShortString b) internal pure returns (bool) 37 | ``` 38 | 39 | *Checks whether a regular string and a ShortString are equal.* 40 | 41 | ### equal 42 | 43 | ```solidity 44 | function equal(bytes32 a, ShortString b) internal pure returns (bool) 45 | ``` 46 | 47 | *Checks whether a bytes32 object and ShortString are equal.* 48 | 49 | ### equal 50 | 51 | ```solidity 52 | function equal(string a, bytes32 b) internal pure returns (bool) 53 | ``` 54 | 55 | *Checks whether a string and bytes32 object are equal.* 56 | 57 | ### equal 58 | 59 | ```solidity 60 | function equal(bytes32 a, string b) internal pure returns (bool) 61 | ``` 62 | 63 | *Checks whether a bytes32 object and string are equal.* 64 | 65 | ### stringToBytes32 66 | 67 | ```solidity 68 | function stringToBytes32(string s) internal pure returns (bytes32) 69 | ``` 70 | 71 | ### bytes32ToString 72 | 73 | ```solidity 74 | function bytes32ToString(bytes32 b) internal pure returns (string) 75 | ``` 76 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/_order.yaml: -------------------------------------------------------------------------------- 1 | - modulemd 2 | - ipaccountcheckermd 3 | - accesspermissionmd 4 | - arrayutilssol 5 | - datauniquenesssol 6 | - errorssol 7 | - governancelibsol 8 | - ipsol 9 | - licensingsol 10 | - metatxsol 11 | - pilframeworkerrorssol 12 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/accesspermissionmd.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: AccessPermission.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Library for IPAccount access control permissions. These permissions are used by the AccessController. 14 | 15 | ### ABSTAIN 16 | 17 | ```solidity 18 | uint8 ABSTAIN 19 | ``` 20 | 21 | ABSTAIN means having not enough information to make decision at current level, deferred decision to up\ 22 | level permission. 23 | 24 | ### ALLOW 25 | 26 | ```solidity 27 | uint8 ALLOW 28 | ``` 29 | 30 | ALLOW means the permission is granted to transaction signer to call the function. 31 | 32 | ### DENY 33 | 34 | ```solidity 35 | uint8 DENY 36 | ``` 37 | 38 | DENY means the permission is denied to transaction signer to call the function. 39 | 40 | ### Permission 41 | 42 | This struct is used to represent permissions in batch operations within the AccessController. 43 | 44 | #### Parameters 45 | 46 | | Name | Type | Description | 47 | | ---- | ---- | ----------- | 48 | 49 | ```solidity 50 | struct Permission { 51 | address ipAccount; 52 | address signer; 53 | address to; 54 | bytes4 func; 55 | uint8 permission; 56 | } 57 | ``` 58 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/arrayutilssol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ArrayUtils.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Library for address array operations 14 | 15 | ### indexOf 16 | 17 | ```solidity 18 | function indexOf(address[] _array, address _element) internal pure returns (uint32, bool) 19 | ``` 20 | 21 | Finds the index of the first occurrence of the given element. 22 | 23 | #### Parameters 24 | 25 | 26 | 27 | 28 | 31 | 32 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 49 | 50 | 57 | 58 | 61 | 62 | 63 | 64 | 69 | 70 | 73 | 74 | 77 | 78 | 79 |
29 | Name 30 | 33 | Type 34 | 37 | Description 38 |
45 | \_ 46 | 47 | array 48 | 51 | address 52 | 53 | \[ 54 | 55 | ] 56 | 59 | The input array to search 60 |
65 | \_ 66 | 67 | element 68 | 71 | address 72 | 75 | The value to find 76 |
80 | 81 | #### Return Values 82 | 83 | 84 | 85 | 86 | 89 | 90 | 93 | 94 | 97 | 98 | 99 | 100 | 101 | 102 | 105 | 106 | 109 | 110 | 113 | 114 | 115 | 116 | 119 | 120 | 123 | 124 | 127 | 128 | 129 |
87 | Name 88 | 91 | Type 92 | 95 | Description 96 |
103 | \[0] 104 | 107 | uint32 108 | 111 | Returns (index and isIn) for the first occurrence starting from index 0 112 |
117 | \[1] 118 | 121 | bool 122 | 125 | 126 |
130 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/datauniquenesssol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: DataUniqueness.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Library to store data without repetition, assigning an id to it if new or reusing existing one if already stored 14 | 15 | ### addIdOrGetExisting 16 | 17 | ```solidity 18 | function addIdOrGetExisting(bytes data, mapping(bytes32 => uint256) _hashToIds, uint256 existingIds) internal returns (uint256 id, bool isNew) 19 | ``` 20 | 21 | Stores data without repetition, assigning an id to it if new or reusing existing one if already stored 22 | 23 | #### Parameters 24 | 25 | 26 | 27 | 28 | 31 | 32 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 51 | 52 | 55 | 56 | 57 | 58 | 63 | 64 | 67 | 68 | 71 | 72 | 73 | 74 | 77 | 78 | 81 | 82 | 85 | 86 | 87 |
29 | Name 30 | 33 | Type 34 | 37 | Description 38 |
45 | data 46 | 49 | bytes 50 | 53 | raw bytes, abi.encode() a value to be hashed 54 |
59 | \_ 60 | 61 | hashToIds 62 | 65 | mapping(bytes32 => uint256) 66 | 69 | storage ref to the mapping of hash -> data id 70 |
75 | existingIds 76 | 79 | uint256 80 | 83 | amount of distinct data stored. 84 |
88 | 89 | #### Return Values 90 | 91 | | Name | Type | Description | 92 | | ----- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | 93 | | id | uint256 | new sequential id if new data, reused id if not new | 94 | | isNew | bool | True if a new id was generated, signaling the value was stored in \_hashToIds. False if id is reused and data was not stored | 95 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/governancelibsol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GovernanceLib.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | *This library provides types for Story Protocol Governance.* 14 | 15 | ### PROTOCOL\_ADMIN 16 | 17 | ```solidity 18 | bytes32 PROTOCOL_ADMIN 19 | ``` 20 | 21 | ### ProtocolState 22 | 23 | An enum containing the different states the protocol can be in. 24 | 25 | #### Parameters 26 | 27 | | Name | Type | Description | 28 | | ---- | ---- | ----------- | 29 | 30 | ```solidity 31 | enum ProtocolState { 32 | Unpaused, 33 | Paused 34 | } 35 | ``` 36 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Libraries 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Libraries used by Story Protocol's core protocol contracts. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/ipsol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IP.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Library for constants, structs, and helper functions used for IP. 14 | 15 | ### MetadataV1 16 | 17 | Core metadata to associate with each IP. 18 | 19 | ```solidity 20 | struct MetadataV1 { 21 | string name; 22 | bytes32 hash; 23 | uint64 registrationDate; 24 | address registrant; 25 | string uri; 26 | } 27 | ``` 28 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/licensingsol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Licensing.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Types and constants used by the licensing related contracts 14 | 15 | ### Policy 16 | 17 | A particular configuration (flavor) of a Policy Framework, setting values for the licensing\ 18 | terms (parameters) of the framework. 19 | 20 | #### Parameters 21 | 22 | | Name | Type | Description | 23 | | ---- | ---- | ----------- | 24 | 25 | ```solidity 26 | struct Policy { 27 | bool isLicenseTransferable; 28 | address policyFramework; 29 | bytes frameworkData; 30 | address royaltyPolicy; 31 | bytes royaltyData; 32 | uint256 mintingFee; 33 | address mintingFeeToken; 34 | } 35 | ``` 36 | 37 | ### License 38 | 39 | Data that define a License Agreement NFT 40 | 41 | #### Parameters 42 | 43 | | Name | Type | Description | 44 | | ---- | ---- | ----------- | 45 | 46 | ```solidity 47 | struct License { 48 | uint256 policyId; 49 | address licensorIpId; 50 | bool transferable; 51 | } 52 | ``` 53 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/metatxsol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: MetaTx.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | *This library provides functions for handling meta-transactions in the Story Protocol.* 14 | 15 | ### EIP712\_DOMAIN\_VERSION 16 | 17 | ```solidity 18 | string EIP712_DOMAIN_VERSION 19 | ``` 20 | 21 | *Version of the EIP712 domain.* 22 | 23 | ### EIP712\_DOMAIN\_VERSION\_HASH 24 | 25 | ```solidity 26 | bytes32 EIP712_DOMAIN_VERSION_HASH 27 | ``` 28 | 29 | *Hash of the EIP712 domain version.* 30 | 31 | ### EIP712\_DOMAIN 32 | 33 | ```solidity 34 | bytes32 EIP712_DOMAIN 35 | ``` 36 | 37 | *EIP712 domain type hash.* 38 | 39 | ### EXECUTE 40 | 41 | ```solidity 42 | bytes32 EXECUTE 43 | ``` 44 | 45 | *Execute type hash.* 46 | 47 | ### Execute 48 | 49 | *Structure for the Execute type.* 50 | 51 | ```solidity 52 | struct Execute { 53 | address to; 54 | uint256 value; 55 | bytes data; 56 | uint256 nonce; 57 | uint256 deadline; 58 | } 59 | ``` 60 | 61 | ### calculateDomainSeparator 62 | 63 | ```solidity 64 | function calculateDomainSeparator() internal view returns (bytes32) 65 | ``` 66 | 67 | *Calculates the EIP712 domain separator for the current contract.* 68 | 69 | #### Return Values 70 | 71 | | Name | Type | Description | 72 | | ---- | ------- | ---------------------------- | 73 | | \[0] | bytes32 | The EIP712 domain separator. | 74 | 75 | ### calculateDomainSeparator 76 | 77 | ```solidity 78 | function calculateDomainSeparator(address ipAccount) internal view returns (bytes32) 79 | ``` 80 | 81 | *Calculates the EIP712 domain separator for a given IP account.* 82 | 83 | #### Parameters 84 | 85 | | Name | Type | Description | 86 | | --------- | ------- | ----------------------------------------------------------- | 87 | | ipAccount | address | The IP account for which to calculate the domain separator. | 88 | 89 | #### Return Values 90 | 91 | | Name | Type | Description | 92 | | ---- | ------- | ---------------------------- | 93 | | \[0] | bytes32 | The EIP712 domain separator. | 94 | 95 | ### getExecuteStructHash 96 | 97 | ```solidity 98 | function getExecuteStructHash(struct MetaTx.Execute execute) internal pure returns (bytes32) 99 | ``` 100 | 101 | *Calculates the EIP712 struct hash of an Execute.* 102 | 103 | #### Parameters 104 | 105 | | Name | Type | Description | 106 | | ------- | --------------------- | -------------------- | 107 | | execute | struct MetaTx.Execute | The Execute to hash. | 108 | 109 | #### Return Values 110 | 111 | | Name | Type | Description | 112 | | ---- | ------- | -------------------------------------- | 113 | | \[0] | bytes32 | The EIP712 struct hash of the Execute. | 114 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/modulemd.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Module.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## MODULE\_TYPE\_DEFAULT 14 | 15 | ```solidity 16 | string MODULE_TYPE_DEFAULT 17 | ``` 18 | 19 | ## MODULE\_TYPE\_HOOK 20 | 21 | ```solidity 22 | string MODULE_TYPE_HOOK 23 | ``` 24 | 25 | ## IP\_RESOLVER\_MODULE\_KEY 26 | 27 | ```solidity 28 | string IP_RESOLVER_MODULE_KEY 29 | ``` 30 | 31 | ## REGISTRATION\_MODULE\_KEY 32 | 33 | ```solidity 34 | string REGISTRATION_MODULE_KEY 35 | ``` 36 | 37 | ## LICENSING\_MODULE\_KEY 38 | 39 | ```solidity 40 | string LICENSING_MODULE_KEY 41 | ``` 42 | 43 | ## DISPUTE\_MODULE\_KEY 44 | 45 | ```solidity 46 | string DISPUTE_MODULE_KEY 47 | ``` 48 | 49 | ## TAGGING\_MODULE\_KEY 50 | 51 | ```solidity 52 | string TAGGING_MODULE_KEY 53 | ``` 54 | 55 | ## ROYALTY\_MODULE\_KEY 56 | 57 | ```solidity 58 | string ROYALTY_MODULE_KEY 59 | ``` 60 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/libraries/pilframeworkerrorssol.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: PILFrameworkErrors.sol 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Library for all PILFramework related contract errors. 14 | 15 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddAttribution 16 | 17 | ```solidity 18 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddAttribution() 19 | ``` 20 | 21 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddCommercializers 22 | 23 | ```solidity 24 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddCommercializers() 25 | ``` 26 | 27 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddRevShare 28 | 29 | ```solidity 30 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddRevShare() 31 | ``` 32 | 33 | ### PILPolicyFrameworkManager\_\_DerivativesDisabled\_CantAddAttribution 34 | 35 | ```solidity 36 | error PILPolicyFrameworkManager__DerivativesDisabled_CantAddAttribution() 37 | ``` 38 | 39 | ### PILPolicyFrameworkManager\_\_DerivativesDisabled\_CantAddApproval 40 | 41 | ```solidity 42 | error PILPolicyFrameworkManager__DerivativesDisabled_CantAddApproval() 43 | ``` 44 | 45 | ### PILPolicyFrameworkManager\_\_DerivativesDisabled\_CantAddReciprocal 46 | 47 | ```solidity 48 | error PILPolicyFrameworkManager__DerivativesDisabled_CantAddReciprocal() 49 | ``` 50 | 51 | ### PILPolicyFrameworkManager\_\_RightsNotFound 52 | 53 | ```solidity 54 | error PILPolicyFrameworkManager__RightsNotFound() 55 | ``` 56 | 57 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddRoyaltyPolicy 58 | 59 | ```solidity 60 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddRoyaltyPolicy() 61 | ``` 62 | 63 | ### PILPolicyFrameworkManager\_\_CommercialEnabled\_RoyaltyPolicyRequired 64 | 65 | ```solidity 66 | error PILPolicyFrameworkManager__CommercialEnabled_RoyaltyPolicyRequired() 67 | ``` 68 | 69 | ### PILPolicyFrameworkManager\_\_ReciprocalButDifferentPolicyIds 70 | 71 | ```solidity 72 | error PILPolicyFrameworkManager__ReciprocalButDifferentPolicyIds() 73 | ``` 74 | 75 | ### PILPolicyFrameworkManager\_\_ReciprocalValueMismatch 76 | 77 | ```solidity 78 | error PILPolicyFrameworkManager__ReciprocalValueMismatch() 79 | ``` 80 | 81 | ### PILPolicyFrameworkManager\_\_CommercialValueMismatch 82 | 83 | ```solidity 84 | error PILPolicyFrameworkManager__CommercialValueMismatch() 85 | ``` 86 | 87 | ### PILPolicyFrameworkManager\_\_StringArrayMismatch 88 | 89 | ```solidity 90 | error PILPolicyFrameworkManager__StringArrayMismatch() 91 | ``` 92 | 93 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddMintingFee 94 | 95 | ```solidity 96 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddMintingFee() 97 | ``` 98 | 99 | ### PILPolicyFrameworkManager\_\_CommercialDisabled\_CantAddMintingFeeToken 100 | 101 | ```solidity 102 | error PILPolicyFrameworkManager__CommercialDisabled_CantAddMintingFeeToken() 103 | ``` 104 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/_order.yaml: -------------------------------------------------------------------------------- 1 | - royalty-2 2 | - dispute-2 3 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/dispute-2/_order.yaml: -------------------------------------------------------------------------------- 1 | - arbitrationpolicyspsol 2 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/dispute-2/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dispute 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Policies for Dispute Module provided by Story Protocol. 14 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Policies 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/royalty-2/_order.yaml: -------------------------------------------------------------------------------- 1 | - ancestorvaultlapsol 2 | - royaltypolicylapsol 3 | -------------------------------------------------------------------------------- /docs/Smart Contract Reference/policy-1/royalty-2/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Royalty 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Policies for Royalty Module provided by Story Protocol. 14 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/_order.yaml: -------------------------------------------------------------------------------- 1 | - story-architect-overview 2 | - story-node-structure 3 | - network-info 4 | - operating-a-node 5 | - become-a-validator 6 | - tokenomics-staking 7 | - infrastructure-partners 8 | - more 9 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/become-a-validator/_order.yaml: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/_order.yaml: -------------------------------------------------------------------------------- 1 | - additional-resources 2 | - network-faq 3 | - oracle 4 | - become-a-validator 5 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/additional-resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Additional Resources 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | 14 | # Additional Resources 15 | 16 | ## Github 17 | 18 | - [Story Github](https://github.com/piplabs/story) 19 | - [Story-geth Github](https://github.com/piplabs/story-geth) 20 | 21 | ## SIP Repository 22 | 23 | - [SIP Repository](https://github.com/storyprotocol/SIPs) 24 | 25 | ## Community Forum 26 | 27 | - [Story Forum](https://forum.story.foundation/) -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🔽 More... 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/oracle/_order.yaml: -------------------------------------------------------------------------------- 1 | - gelato 2 | - pyth 3 | - redstone 4 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/oracle/gelato.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gelato 3 | excerpt: >- 4 | Gelato Network automates smart contract execution across major blockchains. 5 | Its products include decentralized automation, Web3 Functions, Gasless 6 | Transactions, and Gelato VRF for secure, verifiable randomness. 7 | deprecated: false 8 | hidden: false 9 | metadata: 10 | robots: index 11 | --- 12 | # VRF 13 | 14 | Gelato VRF provides verifiable randomness for blockchain applications by utilizing Drand, a decentralized and trusted source of random numbers. It ensures that developers receive truly random values that are both provable and tamper-resistant. 15 | 16 | See Gelato's [Documentation](\[https://docs.gelato.network/web3-services/vrf]\(https://docs.gelato.network/web3-services/vrf\)) guide to integrate your application with their price feeds. 17 | 18 | ## Smart Contracts 19 | 20 | ### Functions and VRF 21 | 22 | #### Mainnet 23 | 24 | ##### [EIP173Proxy.sol](https://www.storyscan.xyz/address/0xafd37d0558255aA687167560cd3AaeEa75c2841E) 25 | 26 | ``` 27 | 0xafd37d0558255aA687167560cd3AaeEa75c2841E 28 | ``` 29 | 30 | ##### [Automate.sol](https://www.storyscan.xyz/address/0xab2c44495F5F954149b94C750ca20B64ea60B51c) 31 | 32 | ``` 33 | 0xab2c44495F5F954149b94C750ca20B64ea60B51c 34 | ``` 35 | 36 | ### Relays 37 | 38 | #### Mainnet 39 | 40 | ##### GelatoRelay 41 | 42 | Relay method: `callWithSyncFee` 43 | 44 | ###### EIP173Proxy.sol 45 | 46 | ``` 47 | 0xcd565435e0d2109feFde337a66491541Df0D1420 48 | ``` 49 | 50 | ##### 51 | 52 | ###### GelatoRelay.sol 53 | 54 | ``` 55 | 0xA75983F686999843804a2ECC0E93C35d39a4F750 56 | ``` 57 | 58 | ##### GelatoRelayERC2771.sol 59 | 60 | Relay method: `callWithSyncFeeERC2771` 61 | 62 | ``` 63 | 0x8aCE64CEA52b409F930f60B516F65197faD4B056 64 | ``` 65 | 66 | ##### GelatoRelayConcurrentERC2771.sol 67 | 68 | Relay method: `callWithSyncFeeERC2771` with `isConcurrent: true` 69 | 70 | ``` 71 | 0xc7739c195618D314C08E8626C98f8573E4E43634 72 | ``` 73 | 74 | ##### GelatoRelay1BalanceERC2771.sol 75 | 76 | Relay method: `sponsoredCallERC2771` 77 | 78 | ``` 79 | 0x61F2976610970AFeDc1d83229e1E21bdc3D5cbE4 80 | ``` -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/oracle/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Oracles 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /docs/Story Network (L1)/more/oracle/redstone.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Redstone 3 | excerpt: >- 4 | Redstone is a decentralized oracle network designed to deliver customizable 5 | data feeds for smart contracts and DeFi protocols. It uses a unique off-chain 6 | data delivery model where data is signed and bundled off-chain, then submitted 7 | on-chain only when needed. 8 | deprecated: false 9 | hidden: false 10 | metadata: 11 | robots: index 12 | --- 13 | # Price Feeds 14 | 15 | Redstone delivers real-time financial data to smart contracts on 70+ blockchains, covering crypto, RWAs, LRTs, BTCFi, and other emerging assets. Combining institutional and crypto-native data, Redstone ensures reliability through multi-layered validation, including anomaly detection, market depth analysis, and cross-source variance checks. 16 | 17 | See Redstone's [Documentation](https://docs.redstone.finance/docs/introduction) guide to integrate your application with their price feeds. 18 | 19 | ## Smart Contracts 20 | 21 | ### ETH 22 | 23 | #### TransparentUpgradeableProxy 24 | 25 | ``` 26 | 0x22d47686b3AEC9068768f84EFD8Ce2637a347B0A 27 | ``` 28 | 29 | #### StoryPriceFeedEthWithoutRoundsV1 30 | 31 | ``` 32 | 0xb9D0073aCb296719C26a8BF156e4b599174fe1d5 33 | ``` 34 | 35 | ### BTC 36 | 37 | #### TransparentUpgradeableProxy 38 | 39 | ``` 40 | 0xc44be6D00307c3565FDf753e852Fc003036cBc13 41 | ``` 42 | 43 | #### StoryPriceFeedBtcWithoutRoundsV1 44 | 45 | ``` 46 | 0xE23eCA12D7D2ED3829499556F6dCE06642AFd990 47 | ``` 48 | 49 | ### USDC 50 | 51 | #### TransparentUpgradeableProxy 52 | 53 | ``` 54 | 0xED2B1ca5D7E246f615c2291De309643D41FeC97e 55 | ``` 56 | 57 | #### StoryPriceFeedUsdcWithoutRoundsV1 58 | 59 | ``` 60 | 0x31a36CdF4465ba61ce78F5CDbA26FDF8ec361803 61 | ``` 62 | 63 | ### USDT 64 | 65 | #### TransparentUpgradeableProxy 66 | 67 | ``` 68 | 0x7A9b672fc20b5C89D6774514052b3e0899E5E263 69 | ``` 70 | 71 | #### StoryPriceFeedUsdtWithoutRoundsV1 72 | 73 | ``` 74 | 0xe8D9FbC10e00ecc9f0694617075fDAF657a76FB2 75 | ``` -------------------------------------------------------------------------------- /docs/Story Network (L1)/network-info/_order.yaml: -------------------------------------------------------------------------------- 1 | - mainnet 2 | - aeneid 3 | - localnet 4 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/network-info/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🌐 Network Info 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | # Overview 14 | 15 | Story Network is a purpose-built layer 1 blockchain achieving the best of EVM and Cosmos SDK. It is 100% EVM-compatible alongside deep execution layer optimizations to support graph data structures, purpose-built for handling complex data structures like IP quickly and cost-efficiently. It does this by: 16 | 17 | * using precompiled primitives to traverse complex data structures like IP graphs within seconds at marginal costs 18 | * a consensus layer based on the mature CometBFT stack to ensure fast finality and cheap transactions 19 | * a modular architecture that decouples consensus from execution via Ethereum’s Engine-API 20 | 21 | # Available Network 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/operating-a-node/_order.yaml: -------------------------------------------------------------------------------- 1 | - node-setup-mainnet 2 | - operate-your-node 3 | - node-upgrade 4 | - release-notes 5 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/operating-a-node/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🖥️ Operating a Node 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /docs/Story Network (L1)/operating-a-node/node-upgrade.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Node Upgrade 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- 8 | There are three types of upgrades 9 | 10 | 1. Upgrade the story geth client 11 | 2. Upgrade the story client manually 12 | 3. Schedule the upgrade with Cosmovisor 13 | 14 | ### Upgrade the story geth client 15 | 16 | ```bash 17 | # Stop the services 18 | sudo systemctl stop story 19 | sudo systemctl stop story-geth 20 | 21 | # Download the new binary 22 | wget ${STORY_GETH_BINARY_URL} 23 | sudo mv ./geth-linux-amd64 story-geth 24 | sudo chmod +x story-geth 25 | sudo mv ./story-geth $HOME/go/bin/story-geth 26 | source $HOME/.bashrc 27 | 28 | # Restart the service 29 | sudo systemctl start story-geth 30 | sudo systemctl start story 31 | ``` 32 | 33 | ### Upgrade the story client manually 34 | 35 | ```bash 36 | # Stop the service 37 | sudo systemctl stop story 38 | 39 | # Download the new binary 40 | wget ${STORY_BINARY_URL} 41 | sudo mv story-linux-amd64 story 42 | sudo chmod +x story 43 | sudo mv ./story $HOME/go/bin/story 44 | 45 | # Schedule the update 46 | sudo systemctl start story 47 | ``` 48 | 49 | ### Schedule the upgrade with Cosmovisor 50 | 51 | The following steps outline how to schedule an upgrade using Cosmovisor: 52 | 53 | 1. Create the upgrade directory and download the new binary 54 | 55 | ```bash 56 | # Download the new binary 57 | wget ${STORY_BINARY_URL} 58 | 59 | # Schedule the upgrade 60 | source $HOME/.bash_profile 61 | cosmovisor add-upgrade ${UPGRADE_NAME} ${UPGRADE_PATH} \ 62 | --force \ 63 | --upgrade-height ${UPGRADE_HEIGHT} 64 | ``` 65 | 66 | 2. Verify the upgrade configuration 67 | 68 | ```bash 69 | # Check the upgrade info 70 | cat $HOME/.story/data/upgrade-info.json 71 | ``` 72 | 73 | The upgrade-info.json should show: 74 | 75 | ```json 76 | { 77 | "name": "v1.0.0", 78 | "time": "2025-02-05T12:00:00Z", 79 | "height": 858000 80 | } 81 | ``` 82 | 83 | 3. Monitor the upgrade 84 | 85 | ```bash 86 | # Watch the node logs for the upgrade 87 | journalctl -u story -f -o cat 88 | ``` 89 | 90 | Note: Cosmovisor will automatically handle the binary switch once the specified block height is reached. Before the upgrade, confirm that your node is fully synced and has enough disk space available. -------------------------------------------------------------------------------- /docs/Story Network (L1)/operating-a-node/operate-your-node.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Operating Your Node 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## **1. Setting Up a Geth Archive Node** 14 | To run a Geth archive node, use `--gcmode=archive` instead of `--gcmode=full`. This ensures that Geth retains all historical blockchain state data, making it ideal for indexing services and blockchain analytics. 15 | 16 | - `--syncmode=full`: Ensures a complete blockchain sync. 17 | - `--gcmode=archive`: Retains full historical state data without pruning. 18 | 19 | --- 20 | 21 | ## **2. Enabling RPC (HTTP) and WebSocket in Geth** 22 | ### **HTTP (RPC) Options** 23 | | Option | Description | 24 | |--------|------------| 25 | | `--http` | Enables the HTTP-RPC server. | 26 | | `--http.addr=0.0.0.0` | Binds the HTTP server to all network interfaces. | 27 | | `--http.port=8545` | Sets the HTTP-RPC port (default: 8545). | 28 | | `--http.vhosts=*` | Allows requests from any domain (use with caution in production). | 29 | | `--http.api=web3,eth,txpool,net,engine,debug` | Specifies the available APIs for HTTP requests. | 30 | 31 | ### **WebSocket (WS) Options** 32 | | Option | Description | 33 | |--------|------------| 34 | | `--ws` | Enables the WebSocket server. | 35 | | `--ws.addr=0.0.0.0` | Binds the WebSocket server to all network interfaces. | 36 | | `--ws.port=8546` | Sets the WebSocket port (default: 8546). | 37 | | `--ws.origins=*` | Allows WebSocket connections from any domain (use with caution in production). | 38 | | `--ws.api=web3,eth,txpool,net,engine,debug` | Specifies the available APIs for WebSocket connections. | 39 | 40 | These configurations ensure external applications can interact with the Geth node using both HTTP-RPC and WebSocket. 41 | 42 | --- 43 | 44 | ## **3. Monitoring Geth and Story Protocol** 45 | ### **Geth Monitoring Configuration** 46 | - `--metrics`: Enables Prometheus-compatible metrics for Geth. 47 | - `--metrics.addr=0.0.0.0`: Binds the metrics server to all interfaces. 48 | - `--metrics.port=6060`: Exposes metrics on port `6060`. 49 | 50 | ### **Story Protocol Monitoring** 51 | - Modify `config.toml` and set: 52 | ```toml 53 | prometheus = true 54 | ``` 55 | - The default Prometheus metrics port for Story Protocol is `26660`. 56 | 57 | With these settings, both Geth and Story Protocol expose monitoring metrics that can be collected using Prometheus and visualized with Grafana. -------------------------------------------------------------------------------- /docs/Story Network (L1)/operating-a-node/release-notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Release Notes 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- 8 | This page provides information on the story execution and consensus client software release information. You may find execution client releases in [story-geth](https://github.com/piplabs/story-geth/releases) repo, and consensus client releases in [story](https://github.com/piplabs/story/releases) repo. 9 | 10 | ### Production releases 11 | 12 | There are generally four types of releases: 13 | * Major: It requires hardfork upgrade with a predefined upgrade height. Node operators need to upgrade before or on the height. The release will increase minor version number. 14 | * Minor: It doesn't require hardfork upgrade. Node operators are required to upgrade binaries as soon as possible. The release will increase patch version number. 15 | * Fix: It is an urgent fix. Node operators are required to upgrade binaries as soon as possible. The release will increase minor version or patch version number. 16 | * Optional: It is an optional fix. Node operators can upgrade binaries based on needs. The release will increase patch version number. 17 | 18 | Each release comes with a release note describing a list of new features or fixes. Released software binaries are also attached in the release note. We currently provide binaries supporting four types of systems: darwin-amd64, darwin-arm64, linux-amd64, and linux-arm64. You may also build your binaries using the commit hash in the release note. 19 | 20 | ### Release entries 21 | 22 | Refer to the following release matrix to run nodes for Mainnet and Aeneid Testnet. 23 | 24 | | Network | story-geth | story | 25 | |---------|------------|--------| 26 | | Mainnet | v1.0.1 | v1.1.0 | 27 | | Aeneid | v1.0.1 | v1.1.0 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/_order.yaml: -------------------------------------------------------------------------------- 1 | - story-node-structure 2 | - engine-api 3 | - cosmos-modules 4 | - overview 5 | - precompile 6 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/cosmos-modules/_order.yaml: -------------------------------------------------------------------------------- 1 | - cosmos-module-overview 2 | - evmengine-module 3 | - evmstaking-module 4 | - mint-module 5 | - staking-module 6 | -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/cosmos-modules/cosmos-module-overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List of Modules 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | # List of Modules 14 | 15 | Here is a list of all production-grade modules that can be used on the Story blockchain, along with their respective documentation: 16 | 17 | * [evmengine](./evmengine-module) - Handles Cosmos-side logics on each EVM state transition via the [Engine API](engine-api). 18 | * [evmstaking](./evmstaking-module) - Handles staking and network emission logics with queues. 19 | * [mint](./mint-module) 20 | 21 | ## Cosmos SDK (modified) 22 | 23 | Story network uses the following Cosmos SDK modules with some modifications: 24 | 25 | * [staking](./staking-module) 26 | * [distribution](https://docs.cosmos.network/main/build/modules/distribution) 27 | 28 | ## Cosmos SDK (unmodified) 29 | 30 | Story network uses the following Cosmos SDK modules without non-trivial modifications: 31 | 32 | * [auth](https://docs.cosmos.network/main/build/modules/auth) 33 | * [bank](https://docs.cosmos.network/main/build/modules/bank) 34 | * [consensusparams](https://docs.cosmos.network/main/build/modules/consensus) 35 | * [gov](https://docs.cosmos.network/main/build/modules/gov) 36 | * [slashing](https://docs.cosmos.network/main/build/modules/slashing) 37 | * [upgrade](https://docs.cosmos.network/main/build/modules/upgrade) -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/cosmos-modules/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cosmos Modules 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/cosmos-modules/mint-module.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: mint 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | ## Contents 14 | 15 | 1. [Contents](#contents) 16 | 2. [State](#state) 17 | 3. [Begin Block](#begin-block) 18 | 4. [Parameters](#parameters) 19 | 5. [Events](#events) 20 | 21 | ## State 22 | 23 | ### Params 24 | 25 | * Params: `mint/params -> legacy_amino(params)` 26 | 27 | ```protobuf protobuf 28 | message Params { 29 | option (amino.name) = "client/x/mint/Params"; 30 | 31 | // type of coin to mint 32 | string mint_denom = 1; 33 | // inflation amount per year 34 | string inflations_per_year = 2 [ 35 | (cosmos_proto.scalar) = "cosmos.Dec", 36 | (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", 37 | (gogoproto.nullable) = false 38 | ]; 39 | // expected blocks per year 40 | uint64 blocks_per_year = 3; 41 | } 42 | ``` 43 | 44 | ## Begin Block 45 | 46 | Minting parameters are calculated and inflation paid at the beginning of each block. 47 | 48 | ### Inflation amount calculation 49 | 50 | Inflation amount is calculated using an "inflation calculation function" that's\ 51 | passed to the `NewAppModule` function. If no function is passed, then the SDK's 52 | default inflation function will be used (`DefaultInflationCalculationFn`). In case a custom 53 | inflation calculation logic is needed, this can be achieved by defining and 54 | passing a function that matches `InflationCalculationFn`'s signature. 55 | 56 | ```go 57 | type InflationCalculationFn func(ctx sdk.Context, minter Minter, params Params, bondedRatio math.LegacyDec) math.LegacyDec 58 | ``` 59 | 60 | ## Parameters 61 | 62 | The minting module contains the following parameters: 63 | 64 | | Key | Type | Example | 65 | | ----------------- | --------------- | ------------------- | 66 | | MintDenom | string | "stake" | 67 | | InflationsPerYear | string (dec) | "20000000000000000" | 68 | | BlocksPerYear | string (uint64) | "10368000" | 69 | 70 | * `MintDenom` is the coin denominator used. 71 | * `InflationsPerYear` is the target inflation per year, in 1e18 decimals. 72 | * `BlocksPerYear` is the target number of blocks per year. 73 | 74 | ## Events 75 | 76 | The minting module emits the following events: 77 | 78 | ### BeginBlocker 79 | 80 | | Type | Attribute Key | Attribute Value | 81 | | :--- | :------------ | :-------------- | 82 | | mint | amount | "1000" | -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/cosmos-modules/staking-module.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: staking 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- 8 | ## Abstrat 9 | 10 | The staking module has been modified to accommodate for the following changes below. Refer to the Cosmos SDK's [staking module docs](https://docs.cosmos.network/main/build/modules/staking) for more information. 11 | 12 | ## Reward Multiplier 13 | 14 | ### Validators 15 | 16 | Validators can choose to accept either locked tokens or unlocked tokens as delegations. Validators for locked tokens are conditioned to half the inflation allocation of validators for unlocked tokens. 17 | 18 | Since each validator receives different inflation distribution based on delegations, the inflation distribution Ivi for validator vi in the rewards pool is calculated as follows: 19 | 20 | 21 | 22 | where 23 | 24 | * Ivi is the total inflationary token rewards for vi 25 | * Svi is the staked tokens for vi 26 | * Mvi is the rewards multiplier for vi 27 | * 0.5 for locked tokens 28 | * 1 for unlocked tokens 29 | * Rn is the total inflationary tokens allocated for the rewards pool in block n, calculated in the [mint](./mint-module.md) module 30 | 31 | ### Delegations 32 | 33 | Delegators can delegate with four different staking lock times, which results in different staking reward multiplier for each delegation (delegator-validator pair of stakes). The inflation distribution for each delegation Di is calculated as follows: 34 | 35 | 36 | 37 | where 38 | 39 | * Sdi is the staked tokens of delegation di on validator vd 40 | * Mdi is the rewards multiplier of di on vd 41 | * Iv is the total inflationary token rewards for vd 42 | * Cv is the commission rate for vd 43 | 44 | #### Time-weighted Reward Multiplier Mdi 45 | 46 | * *Flexible* (no lockup): 1 47 | * *Short* (90 days): 1.1 48 | * *Medium* (360 days): 1.5 49 | * *Long* (540 days): 2.0 -------------------------------------------------------------------------------- /docs/Story Network (L1)/story-node-structure/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 🏗️ Node Architecture 3 | excerpt: Overview of Story's modular architecture 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Story is a purpose-built modular blockchain fully EVM compatible using Cosmos SDK and CometBFT to achieve fast block time and one-shot finality. A Story node consists of two clients: `story-geth` as the execution client (EL) and a `story` as the consensus client (CL). These clients communicate via the [Engine API interface](doc:engine-api) defined by [Ethereum](https://hackmd.io/@danielrachi/engine_api). 14 | 15 | `story-geth` is a fork of the Geth client, with the addition of the [IPGraph Precompile](doc:precompile) and [RIP-7212](https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md) precompile. It handles transaction execution, broadcasting and state storage while maintaining full compatibility with the Ethereum Virtual Machine (EVM) and supporting all Ethereum JSON-RPC methods. 16 | 17 | `story` is built on the Cosmos SDK and CometBFT. The Cosmos SDK provides a modular framework for building blockchain applications, enabling seamless integration of new modules and features while allowing the network to be easily extended and customized. `story` client introduces upgrades and additional Cosmos SDK modules to support Engine API integration and novel staking mechanisms. CometBFT, a high-performance, scalable, and secure consensus engine, has been extensively tested within the Cosmos ecosystem. CometBFT and Cosmos SDK communicate through ABCI++ interface(link to ABCI++ spec). 18 | 19 | 20 | 21 | > 🚧 Warning 22 | > 23 | > Do not use `RANDAO` for pseudo-randomness, instead use onchain VRF (Pyth or Gelato). Currently, `RANDAO` value is set as the parent block hash and thus is not random for X-1 block. -------------------------------------------------------------------------------- /docs/_order.yaml: -------------------------------------------------------------------------------- 1 | - Introduction 2 | - Story Network (L1) 3 | - Protocol Concepts 4 | - Developers 5 | - SDK Reference 6 | - Smart Contract Reference 7 | - Ecosystem & Governance 8 | - Archive 9 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/_order.yaml: -------------------------------------------------------------------------------- 1 | - cosmos-origin 2 | - story-extend 3 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/_order.yaml: -------------------------------------------------------------------------------- 1 | - cosmos-originstaking 2 | - cosmos-origindistribution 3 | - cosmos-originbank 4 | - cosmos-originauth 5 | - cosmos-originmint 6 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originauth/_order.yaml: -------------------------------------------------------------------------------- 1 | - getauthparams 2 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originauth/getauthparams.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetAuthParams 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_auth-params 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originauth/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Auth 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/_order.yaml: -------------------------------------------------------------------------------- 1 | - getbankparams 2 | - getbanksupplybydenom 3 | - getbankbalancesaddressbydenom 4 | - getbankspendablebalancesaddressbydenom 5 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/getbankbalancesaddressbydenom.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetBalancesByAddressDenom 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_bank-balances-address-by-denom 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/getbankparams.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetBankParams 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_bank-params 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/getbankspendablebalancesaddressbydenom.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetSpendableBalancesByAddressDenom 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_bank-spendable-balances-address-by-denom 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/getbanksupplybydenom.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetSupplyByDenom 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_bank-supply-by-denom 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originbank/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bank 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/_order.yaml: -------------------------------------------------------------------------------- 1 | - getdistributionparams 2 | - getdistributiondelegatorsdelegatoraddressvalidators 3 | - getdistributiondelegatorsdelegatoraddressrewardsvalidatoraddress 4 | - getdistributionvalidatorsvalidatoraddress 5 | - getdistributionvalidatorsvalidatoraddresscommission 6 | - getdistributionvalidatorsvalidatoraddressoutstandingrewards 7 | - getdistributionvalidatorsvalidatoraddressslashes 8 | - getdistributiondelegatorsdelegatoraddressrewards 9 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributiondelegatorsdelegatoraddressrewards.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDelegatorRewardsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-delegators-delegator-address-rewards 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributiondelegatorsdelegatoraddressrewardsvalidatoraddress.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDelegatorRewardsByDelegatorAddressValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-delegators-delegator-address-rewards-validator-address 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributiondelegatorsdelegatoraddressvalidators.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDistributionValidatorsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-delegators-delegator-address-validators 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributionparams.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDistributionParams 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-params 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributionvalidatorsvalidatoraddress.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDistributionValidatorByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-validators-validator-address 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributionvalidatorsvalidatoraddresscommission.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorCommissionByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-validators-validator-address-commission 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributionvalidatorsvalidatoraddressoutstandingrewards.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorOutstandingRewardsByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-validators-validator-address-outstanding-rewards 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/getdistributionvalidatorsvalidatoraddressslashes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorSlashesByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_distribution-validators-validator-address-slashes 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-origindistribution/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Distribution 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originmint/_order.yaml: -------------------------------------------------------------------------------- 1 | - getmintparams 2 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originmint/getmintparams.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetMintParams 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_mint-params 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originmint/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mint 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/_order.yaml: -------------------------------------------------------------------------------- 1 | - getstakingvalidators 2 | - getstakingvalidatorsvalidatoraddr 3 | - getstakingvalidatorsvalidatoraddrdelegations 4 | - getstakingdelegationsdelegatoraddr 5 | - getstakingdelegatorsdelegatoraddrredelegations 6 | - getstakingdelegatorsdelegatoraddrvalidators 7 | - getstakingdelegatorsdelegatoraddrvalidatorsvalidatoraddr 8 | - getstakingdelegatorsdelegatoraddrunbondingdelegations 9 | - getstakingparams 10 | - getstakingpool 11 | - getstakinghistoricalinfoheight 12 | - getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddr 13 | - getstakingvalidatorsvalidatoraddrunbondingdelegations 14 | - getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddrunbondingdelegation 15 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingdelegationsdelegatoraddr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDelegationsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-delegations-delegator-addr 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingdelegatorsdelegatoraddrredelegations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetRedelegationsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-delegators-delegator-addr-redelegations 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingdelegatorsdelegatoraddrunbondingdelegations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetUnbondingDelegationsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-delegators-delegator-addr-unbonding-delegations 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingdelegatorsdelegatoraddrvalidators.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-delegators-delegator-addr-validators 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingdelegatorsdelegatoraddrvalidatorsvalidatoraddr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorsByDelegatorAddressValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-delegators-delegator-addr-validators-validator-addr 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakinghistoricalinfoheight.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetHistoricalInfoByHeight 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-historical-info-height 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingparams.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetStakingParams 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-params 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingpool.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetStakingPool 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-pool 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidators.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidators 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-validators 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidatorsvalidatoraddr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-validators-validator-addr 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidatorsvalidatoraddrdelegations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorDelegationsByValidatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-validators-validator-addr-delegations 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDelegationByValidatorAddressDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-validators-validator-addr-delegations-delegator-addr 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidatorsvalidatoraddrdelegationsdelegatoraddrunbondingdelegation.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetDelegatorUnbondingDelegation 3 | api: 4 | file: consensus-client-api.json 5 | operationId: >- 6 | get_staking-validators-validator-addr-delegations-delegator-addr-unbonding-delegation 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/getstakingvalidatorsvalidatoraddrunbondingdelegations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetValidatorUnbondingDelegations 3 | api: 4 | file: consensus-client-api.json 5 | operationId: get_staking-validators-validator-addr-unbonding-delegations 6 | hidden: false 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/cosmos-originstaking/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Staking 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/cosmos-origin/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cosmos Origin 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/_order.yaml: -------------------------------------------------------------------------------- 1 | - story-extendstaking 2 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Story Extend 3 | deprecated: false 4 | hidden: false 5 | metadata: 6 | robots: index 7 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/story-extendstaking/_order.yaml: -------------------------------------------------------------------------------- 1 | - getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegations 2 | - >- 3 | getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegationsperioddelegationid 4 | -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/story-extendstaking/getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetPeriodDelegationsByDelegatorAddress 3 | api: 4 | file: consensus-client-api.json 5 | operationId: >- 6 | get_staking-validators-validator-addr-delegators-delegator-addr-period-delegations 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/story-extendstaking/getstakingvalidatorsvalidatoraddrdelegatorsdelegatoraddrperioddelegationsperioddelegationid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: GetPeriodDelegationByDelegatorAddressAndID 3 | api: 4 | file: consensus-client-api.json 5 | operationId: >- 6 | get_staking-validators-validator-addr-delegators-delegator-addr-period-delegations-period-delegation-id 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Consensus Client Api/story-extend/story-extendstaking/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Staking 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Getting Started/_order.yaml: -------------------------------------------------------------------------------- 1 | - api-introduction 2 | - blockscout-api 3 | -------------------------------------------------------------------------------- /reference/Getting Started/api-introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | excerpt: '' 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | title: '' 8 | description: '' 9 | robots: index 10 | next: 11 | description: '' 12 | --- 13 | Welcome to the Story API Reference! Please use the `https://api.storyapis.com/api/v3` endpoint. 14 | 15 | ```http Headers 16 | // pick one depending on the network. `story` = mainnet, `story-aeneid` = testnet 17 | X-CHAIN: story | story-aeneid 18 | // same for both networks 19 | X-API-Key: MhBsxkU1z9fG6TofE59KqiiWV-YlYE8Q4awlLQehF3U 20 | ``` 21 | 22 | ## Rate Limit 23 | 24 | The above public API key has a requests/second of 300. If you'd like an API key with a higher limit, please join our [Builder Discord](https://discord.gg/fajKk8q7gU) and describe your project needs in the **discussion channel**. -------------------------------------------------------------------------------- /reference/Getting Started/blockscout-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Blockscout API 3 | excerpt: Get gas price, average block time, market cap, token price, and more. 4 | deprecated: false 5 | hidden: false 6 | metadata: 7 | robots: index 8 | --- 9 | [Storyscan](https://storyscan.xyz) has a public API endpoint that returns gas price, average block time, market cap, token price (coin gecko), and several other stats: `https://www.storyscan.xyz/api/v2/stats` 10 | 11 | Here is an example response :arrow_heading_down: 12 | 13 | ```json 14 | { 15 | "average_block_time": 2364, 16 | "coin_image": "https://coin-images.coingecko.com/coins/images/54035/small/Transparent_bg.png?1738075331", 17 | "coin_price": "4.83", 18 | "coin_price_change_percentage": null, 19 | "gas_price_updated_at": "2025-03-10T14:47:27.175157Z", 20 | "gas_prices": { 21 | "slow": 0.1, 22 | "average": 0.57, 23 | "fast": 1.05 24 | }, 25 | "gas_prices_update_in": 11735, 26 | "gas_used_today": "147032238744", 27 | "market_cap": "1209228486.984", 28 | "network_utilization_percentage": 10.8968948333333, 29 | "secondary_coin_image": null, 30 | "secondary_coin_price": null, 31 | "static_gas_price": null, 32 | "total_addresses": "686024", 33 | "total_blocks": "1765700", 34 | "total_gas_used": "0", 35 | "total_transactions": "5606580", 36 | "transactions_today": "221320", 37 | "tvl": null 38 | } 39 | ``` -------------------------------------------------------------------------------- /reference/ReadMeConfig/_order.yaml: -------------------------------------------------------------------------------- 1 | - getting-started 2 | - authentication 3 | - my-requests 4 | -------------------------------------------------------------------------------- /reference/ReadMeConfig/authentication.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Authentication 3 | excerpt: Set up the welcome page for your API to help users make their first call. 4 | api_config: authentication 5 | deprecated: false 6 | hidden: true 7 | metadata: 8 | title: '' 9 | description: '' 10 | robots: index 11 | next: 12 | description: '' 13 | --- -------------------------------------------------------------------------------- /reference/ReadMeConfig/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Getting Started 3 | excerpt: Set up the welcome page for your API to help users make their first call. 4 | api_config: getting-started 5 | deprecated: false 6 | hidden: true 7 | metadata: 8 | title: '' 9 | description: '' 10 | robots: index 11 | next: 12 | description: '' 13 | --- -------------------------------------------------------------------------------- /reference/ReadMeConfig/my-requests.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: My Requests 3 | excerpt: Set up the welcome page for your API to help users make their first call. 4 | api_config: my-requests 5 | deprecated: false 6 | hidden: true 7 | metadata: 8 | title: '' 9 | description: '' 10 | robots: index 11 | next: 12 | description: '' 13 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/_order.yaml: -------------------------------------------------------------------------------- 1 | - ipassets 2 | - collections 3 | - iplicenseterms 4 | - disputes 5 | - ipgroup 6 | - licenses 7 | - licensetemplates 8 | - licenseterms 9 | - licensetokens 10 | - modules 11 | - permissions 12 | - royalties 13 | - transactions 14 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/collections/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-collections 2 | - get_api-v3-collections-collectionid 3 | - post_api-v3-collections-1 4 | - get_api-v3-collections-collectionid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/collections/get_api-v3-collections-collectionid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get an Collection 3 | excerpt: Retrieve a Collection 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-collections-collectionid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/collections/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Collections 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/collections/post_api-v3-collections.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Collections 3 | excerpt: Retrieve a paginated, filtered list of Collections 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-collections 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/disputes/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-disputes 2 | - get_api-v3-disputes-disputeid 3 | - post_api-v3-disputes-1 4 | - get_api-v3-disputes-disputeid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/disputes/get_api-v3-disputes-disputeid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a Dispute 3 | excerpt: Retrieve a Dispute 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-disputes-disputeid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/disputes/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Disputes 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/disputes/post_api-v3-disputes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Disputes 3 | excerpt: Retrieve a paginated, filtered list of Disputes 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-disputes 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-assets 2 | - post_api-v3-assets-edges 3 | - get_api-v3-assets-assetid 4 | - get_api-v3-assets-assetid-metadata 5 | - post_api-v3-assets-1 6 | - post_api-v3-assets-edges-1 7 | - get_api-v3-assets-assetid-1 8 | - get_api-v3-assets-assetid-metadata-1 9 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/get_api-v3-assets-assetid-metadata.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get metadata for an IPAsset 3 | excerpt: Retrieve metadata for an IPAsset 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-assets-assetid-metadata 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/get_api-v3-assets-assetid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get an IPAsset 3 | excerpt: Retrieve an IPAsset 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-assets-assetid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPAssets 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/post_api-v3-assets-edges.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List IP Edges 3 | excerpt: Retrieve a paginated, filtered list of IP Edges 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-assets-edges 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipassets/post_api-v3-assets.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List IPAssets 3 | excerpt: Retrieve a paginated, filtered list of IPAssets 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-assets 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipgroup/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-ip-group-edges 2 | - post_api-v3-ip-groups 3 | - post_api-v3-ip-group-edges-1 4 | - post_api-v3-ip-groups-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipgroup/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPGroup 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipgroup/post_api-v3-ip-group-edges.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List a IPGroup's edges 3 | excerpt: Retrieve an IPGroup edges 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-ip-group-edges 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/ipgroup/post_api-v3-ip-groups.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List IP groups 3 | excerpt: Retrieve an IPGroup 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-ip-groups 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-detailed-ip-license-terms 2 | - post_api-v3-licenses-ip-terms 3 | - get_api-v3-licenses-ip-terms-ipid 4 | - get_api-v3-licenses-terms-default 5 | - post_api-v3-detailed-ip-license-terms-1 6 | - post_api-v3-licenses-ip-terms-1 7 | - get_api-v3-licenses-ip-terms-ipid-1 8 | - get_api-v3-licenses-terms-default-1 9 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/get_api-v3-licenses-ip-terms-ipid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get IP License Terms for an IP 3 | excerpt: Retrieve IP License Terms associated with an IP ID 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-ip-terms-ipid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/get_api-v3-licenses-terms-default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get default license term 3 | excerpt: Retrieve default license term 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-terms-default 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IPLicenseTerms 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/post_api-v3-detailed-ip-license-terms.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List detailed ip license term 3 | excerpt: Retrieve detailed IP License Terms associated with list of IP ID 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-detailed-ip-license-terms 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/iplicenseterms/post_api-v3-licenses-ip-terms.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List IPLicenseTerms 3 | excerpt: Retrieve a paginated, filtered list of IPLicenseTerms 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-licenses-ip-terms 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenses/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-licenses-mintingfees 2 | - get_api-v3-licenses-mintingfees-licensemintingfeepaidid 3 | - post_api-v3-licenses-mintingfees-1 4 | - get_api-v3-licenses-mintingfees-licensemintingfeepaidid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenses/get_api-v3-licenses-mintingfees-licensemintingfeepaidid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a LicenseMintingFeePay 3 | excerpt: Retrieve a LicenseMintingFeePay 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-mintingfees-licensemintingfeepaidid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenses/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Licenses 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenses/post_api-v3-licenses-mintingfees.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List LicenseMintingFeePays 3 | excerpt: Retrieve a paginated, filtered list of LicenseMintingFeePaids 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-licenses-mintingfees 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetemplates/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-licenses-templates 2 | - get_api-v3-licenses-templates-licensetemplateid 3 | - post_api-v3-licenses-templates-1 4 | - get_api-v3-licenses-templates-licensetemplateid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetemplates/get_api-v3-licenses-templates-licensetemplateid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a LicenseTemplate 3 | excerpt: Retrieve a LicenseTemplate 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-templates-licensetemplateid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetemplates/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: LicenseTemplates 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetemplates/post_api-v3-licenses-templates.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List LicenseTemplates 3 | excerpt: Retrieve a paginated, filtered list of LicenseTemplates 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-licenses-templates 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenseterms/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-licenses-terms 2 | - get_api-v3-licenses-terms-licensetermid 3 | - post_api-v3-licenses-terms-1 4 | - get_api-v3-licenses-terms-licensetermid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenseterms/get_api-v3-licenses-terms-licensetermid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a LicenseTerm 3 | excerpt: Retrieve a LicenseTerm 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-terms-licensetermid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenseterms/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: LicenseTerms 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licenseterms/post_api-v3-licenses-terms.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List LicenseTerms 3 | excerpt: Retrieve a paginated, filtered list of LicenseTerms 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-licenses-terms 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetokens/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-licenses-tokens 2 | - get_api-v3-licenses-tokens-licensetokenid 3 | - post_api-v3-licenses-tokens-1 4 | - get_api-v3-licenses-tokens-licensetokenid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetokens/get_api-v3-licenses-tokens-licensetokenid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get an LicenseToken 3 | excerpt: Retrieve a LicenseToken 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-licenses-tokens-licensetokenid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetokens/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: LicenseTokens 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/licensetokens/post_api-v3-licenses-tokens.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List LicenseTokens 3 | excerpt: Retrieve a paginated, filtered list of LicenseTokens 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-licenses-tokens 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/modules/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-modules 2 | - get_api-v3-modules-moduleid 3 | - post_api-v3-modules-1 4 | - get_api-v3-modules-moduleid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/modules/get_api-v3-modules-moduleid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a Module 3 | excerpt: Retrieve a Module 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-modules-moduleid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/modules/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Modules 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/modules/post_api-v3-modules.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Modules 3 | excerpt: Retrieve a paginated, filtered list of Modules 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-modules 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/permissions/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-permissions 2 | - get_api-v3-permissions-permissionid 3 | - post_api-v3-permissions-1 4 | - get_api-v3-permissions-permissionid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/permissions/get_api-v3-permissions-permissionid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a Permission 3 | excerpt: Retrieve a Permission 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-permissions-permissionid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/permissions/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Permissions 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/permissions/post_api-v3-permissions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Permissions 3 | excerpt: Retrieve a paginated, filtered list of Permissions 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-permissions 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/royalties/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-royalties-payments 2 | - get_api-v3-royalties-payments-royaltypayid 3 | - post_api-v3-royalties-payments-1 4 | - get_api-v3-royalties-payments-royaltypayid-1 5 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/royalties/get_api-v3-royalties-payments-royaltypayid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a RoyaltyPay 3 | excerpt: Retrieve a RoyaltyPay 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-royalties-payments-royaltypayid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/royalties/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Royalties 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/royalties/post_api-v3-royalties-payments.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List RoyaltyPays 3 | excerpt: Retrieve a paginated, filtered list of RoyaltyPays 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-royalties-payments 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/transactions/_order.yaml: -------------------------------------------------------------------------------- 1 | - post_api-v3-transactions 2 | - post_api-v3-transactions-latest 3 | - get_api-v3-transactions-trxid 4 | - post_api-v3-transactions-1 5 | - post_api-v3-transactions-latest-1 6 | - get_api-v3-transactions-trxid-1 7 | -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/transactions/get_api-v3-transactions-trxid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Get a Transaction 3 | excerpt: Retrieve a Transaction 4 | api: 5 | file: swagger.json 6 | operationId: get_api-v3-transactions-trxid 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/transactions/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Transactions 3 | hidden: false 4 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/transactions/post_api-v3-transactions-latest.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Latest Transactions 3 | excerpt: Retrieve a paginated, filtered list of Latest Transactions 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-transactions-latest 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/Story Protocol API Reference/transactions/post_api-v3-transactions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: List Transactions 3 | excerpt: Retrieve a paginated, filtered list of Transactions 4 | api: 5 | file: swagger.json 6 | operationId: post_api-v3-transactions 7 | hidden: false 8 | --- -------------------------------------------------------------------------------- /reference/_order.yaml: -------------------------------------------------------------------------------- 1 | - ReadMeConfig 2 | - Getting Started 3 | - Story Protocol API Reference 4 | - Consensus Client Api 5 | --------------------------------------------------------------------------------