A web3 adaptor for VeChain Thor RESTful HTTP API.
Thorify
[!IMPORTANT]
This project is discontinued, try out web3-providers-connex or vechain-sdk-js.
A web3 adaptor for VeChain Thor RESTful API.
Table of contents
- Install
- Usage
- Web3 method supported
- Send transaction
- Documentation
- Play with multi-clause
- Which Stack Should I Choose Regarding Connex,Thorify And Web3-Gear
- FAQ
Install
bash
npm i thorify web3@1.* # Web3 is needed as dependency.
Furthermore, if you would like to change web3 version after installation, for example 1.6, run npm i web3@1.6 web3-core-subscriptions@1.6 as subscriptions is a peer dependency.
Usage
javascript
// ES6 style
import { thorify } from "thorify";
const Web3 = require("web3"); // Recommend using require() instead of import here
const web3 = thorify(new Web3(), "http://localhost:8669");
web3.eth.getBlock("latest").then(res => console.log(res)); // Best block info will be displayed
If you would like to write code in ES5, check below for the initialization code.
javascript
// ES5 style
const thorify = require("thorify").thorify;
const Web3 = require("web3");
const web3 = thorify(new Web3(), "http://localhost:8669");
web3.eth.getBlock("latest").then(res => console.log(res)); // Best block info will be displayed
Web3 method supported
web3 instance
โโโ eth
โย ย โโโ getBlockNumber
โย ย โโโ getBalance
โย ย โโโ getStorageAt
โย ย โโโ getCode
โย ย โโโ getBlock
โย ย โโโ getTransaction
โย ย โโโ getTransactionReceipt
โย ย โโโ sendTransaction
โย ย โโโ sendSignedTransaction
โย ย โโโ call
โย ย โโโ estimateGas
โย ย โโโ getPastLogs
โย ย โโโ subscribe
โย ย โโโ clearSubscriptions
โย ย โโโ getEnergy
โย ย โโโ getChainTag
โย ย โโโ getBlockRef
โย ย โโโ accounts
โย ย โโโ Contract
โ โโโ Constructor(new Contract())
โ โโโ clone
โ โโโ deploy
โ โโโ methods
โ โโโ methods.myMethod.call
โ โโโ methods.myMethod.send
โ โโโ methods.myMethod.estimateGas
โ โโโ methods.myMethod.encodeABI
โ โโโ events
โ โโโ once
โ โโโ events.myEvent
โ โโโ events.allEvents
โ โโโ getPastEvents
โโโ utils
Send Transaction
In Thor official implementation , the client DOES NOT neither manage user's private-key/keyStore nor use private key to sign a Transaction. Unfortunately, thorify can not directly perform eth_sendTransaction but there is another way to sign a transaction.
In web3.js accounts, it gives the opportunity to add your private-key, stored in your runtime context (In Node.js context, it's stored in memory while in Browser context, it's stored in memory/local storage), to accounts module. When you are trying to send a transaction, the module will check the private key associated with from field. Once the private key and from have been matched, the module will sign the transaction. The APIs that follows the mechanism are:
web3.eth.sendTransaction()contract.deploy.send()contract.methods.myMethod.send()
Documentation
Play with multi-clause
- thor-devkit.js supports multi-clause and sign transaction
- send signed transaction using sendSignedTransaction
FAQ
How do I send VTHO token
VTHO is a token that compatible with VIP180(ERC-20), you can build a contract instance using web3 and do what ever you want.
- VTHO source code
- Contract Address:
0x0000000000000000000000000000456E65726779
Multi party payment protocol or sponsored contract
It's done by calling the functions of prototype contract, check wiki page) for detailed info about prototype contract.
Method not supported
The RESTful API of Thor is different with Ethereum's JSON-RPC, therefore, there are some methods in web3 are not supported by thorify, feel free to open an issue discuss the features.
Notes
- There are three special block number in Ethereum:
earliest,latest,pending. In VeChain Thor, we introducedbestblock and there is nopendingblock, so they will be replaced with0(aka genesis),best,best
Compatibility
Currently, Thorify is compatible with web3@1.*, tested versions are 1.2~1.7.1.
Debugging
DEBUG=thor:* ts-node index.ts
ts-node index.ts can be replaced with command to run your code, this example is only for Node.js environment. For more detailed info, please refer to debug.
License
This project is licensed under the MIT license, Copyright (c) 2017 VeChain Foundation. For more information see LICENSE.md.