Client Library built on the TON OS API
for Web, Node.js and React Native platforms
Have a question? Get quick help in our channel:
- Table of Content
- Useful links
- Library distribution
- Installation
- Setup library
- Use library
- Build bridge binaries
- Build binaries
- Run tests
- Download precompiled binaries
-
AppKit - JS package built on top of @tonclient/core package which purpose is to simplify writing applications on Free TON. It helps to implement most common use-cases with less coding.
-
SDK guides - get a deeper understanding by diving into our guides where you can find extensive explanations of each step of DApp development on Free TON.
-
SDK Samples - a good place to get to practice with SDK examples asap:)
This SDK is distributed via npm packages:
- @tonclient/core – common binding independent from JavaScript platform you use.
- @tonclient/lib-node – bridge to NodeJs including NodeJs binary addon.
- @tonclient/lib-web – bridge to browser including WASM module.
- @tonclient/lib-react-native – bridge to mobile react-native platform including static libraries for iOS and Android.
You can find their source code in this repository.
- Node.js 14 LTS
Package probably works OK on other Node.js versions, but we use 14 version in our testing pipelines so we quarantee its stable work only on 14 version.
npm i --save @tonclient/core
The bridge package will download precompiled binaries from TON Labs cloud storage. If you want to rebuild binary from sources see [build binaries](#build binaries) section.
npm i --save @tonclient/lib-node
npm i --save @tonclient/lib-web
Important! Each time you run npm install
the new version of the tonclient.wasm
and index.js
is downloaded. So you have to always update the tonclient.wasm
inside your web package before publishing (starting local web server, creating web bundle etc.). If you use Webpack the best way is to use CopyPlugin.
npm i --save @tonclient/lib-react-native
You must initialize the library before the first use. The best place to do it is an initialization code of your application.
You need to attach the chosen binary module to the TonClient
class.
NodeJs:
const {TonClient} = require("@tonclient/core");
const {libNode} = require("@tonclient/lib-node");
// Application initialization
TonClient.useBinaryLibrary(libNode)
Web:
import {TonClient} from "@tonclient/core";
import {libWeb} from "@tonclient/lib-web";
// Application initialization
TonClient.useBinaryLibrary(libWeb);
By default the library loads wasm module from relative URL /tonclient.wasm
.
You can specify alternative URL if you want to place (or rename) wasm module.
import {TonClient} from "@tonclient/core";
import {libWeb, libWebSetup} from "@tonclient/lib-web";
// Application initialization
libWebSetup({
binaryURL: "/assets/tonclient_1_2_3.wasm",
});
TonClient.useBinaryLibrary(libWeb);
React Native:
import {TonClient} from "@tonclient/core";
import {libReactNative} from "@tonclient/lib-react-native";
// Application initialization
TonClient.useBinaryLibrary(libReactNative);
All library functions are incorporated into TonClient
class. Each client module is represented as a
property of the TonClient
object.
To start use library you must create an instance of the TonClient
class:
const client = new TonClient();
const keys = await client.crypto.generate_random_sign_keys();
You can pass a configuration object in TonClient
constructor:
const client = new TonClient({
network: {
endpoints: ['net.ton.dev']
}
});
In the end, close client to close all the sockets related to it:
client.close();
You can find reference guide to TonClient
here: TON-SDK API Documentation
You can build binaries from sources.
If you install a bridge package from the npmjs
you can build it with the following commands (e.g. for nodejs):
cd node_modules/@tonclient/lib-node/build
cargo run
If you checkout this repository you can build binaries for all bridges.
cd packages/lib-node/build
cargo run
cd ../../../lib-web/build
cargo run
cd ../../../lib-react-native/android/build
cargo run
cd ../../ios/build
cargo run
Also the archives will be created to be published on the TON Labs cloud storage. Archives will be placed into the following folders:
packages/lib-node/publish
packages/lib-web/publish
packages/lib-react-native/ios/publish
packages/lib-react-native/android/publish
This suite has test packages:
tests
– common test package containing all unit tests for a library.tests-node
– tests runner on node js.tests-web
– tests runner on web browser.tests-react-native
– tests runner on react native platform.
cd packages/core
npm i
npx tsc
cd packages/tests
npm i
npx tsc
cd packages/tests-node
npm i
node run
cd packages/tests-web
npm i
node run
cd packages/tests-react-native
npm i
node run ios
node run android
TON_USE_SE=true TON_NETWORK_ADDRESS=http://localhost node run
Instead of building library yourself, you can download the latest precompiled binaries from TON Labs SDK Binaries Store.
Binary | Target | Major | Download links |
---|---|---|---|
Node.js AddOn | Win32 | 1 | tonclient.node |
macOS x86_64 | 1 | tonclient.node |
|
macOS aarch64 | 1 | tonclient.node |
|
Linux | 1 | tonclient.node |
|
React Native Module | Android x86_64 | 1 | libtonclient.so |
Android i686 | 1 | libtonclient.so |
|
Android armv7 | 1 | libtonclient.so |
|
Android aarch64 | 1 | libtonclient.so |
|
iOS | 1 | libtonclient.a |
|
WASM Module | Browser | 1 | tonclient.wasm , index.js |
Downloaded archive is gzipped file
Copyright 2018-2020 TON DEV SOLUTIONS LTD.