Giter Club home page Giter Club logo

lto-api.js's Introduction

LTO API npm version

Client for LTO Network. Integration for both public blockchain and private event-chain.

Installation

npm install lto-api --save

Accounts

Create an account

The chain_id is 'L' for the MainNet and 'T' TestNet

const factory = require('@ltonetwork/lto').AccountFactoryED25519;

let account = new factory('T').create();

Create an account from seed

const factory = require('@ltonetwork/lto').AccountFactoryED25519;

let account = new factory('T').createFromSeed(seed);

Create an account from private key

const factory = require('@ltonetwork/lto').AccountFactoryED25519;

let account = new factory('T').createFromPrivateKey(privateKey);

Executing Transactions:

First a transaction needs to be created:

Ex Transfer Transaction

const transaction = require('@ltonetwork/lto').Transfer;
transaction = Transfer(recipient, amount);

The Transaction needs then to be signed.
In order to sign a transaction an account is needed (check at the beginning of the page the steps to create an account).

Ex of signinig a transaction

transaction.signWith(account);

For last the transaction needs to be broadcasted to the node.
In order to do so we need to connect to the node using the PublicNode class.

const PublicNode = require('@ltonetwork/lto').publicNode;
const node = PublicNode(url);

The url refers to the node, there are many nodes available, here there are two examples, one for the MainNet and one for the TestNet

https://nodes.lto.network
https://testnet.lto.network

Ex of broadcasting a transaction

transaction.broadcastTo(node);

Transactions

Transfer Transaction

const transaction = require('@ltonetwork/lto').Transfer;

transaction = Transfer(recipient, amount)

Mass Transfer Transaction

const transaction = require('@ltonetwork/lto').MassTransfer

transaction = MassTransfer(transfers)

Anchor Transaction

const transaction = require('@ltonetwork/lto').Anchor;

transaction = Anchor(anchor)

Lease Transaction

const transaction = require('@ltonetwork/lto').Lease;

transaction = Lease(recipient, amount);

Cancel Lease Transaction

const transaction = require('@ltonetwork/lto').CancelLease;

transaction = CancelLease(lease_id);

SetScript Transaction

const transaction = require('@ltonetwork/lto').SetScript;

transaction = SetScript(script);

Sponsorship transaction

const transaction = require('@ltonetwork/lto').Sponsorship;

transaction = Sponsorship(recipient);

Cancel Sponsorship transaction

const transaction = require('@ltonetwork/lto').CancelSponsorship;

transaction = CancelSponsorship(recipient);

Association transaction

const transaction = require('@ltonetwork/lto').Association;

transaction = Association(recipient, association_type, anchor);

Revoke Association transaction

const transaction = require('@ltonetwork/lto').RevokeAssociation;

transaction = RevokeAssociation(recipient, association_type, anchor);

Seed Encryption

Your seed can be encrypted:

const phrase = 'satisfy sustain shiver skill betray mother appear pupil coconut weasel firm top puzzle monkey seek';

const account = ew factory('T').createFromSeed(phrase);

const password = 'verysecretpassword';
const encrypted = account.encrypt(password); 
console.log(encrypted); //U2FsdGVkX18tLqNbaYdDu5V27VYD4iSylvKnBjMmvQoFFJO1KbsoKKW1eK/y6kqahvv4eak8Uf8tO1w2I9hbcWFUJDysZh1UyaZt6TmXwYfUZq163e9qRhPn4xC8VkxFCymdzYNBAZgyw8ziRhSujujiDZFT3PTmhhkBwIT7FMs=

or

const phrase = 'satisfy sustain shiver skill betray mother appear pupil coconut weasel firm top puzzle monkey seek';

const password = 'verysecretpassword';
const encrypted = lto.encryptSeedPhrase(phrase, password);
console.log(encrypted); // U2FsdGVkX18tLqNbaYdDu5V27VYD4iSylvKnBjMmvQoFFJO1KbsoKKW1eK/y6kqahvv4eak8Uf8tO1w2I9hbcWFUJDysZh1UyaZt6TmXwYfUZq163e9qRhPn4xC8VkxFCymdzYNBAZgyw8ziRhSujujiDZFT3PTmhhkBwIT7FMs=

Decryption

To decrypt your seed:

const encryptedSeed = 'U2FsdGVkX18tLqNbaYdDu5V27VYD4iSylvKnBjMmvQoFFJO1KbsoKKW1eK/y6kqahvv4eak8Uf8tO1w2I9hbcWFUJDysZh1UyaZt6TmXwYfUZq163e9qRhPn4xC8VkxFCymdzYNBAZgyw8ziRhSujujiDZFT3PTmhhkBwIT7FMs=';
const password = 'verysecretpassword';
const phrase = lto.decryptSeedPhrase(encryptedSeed);
console.log(phrase); // satisfy sustain shiver skill betray mother appear pupil coconut weasel firm top puzzle monkey seek

EventChain

Create an event chain

const chain = account.createEventChain(); // Creates an empty event chain with a valid id and last hash

Create and sign an event and add it to an existing event chain

const EventChain = require('lto-api').EventChain;
const Event = require('lto-api').Event;

const body = {
  "$schema": "http://specs.livecontracts.io/01-draft/12-comment/schema.json#",
  "identity": {
    "$schema": "http://specs.livecontracts.io/01-draft/02-identity/schema.json#",
    "id": "1bb5a451-d496-42b9-97c3-e57404d2984f"
  },
  "content_media_type": "text/plain",
  "content": "Hello world!"
};

const chain = new EventChain('JEKNVnkbo3jqSHT8tfiAKK4tQTFK7jbx8t18wEEnygya');

chain.addEvent(new Event(body).signWith(account));

HTTPSignature

Create a signature for an http request

const headers = {
  date: (new Date("April 1, 2018 12:00:00")).toISOString()
};

const request = new Request('http://example.com', 'get', headers);

const httpSign = new HTTPSignature(request, ['(request-target)', 'date']);
const signatureHeader = httpSign.signWith(account); // keyId="FkU1XyfrCftc4pQKXCrrDyRLSnifX1SMvmx1CYiiyB3Y",algorithm="ed25519-sha256",headers="(request-target) date",signature="tMAxot4iWb8gB4FQ2zqIMfH2Fd8kA9DwSoW3UZPj9f8QlpLX5VvWf314vFnM8MsDo5kqtGzk7XOOy0TL4zVWAg=="

lto-api.js's People

Contributors

andreascorza avatar svenstm avatar jasny avatar brunodb3 avatar dependabot[bot] avatar yhorbachov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.