Skip to content

trustnote-org/rust-trustnote

Repository files navigation

TrustNote Rust SDK

Build Status

Re-implementation of TrustNote using Rust, currently it connects to the TrustNote testnet only.

Getting Started

Prerequistes

Note: You can also compile the SDK for other target platforms. If you want to do so, the source code is available here:

Get the Release (Ubuntu Linux)

  1. Download the package and unzip it
wget https://github.com/trustnote/rust-trustnote/releases/download/0.3.0/ubuntu_ttt.zip
unzip ubuntu_ttt.zip
  1. Set the permission and make it executable
chmod +x ttt

Initialize a New Wallet

./ttt init

Because you are initializing a new wallet from scratch, the system will generate a default mnemonic for you.

Import an Existing Wallet from Mnemonic

./ttt init "select initial pet jazz alone stamp copper vault private slight rocket stock"

Configuration (Optional)

Whether you are initiating a new wallet, or importing an existing wallet, in both cases, mnemonics will be stored in a file called settings.json in the same directory after the wallet is initialized.

Here is an example when you opens the file:

{
  "hub_url": [
    "dev.trustnote.org:6616"
  ],
  "mnemonic": "select initial pet jazz alone stamp copper vault private slight rocket stock"
}

Note hub_url is the address of the hub in use, and dev.trustnote.org:6616 is the hub that used by the TrustNote TestNet, if you want to switch your wallet to connect to the mainnet, you can change hub_url as bob.trustnote.org:6616.

The 12 words after “mnemonic” are your personal mnemonics. You can also change the mnemonic over here, but please note the mnemonic must be generated by a TrustNote wallet otherwise it simply won’t work.

Every time is you make any changes to settings.json, you will need to manually delete trustnote_light.sqlite, the database file in the same folder and run the following command (Check the information of your wallet) to apply your changes and check if your changes take effect.

Check the Information of Your Wallet

After wallet being initialized or imported, or after the configuration being manually updated, you will be able to review the information of your wallet by running this command:

./ttt info

Then it will show your wallet’s information like this:

current wallet info:

device_address: 0IKB7F3DAVIB3YHKJYWWVSBC6CSK76IE7
wallet_public_key: xpub6D9Xmp2Y9XTpZYZ5xk4cNxSQoBufvQ5SWLATBwyaSh38G6aiCrUzUGuEtMoRMPy3a3wKJ8B6obtpUvu89sBbadqah9iXLWohTZi9FWj7JML
└──wallet_id(0): UYwIQm+PIzvY5lceD6uX+yAc86LfaC3RFobSdxGfHmk=
   └──address(0/0): HU475BN5CEEPYL3WPLK5KA3FKXXN5NAD
      ├── path: /m/44'/0'/0'/0/0
      ├── pubkey: A3OTtemVlcteNZafJyXoCbE0UJ5SL74UI0cIjyJC4bCe
      └── balance: 299.999MN

In this example, HU475BN5CEEPYL3WPLK5KA3FKXXN5NAD is the wallet’s address, and the wallet’s balance is 299.999 MN of TTT.

Get some TTT Test Notes for free

By default, this tutorial runs on TrustNote testnet instead of mainnet, and for testing purpose, we do provide some TTT Test Notes for free:

Open http://dev.trustnote.org/getTTT from your web browser, simple input your wallet address and press the “get TTT” button.

Usually the TTT Test Notes will be transferred to your wallet in about a few seconds, sometimes it may take up to 1 or 2 minutes. You can check the new balance of your wallet by running the ./TTT info command again.

Note: TTT Test Notes can be used to issue tokens and pay for the transaction fees on the testnet, however it doesn’t work on TrustNote’s mainnet, and it can’t be traded on those crypto-currency markets where TTT is currently being listed. ref

Transfer the Money (TTT Test Notes)

Before we move to this vital step, please make sure you have a seperate wallet addresses for testing. In this tutorial, we will use address OKLGMIWBCFITVWKZF3JASA23OMZLICSH as a sample.

If you don’t have a separate address can be used for testing, don’t worry, we provided you an easy way to generate address and its mnemonic for your testing purpose.

Simply visit http://developers.trustnote.org/fancy-address/index.html and get your testing wallet address including its mnemonic. Now let’s transferring the TTT Test Notes from your new wallet to the testing address by running the following command:

./ttt send -p OKLGMIWBCFITVWKZF3JASA23OMZLICSH 9.99 -t hello

From the return message below, you will see the from address and to address, and the amount being transferred.

Note -t specifies any texts for your own record, it is an optional field but please don’t forget that texts will be saved on a blockchain!

refresh history done

FROM  : HU475BN5CEEPYL3WPLK5KA3FKXXN5NAD
TO    : 
      address : OKLGMIWBCFITVWKZF3JASA23OMZLICSH, amount : 9.99
UNIT  : ly1DYqhjP/QngSCHP6t1NqumabOZQdR5bSiqzDDt7bc=
TEXT  : hello
DATE  : 2018-08-15 15:59:27.973

Check the Balance

Again, we have several options here:

  1. Check the balance including both confirmed and unconfirmed:
./ttt balance
  1. Check the balance (confirmed only):
./ttt balance -s
  1. Check the balance (unconfirmed only):
./ttt balance -p

Tip: As TrustNote uses UTXO model, sometime you will see strange transactions such as: When Bob transfers 100 TTT to Alice, you may see Bob transferred 150 TTT to Alice, and then 50 TTT are transferred from Alice back to Bob, that’s why sometime you may notice there is 50 TTT pending transaction (unconfirmed) during the process. But after being confirmed, everything should come to normal again.

What else I can do with the Rust SDK?

Running SDK in a different location (file directory) will generate settings.json file in different places. This means that you can use Python, PHP, or any other scripting language to build a multi-user wallet system.

For example, you can put the Rust SDK on the server and provide your web-based multi-account wallet service running on TrustNote network.

This is still an early version of the release, more features will be added in futures releases. I hope you like it! To help us make it better, you are welcomed to report any bugs on TrustNote Github bug portal, or ask any questions you might have on the TrustNote subreddit.

See WIP_INIT.md for information about the Rust Implementation of the TrustNote protocol.

See RaspberryPi.md for how to build the TrustNote Rust SDK from Source for Raspberry Pi.