Constellation Network
IntroductionFundamentalsFor DevelopersNode Validators
  • Index
  • Introduction
  • Elements
    • Toolkit
    • Development Environment
    • Hydra CLI
    • Developer Dashboard
    • Telemetry Dashboard
    • Metagraph Monitoring Service
  • Metagraph Framework
    • Overview
    • Framework Architecture
    • Installation
    • Currency
      • Working with Tokens
    • Data
      • State Management
      • Lifecycle functions
    • Framework Endpoints
    • Custom Endpoints
  • Guides
    • Quick Start
    • Send a Transaction
    • Manual Setup
    • Customize Rewards Logic
    • Custom Data Validation
    • Working with p12 files
    • Snapshot Fees
    • Deploy a Metagraph
      • Security groups
      • Key pairs
      • Base instance
        • Generating base instance
        • Connect to the instance
        • Generating AMI (Image) from Base Instance
        • Launching instances from AMI
      • Start Metagraph Instances
        • Configuring P12 Files
        • Start Global L0 Instances
        • Start Metagraph L0 Instances
        • Start Currency L1 Instances
        • Start Data L1 Instances
  • Resources
    • Network APIs
    • Example Codebases
    • Metagraph Development Video Series
Powered by GitBook

Main

  • Website
  • Get DAG
  • Explore Projects
  • Partners

Socials

  • Telegram
  • Discord
  • X (Twitter)

Tools

  • Wallet
  • DAG Explorer
  • Coingecko

© 2025 CONSTELLATION NETWORK

On this page
  • Before You Start​
  • Send Data​
  • Next Steps​

Was this helpful?

Export as PDF
  1. Guides

Custom Data Validation

PreviousCustomize Rewards LogicNextWorking with p12 files

Last updated 1 month ago

Was this helpful?

In this guide, we will walk through a Data Application and a simple example implementation of an IoT use case. Complete code for this guide can be found in the on Github. See the example.

Want more detail?

Looking for additional detail on Data Application development? More information is available in .

Before You Start

In order to get started, install dependencies as described in the . You will need at least the global-l0, metagraph-l0, and metagraph-l1-data containers enabled in your euclid.json file for this guide.

Example euclid.json values

  "github_token": "",
  "version": "0.9.1",
  "tessellation_version": "2.2.0",
  "project_name": "custom-project",
  "framework": {
    "name": "currency",
    "modules": [
      "data"
    ],
    "version": "v2.2.0",
    "ref_type": "tag"
  },
  "layers": [
    "global-l0",
    "metagraph-l0",
    "currency-l1",
    "data-l1"
  ],

Installing Templates with Hydra

1. List Available Templates: First, determine th`e templates at your disposal by executing the command below:

./scripts/hydra install-template --list

2. Install a Template: After selecting a template, replace :repo_name with your chosen repository's name to install it. For instance:

./scripts/hydra install-template :repo_name

As a practical example, if you wish to install the water-and-energy-usage template, your command would look like this:

./scripts/hydra install-template water-and-energy-usage

This process will set up a metagraph based on the selected template.

Within your Euclid modules directory (source/project/water-and-energy-usage/modules) you will see three module directories: l0 (metagraph l0), l1 (currency l1), and data_l1 (data l1). Each module has a Main.scala file that defines the application that will run at each corresponding layer.

- source
  - project
    - water-and-energy-usage
      - modules
        - l0
        - l1
        - data_1
        - shared_data
      - project

Edit the send_data_transaction.js script and fill in the globalL0Url, metagraphL1DataUrl, and walletPrivateKey variables. The private key can be generated with the dag4.keystore.generatePrivateKey() method if you don't already have one.

Once the variables are updated, save the file. You can now run node send_data_transaction.js to send data to the /data endpoint.

Using the custom endpoint created in the data_l1 Main.scala routes method, we can check the metagraph state as updates are sent.

Using your browser, navigate to <your L1 base url>/data-application/addresses to see the complete state including all devices that have sent data. You can also check the state of an individual device using the <your L1 base url>/data-application/addresses/:address endpoint.

You should see a response like this:

{
    "DAG4bQGdnDJ5okVdsdtvJzBwQoPGjLNzN7HC1CBV": {
        "energy": {
            "usage": 7,
            "timestamp": 1689441998946
        },
        "water": {
            "usage": 7,
            "timestamp": 1689441998946
        }
    }
}

To initiate a metagraph using a template, we provide several options in our . Follow these steps to utilize a template:

Send Data

Check State Updates

Next Steps

This brief guide demonstrates the ability to update and view on-chain state based on the Metagraph Framework's Data Application layer. Detailed information about the framework methods used can be found in the and in comments throughout the code. Also see additional break downs of the application lifecycle methods in the section.

metagraph examples repo
Water and Energy Use
Data Application
​
Quick Start Guide
GitHub repository
​
​
​
example README file
Data API