Quick Start

Follow the steps below to quickly set up your own Marble Digital Item Contract

Clone Marble

git clone https://github.com/Dappetizer/marble-standard.git

Setup Project 💻

Navigate to the freshly cloned project directory: marble-digital-items/

mkdir build && mkdir build/marble
chmod +x build.sh && chmod +x deploy.sh

Build the Contract 🔨

The included build script will attempt to compile the Marble contract.

./build.sh marble

Ensure you have EOSIO CDT 1.6 or greater installed and included in your path.

After a successful build, the generated WASM and ABI files will be placed in the build/marble folder. The deploy script will read these artifacts during deployment.

Deploy To Network

Deploy the built Marble contract to the given account and network.

In the commands below, replace the variables in curly braces with the appropriate values for your use case. Variables separated by bars require a selection, meaning choose one of the choices.

By default the mainnet and testnet endpoints are for the Telos Blockchain Network, but switching to a different EOSIO chain is as easy as replacing the default endpoints in the deploy script with ones from the desired network. The local network defaults to port 8888 on localhost (the default nodeos port).

./deploy.sh marble {account} { mainnet | testnet | local }

Initialize the Contract 📄

The first action called on any Marble contract should be the init() action. This will set the initial contract version and initial admin in the config table. The admin is the only account that is authorized to create new groups.

cleos push action {account} init '[ "Marble", "v1.2.0", {account} ]' -p {account}

Create a Group 👥

Groups are collections of items that all share like behaviors. A single Marble contract can have any number of groups.

Group Examples: cards, monsters, dragons, players

cleos push action {account} newgroup '[ ... ]' -p {account}

Mint an Item 🔵

New digital items can now be created within the group. Every Marble item belongs to one and only one group.

cleos push action {account} mintitem '[ ... ]' -p {account}

Assign Item Properties 💎

Every Marble item can be customized by assigning properties to it. For the full list of available property types see the Marble Layers section of the documentation.

For example, give an item a title by simply assigning it a new Tag:

cleos push action {account} newtag '[ 1, "title", "Fluffy Cow", null, null ]' -p {account}

Or give it an item level with an Attribute:

cleos push action {account} newattribute '[ 1, "itemlevel", 5 ]' -p {account}

Or give it a creation timestamp with an Event:

cleos push action {account} newevent '[ 1, "createtime", null ]' -p {account}

Or back it with fungible tokens using a Backing:

cleos push action {account} newbacking '[ 1, "5.0000 TLOS" ]' -p {account}