Marble Docs
  • Get Started
  • Contract Standard
    • Quick Start
    • Marble Core
      • Config
      • Groups
      • Behaviors
      • Items
    • Marble Layers
      • Tags
      • Attributes
      • Events
      • Frames
      • Bonds
  • Marbleize
    • Marble Sandbox
    • Marble Market
      • Deposit and Withdraw
      • Buy and Sell Items
      • Rent Items
      • Auction Items
    • Marble Sculptor
  • Marble CLI
    • Get Started
    • Usage
Powered by GitBook
On this page
  • Clone Marble
  • Setup Project
  • Build the Contract
  • Deploy To Network
  • Initialize the Contract
  • Create a Group
  • Mint an Item
  • Assign Item Properties

Was this helpful?

  1. Contract Standard

Quick Start

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

PreviousGet StartedNextMarble Core

Last updated 4 years ago

Was this helpful?

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.

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

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}

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}

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}

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 Bond:

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

By default the mainnet and testnet endpoints are for the , 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).

Initialize the Contract

Create a Group

Mint an Item

Assign Item Properties

⬇️
💻
🔨
☁️
📄
👥
🔵
💎
Telos Blockchain Network