tonlib-go
tonlib-go copied to clipboard
TonLib for Golang
TONLIB Golang library
TONLIB Golang library for accessing Telegram Open Network with liteclient protocol, which is based itself on tdlib library. Warning: this repository is under active development, not ready for production use
Install
$ go get -u github.com/mercuryoio/tonlib-go
Usage
import "github.com/mercuryoio/tonlib-go"
Supported methods
- [x] createNewKey
- [x] deleteKey
- [x] exportKey
- [x] exportPemKey
- [x] exportEncryptedKey
- [x] importKey
- [x] importPemKey
- [x] importEncryptedKey
- [x] changeLocalPassword
- [x] unpackAccountAddress
- [x] packAccountAddress
- [x] wallet.init
- [x] wallet.getAccountAddress
- [-] wallet.getAccountState
- [-] wallet.sendGrams
- [x] raw.sendMessage
- [x] raw.getTransactions
- [x] raw.getAccountState
- [x] generic.sendGrams
- [x] getLogStream
- [x] sync
- [x] CreateAndSendMessage
- [ ] generic.createSendGramsQuery
- [ ] query.send
- [ ] query.forge
- [ ] query.estimateFees
- [ ] query.getInfo
- [ ] smc.load
- [ ] smc.getCode
- [ ] smc.getData
- [ ] smc.getState
- [ ] smc.runGetMethod
Examples
Create new client
options, err := tonlib.ParseConfigFile("path/to/config.json")
if err != nil {
panic(err)
}
// make req
req := tonlib.TonInitRequest{
"init",
*options,
}
tonClient, err = tonlib.NewClient(
&req, // init request
tonlib.Config{}, // config
10, // timeout in seconds for each (currently only QueryEstimateFees) tonlib.Client`s public method
)
if err != nil {
panic(err)
}
defer cln.Destroy()
Create new private key
// prepare data
loc := SecureBytes("loc_pass")
mem := SecureBytes("mem_pass")
seed := SecureBytes("")
// create new key
pKey, err := cln.CreateNewKey(&loc, &mem, &seed)
if err != nil {
panic(err)
}
Get wallet address
addrr, err := cln.WalletGetAccountAddress(tonlib.NewWalletInitialAccountState("YourPublicKey"))
if err != nil {
panic(err)
}
CLI:
To install sample cli application:
$ go get -u github.com/mercuryoio/tonlib-go/cmd/tongo
To run sample cli app your have to set LD_LIBRARY_PATH:
For linux export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path2repository>/lib/linux
For MacOS export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path2repository>/lib/darwin
Code generation from new *.tl files released by TON team
If you need to update structures and add new methods based on a fresh release of TON`s client you can do it by using code generation command. In order to perform such operation - run the command bellow and provide path of *.tl file to the running command as in the example bellow.
$ go run github.com/mercuryoio/tonlib-go/cmd/tlgenerator /path/to/repos/ton/tl/generate/scheme/tonlib_api.tl
Developers
Contribute
PRs are welcome!