Skip to content

Latest commit

 

History

History
151 lines (99 loc) · 6.83 KB

README.md

File metadata and controls

151 lines (99 loc) · 6.83 KB
Tarti


Static Badge Static Badge Static Badge Static Badge

About

Tarti is an NFT application and a generative AI system that allows you to give birth to unique intelligent entities that live on the blockchain and make art. Each entity is an NFT and each piece of art that it creates is also an NFT (On the TARTIST and TARTI contracts, respectively.)

For now the art they make is always original professional music compositions. But the Tarti bots' diverse skillset will be exposed more over time.

Tarti is made up of:

What does it do?

  • TRAIT AI Bots can do anything. They're kinda like people. Right now they're good at making music, but they can do other stuff too.
  • Tarti provides an interface to TRAIT AI via Ethereum ERC721 Smart Contracts.
  • Tarti provides proof of ownership, chain pf custody, royalty payouts, and right ownership selling and trading via the smart contracts.

For demos and more check out my Twitter.

Demos

Initial Raw Demo - Youtube

Tartist

Simply put, a Tartist is a bot. Presently, Tartists are all music producers. A Tartist is also an NFT. It is unique as an NFT in that it can create other NFTs. The NFTs that Tartists create are called Tartis.

Tarti

A Tarti is an NFT. As of now, Tartis are all music and related files.

Off-chain Interactions

When a Tartist or Tarti is minted, an off chain service will create the related multimedia and store it on IPFS at tarti.eth, which will be linked by the NFTs metadata.

Dapp

A Dapp to interact with these contracts can be found at Github

System Diagram

"High level diagram of the Tarti system"

Token rights

The copyrights for the art generated by a Tartist are automatically owned by whomever holds the Tartist token for that Tartist at the time the art is generated. To designate ownership of a particular Tartist, a Tartist token can be held by an account on the Ethereum blockchain. The Tartist token is a fully compliant ERC721 Non Funglible Token (NFT).

When a Tartist generates art, they mint a Tarti token on the blockchain. This Tarti token lives in the Tarti smart contract and is automatically transferred to the owner of the Tartist token for the Tartist who generated the art. Therefor, the owner of a Tartist token will automatically inherit ownership of any Tarti tokens generated by the Tartist. When a Tartist token is sold/transferred, copyrights to any future pieces of art will belong to the new holder of the Tartist token.

Tartsists and Tartis can be transferred and/or sold on public marketplaces such as OpenSea.io like any other NFT. Tartis can be transferred independent of Tartists.

Royalties New 2023/08/01

A Tartist owner can now allow other people to mint Tartis using their Tartist. The mineter will be the owner of the Tarti and must pay a royalty to the owner of the Tartist. The Tartist owner sets the royalty rate. If the royalty rate is set to 0 (default), then only the Tartist owner can mint Tartis. If the royalty rate is greater than zero, then the Tartist is available for hire to create new Tartis for anyone who pays.

Bug/feature: If the Royalty rate is set, then the owner of the Tartist must also pay the royalty, which gets paid back to themselves. I might change/fix this before mainnet.

Built With

Why Ethereum?

I considered L2 and cross chain solutions. I just am not sure of the state of the market and where things are going. I might be a bit behind. It seemed like all the big projects were on Ethereum despite the cost, so I decided to go that route.

I just read some PRs in the OpenZepplin repo. They are getting rid of PullPayments, which I use. Their justification is a "change in the crosschain landscape". So, I might decide to go crosschain if I ever do a V2. I will at least learn more and see what the trends are and why.

Usage

Tartist

The Tartist contract expsoses these functions (in addition to standard ERC721 functions)

  • giveBirth( address recipient, uint256[] memory traits, string[] memory dynamicTraitValues, uint8[] memory traitDominance )
  • newArt(uint8 artistId)
  • setRoyaltyRate(uint8 artistId, uint256 ratePerTarti)
  • getTraits(uint256 tokenId)
  • getTraitValues(uint256 tokenId)

Tarti

The Tarti contract expsoses these functions (in addition to standard ERC721 functions)

  • artByArtist(uint8 artistId, uint256 artOrdinal)

Roadmap

Porting over from Jira soon...

Support

Reach out to the maintainer at one of the following places:

Project assistance

  • Mint a Bot! (Coming to Testnet soon!)
  • Add a GitHub Star to the project.

Contributing

These contracts will be deployed and immutable soon, but any help appreciated in the meantime.

Authors & contributors

This repository is by Evan de la Cruz.

Security

Tarti avoids re entrance attacks

License

This project is licensed under the MIT license.

See LICENSE for more information.

Acknowledgements

  • OpenSea docs