All Projects â†’ glumb â†’ IOTAtangle

glumb / IOTAtangle

Licence: GPL-3.0 license
IOTA Tangle Visualiser 🦔 http://tangle.glumb.de/?DARK_MODE=true

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to IOTAtangle

tangle-utils-website
A web site full of utilities for all things tangle, transaction and IOTA.
Stars: ✭ 19 (-65.45%)
Mutual labels:  iota, tangle
dcurl
Hardware-accelerated Multi-threaded IOTA PoW, drop-in replacement for ccurl
Stars: ✭ 39 (-29.09%)
Mutual labels:  iota, tangle
meta-iota
OpenEmbedded layer for the IOTA Distributed Ledger
Stars: ✭ 41 (-25.45%)
Mutual labels:  iota, tangle
IOTA-MAM.lib.js-PoC
Working Proof of Concept of IOTA's MAM technology using Live Nodes to push and receive messages inside tangle
Stars: ✭ 19 (-65.45%)
Mutual labels:  iota, tangle
leaderboard-example
IOTA Proof of Concept Application example. With tutorial.
Stars: ✭ 64 (+16.36%)
Mutual labels:  iota, tangle
iota.lib.rb
Ruby Library for IOTA with core and wrapper api implementation.
Stars: ✭ 17 (-69.09%)
Mutual labels:  iota, tangle
iota-python
A Pure-Python implementation of IOTA node
Stars: ✭ 30 (-45.45%)
Mutual labels:  iota, tangle
Tanglestash
IOTA meets BitTorrent: An algorithm to persist any file onto the tangle of IOTA
Stars: ✭ 46 (-16.36%)
Mutual labels:  iota, tangle
poc-ipfs
Demonstration of combining IOTA with IPFS for data storage.
Stars: ✭ 32 (-41.82%)
Mutual labels:  iota, tangle
SensorNode
SensorNode-client application for IOTA.
Stars: ✭ 35 (-36.36%)
Mutual labels:  iota, tangle
Chatangle
A free, decentralized, global chatroom, powered by the IOTA tangle
Stars: ✭ 16 (-70.91%)
Mutual labels:  iota
iota-mnemonic
Generate, restore IOTA seed from Bitcoin BIP39 mnemonic
Stars: ✭ 16 (-70.91%)
Mutual labels:  iota
iota-mosquitto-demo
A simple demonstration of using IOTA as a way to monetize an MQTT data stream
Stars: ✭ 24 (-56.36%)
Mutual labels:  iota
giotan
The CLI Tool for IOTA in Go
Stars: ✭ 30 (-45.45%)
Mutual labels:  iota
ipm
IOTA node peer manager. Useful for monitoring IOTA peers
Stars: ✭ 71 (+29.09%)
Mutual labels:  iota
iota.php
Interact with IOTA through PHP
Stars: ✭ 45 (-18.18%)
Mutual labels:  iota
IOTA101
IOTA Developer Essentials
Stars: ✭ 38 (-30.91%)
Mutual labels:  iota
iota-area-codes
IACs are a proposed standard for tagging IOTA transactions with a geo-location, which allows them to be fetched based on their location.
Stars: ✭ 20 (-63.64%)
Mutual labels:  iota
flash-demo
IOTA Flash channels demo using webRTC for communication.
Stars: ✭ 21 (-61.82%)
Mutual labels:  iota
HTML-Crypto-Currency-Chart-Snippets
💹 Simple HTML Snippets to create Tickers / Charts of Cryptocurrencies with the TradingView API 💹
Stars: ✭ 89 (+61.82%)
Mutual labels:  iota

IOTA Tangle Visualiser 🦔

Codacy Badge Codacy Badge

Live Visualisation of the IOTA Tangle using a dynamically layouted graph. Demo: http://tangle.glumb.de

IOTA TAngle

Usage and UI

All circles represent transactions (tx) in the IOTA Tangle. A circular buffer is used to populate the viewer with the last 1800 (configurable) tx on page load.

Hover a tx to see more details:

  • bottom left: value, tag, hash
  • top left: how many tx are confirming the selcted one (yellow)
  • top left: how many tx are confirmed by the selcted one (magenta)
  • tx of the same bundle are highlightes in blue

Use the input boxes on the left to filter by hast, tag or bundle. The tag filter is applied using a regex.

Toggle switches on the top right:

config description
remove floating tx some tx are not visually attached to the tangle since their attachement point lays so far back that it is not displayed anymore. Automatic removal of those tx increases performance
limit to 4k tx for continuous use only 4000 tx are kept on screen. Older tx are deleted first.
pin old tx pinning old tx increases performance by disabling their physics ad thus excluding them from the layouting process
reduce moevement spawns new nodes close to their neighbours
size by # of confirms tx that have been confirmed by more tx have a bigger diameter
size by weight tx that confirm more tx have a bigger diameter
size by value size based on transferred iota value
color by order color ty based on the order they appear on screen. Continuous hue rotation

Configuration

In adition to setting configuration parameters using the ui, URL parameters can be used for presets.

Example: http://tangle.glumb.de/?DARK_MODE=true&CIRCLE_SIZE=40&HIGHLIGHT_COLOR_FORWARD="0xbada55ff"&svg

Syntax http://tangle.glumb.de/?<CONFIG_PARAM_NAME>=<VALUE>[&<CONFIG_PARAM_NAME>=<VALUE>]

Available Configuration Parameters

CIRCLE_SIZE: 30, // size of a node
REMOVE_LONLY_AFTER_S: 30, // remove floating nodes after time
REMOVE_SMALLER_THAN_PERCENTAGE_OF_TOTAL_MESH: 0.03, // remove graphs that are smaller than % of all nodes
MAX_CIRCLE_SIZE: 80, // max node size used e.g. for 'size by value'
MAX_NODES: 4000, // max nodes when 'limit to 4k nodes' is enabled

// options
REMOVE_FLOATING_NODES: true,
COLOR_BY_DEPTH: false,
SIZE_BY_VALUE: false, // size based on transferred iota value
SIZE_BY_WEIGHT: false, // tx that confirm more tx have a bigger diameter
REMOVE_OLD_NODES: false, // only MAX_NODES tx are kept on screen. Older tx are deleted first.
PIN_OLD_NODES: true, // pinning old tx increases performance by disabling their physics ad thus excluding them from the layouting process
LIGHT_LINKS: false,
SPAWN_NODE_NEAR_FINAL_POSITION: true, // spawns new nodes close to their neighbours
COLOR_BY_NUMBER: false, // color ty based on the order they appear on screen. Continuous hue rotation
DARK_MODE: false,

// colors
HIGHLIGHT_MULTIPLE_COLOR: 0xda4b29, // for tags, hash, bundle filter
SAME_BUNDLE_COLOR: 0x1287ff,
LIGHT_LINK_COLOR: 0x222222ff,
LIGHT_NODE_COLOR: 0x000000ff,
LIGHT_NODE_BG_COLOR: 0xffffff,
NODE_CONFIRMED_COLOR: 0x000000,
HIGHLIGHT_COLOR_FORWARD: 0xf1b727ff,
HIGHLIGHT_COLOR_BACKWARD: 0xe23df4ff,
NODE_MILESTONE_COLOR: 0xe53d6f,
NODE_TIP_COLOR: 0x1fe0be,

LINK_COLOR: 0,
NODE_COLOR: 0,
NODE_BG_COLOR: 0,

// sizes
NODE_CONFIRMED_BORDER_SIZE: 1,
NODE_BASE_BORDER_SIZE: 0.8,
NODE_MILESTONE_BORDER_SIZE: 0.6,
NODE_TIP_BORDER_SIZE: 0.6,

// other
TITLE: "The Tangle",
EXPLORER_TX_LINK: "https://thetangle.org/transaction/",
EXPLORER_BUNDLE_LINK: "https://thetangle.org/bundle/",

Additional Parameters Use hash=<tx-hash>, bundle=<bundle-hash>, tag=<tx-tag> to select a tx. Use with caution. The tx is only highlighted when on screen. Older tx are not queried. Use svg=true to display a svg export utility button on the top left.

Installation

Clone the repo and run npm install.

Tangle Setup

The visualiser can be used for multiple networks (Mainnet, testnet, Customnet). The main entrypoint is the <NAME>App.js file. To get started open the mainnetApp.js and configure the ZMQ_ENDPOINT and LSM_NODE. Run node mainnnetApp.js to start the server. Done :)

To add another network, copy the mainnetApp.js and rename it to <CustomName>App.js. Copy the mainnetdata.json and also rename it to <CustomName>data.json. Set your network endpoints in <CustomName>App.js and also set the NAME to <CustomName>.

Architecture

The visualiser follows simple client server architecture. Server-side a ZMQ client is used for for data aquisition. It listens to the ZMQ Transaction stream of an IOTA Fullnode. An Instance of the IOTA JS library is used to peridically poll the latest milestone index.

Transactions are stroed in a ringbuffer to send the last 1800TX to the client on pageload.

IOTA Tangle Glumb Architecture

Telegram / Message Format

The data send to the client via WebSocket follow this structure:

TX - Transaction

{
  hash,
    address,
    value,
    tag,
    timestamp,
    current_index,
    last_index,
    bundle_hash,
    transaction_trunk,
    transaction_branch;
}

SN - Confirmed Transaction

{
  hash, address, transaction_trunk, transaction_branch, bundle;
}

Socket IO Client Events

The clients data interface is based on the SocketIO library. Therefore it is server agnostic as along as the expected SocketIO events are emittet by the backend.

On initialisation/pageload the following events are expected:

socket.emit("config", FRONTEND_CONFIG); // { networkName }
socket.emit("inittx", txArray); // see format above
socket.emit("initsn", snArray); // see format above
socket.emit("initms", mileStoneArray); // Array of milestone tx hashes

During runtime the following event can be fired:

socket.emit("tx", tx); // see format above
socket.emit("sn", sn); // see format above
socket.emit("ms", ms); // milestone tx hash

API

include th following scripts

<link rel="stylesheet" href="main.css" />
<script src="lib/vivagraph.js"></script>
<script src="main.js"></script>
<script
  src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
  crossorigin="anonymous"
></script>

Instantiate TangleGlumb($DOMElement, [config])

const tg = TangleGlumb(document.getElementById("graph"), {
  CIRCLE_SIZE: 60,
  PIN_OLD_NODES: false,
  STATIC_FRONT: false
});

tg.updateTx([tx]);
tg.removeTx([tx]);

Add and update array of transactions using TG.updateTx(Array<txObj>)

const tx = {
  hash: "",
  address: "",
  value: 0,
  timestamp: Date.now(),
  bundle_hash: "",
  transaction_branch: "",
  transaction_trunk: "",
  tag: ""
  milestone: false, //optional
  confirmed: false, //optional
};

tg.updateTx([tx]);

Remove transactions from the visualisation using TG.removeTx(Array<txObj|hash>)

const tx = {
  hash: "",
  address: "",
  value: 0,
  timestamp: Date.now(),
  bundle_hash: "",
  transaction_branch: "",
  transaction_trunk: "",
  tag: ""
  milestone: false, //optional
  confirmed: false, //optional
};

tg.removeTx([tx, tx.hash]);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].