|
|
|
@ -7,6 +7,7 @@ |
|
|
|
|
2. [import an existing privateKey to create Account](#import-an-existing-privatekey-to-create-account) |
|
|
|
|
3. [Encrypt/Export keyStore file, Decrypt/Import keyStore file](#encryptexport-keystore-file-decryptimport-keystore-file) |
|
|
|
|
4. [Address format getter](#address-format-getter) |
|
|
|
|
5. [Sign a transaction](#sign-a-transaction) |
|
|
|
|
3. [Usage of Wallet](#usage-of-wallet) |
|
|
|
|
1. [Dependencies](#dependencies-1) |
|
|
|
|
|
|
|
|
@ -51,9 +52,9 @@ The `Wallet` class is class that stores all `Account` instance, you can do CRUD |
|
|
|
|
|
|
|
|
|
// create a custom messenger |
|
|
|
|
const customMessenger = new Messenger( |
|
|
|
|
new HttpProvider('http://localhost:9500'), |
|
|
|
|
ChainType.Harmony, // if you are connected to Harmony's blockchain |
|
|
|
|
ChainID.HmyLocal, // check if the chainId is correct |
|
|
|
|
new HttpProvider('http://localhost:9500'), |
|
|
|
|
ChainType.Harmony, // if you are connected to Harmony's blockchain |
|
|
|
|
ChainID.HmyLocal, // check if the chainId is correct |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
// to create an Account with random privateKey |
|
|
|
@ -174,6 +175,68 @@ The `Wallet` class is class that stores all `Account` instance, you can do CRUD |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Sign a transaction |
|
|
|
|
|
|
|
|
|
```typescript |
|
|
|
|
|
|
|
|
|
// import the Account class |
|
|
|
|
import {Account} from '@harmony-js/account' |
|
|
|
|
|
|
|
|
|
// import Transaction class from '@harmony-js/transaction' |
|
|
|
|
import {Transaction} from '@harmony-js/transaction' |
|
|
|
|
|
|
|
|
|
// Messenger is optional, by default, we have a defaultMessenger |
|
|
|
|
// If you like to change, you will import related package here. |
|
|
|
|
import { HttpProvider, Messenger } from '@harmony-js/network'; |
|
|
|
|
import { ChainType, ChainID, Unit } from '@harmony-js/utils'; |
|
|
|
|
|
|
|
|
|
// create a custom messenger |
|
|
|
|
const customMessenger = new Messenger( |
|
|
|
|
new HttpProvider('http://localhost:9500'), |
|
|
|
|
ChainType.Harmony, // if you are connected to Harmony's blockchain |
|
|
|
|
ChainID.HmyLocal, // check if the chainId is correct |
|
|
|
|
) |
|
|
|
|
// suppose we have an account |
|
|
|
|
const myPrivateKey = '0xe19d05c5452598e24caad4a0d85a49146f7be089515c905ae6a19e8a578a6930' |
|
|
|
|
const myAccountWithMyPrivateKey = new Account(myPrivateKey) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const txnObject = { |
|
|
|
|
// token send to |
|
|
|
|
to: 'one166axnkjmghkf3df7xfvd0hn4dft8kemrza4cd2', |
|
|
|
|
// amount to send |
|
|
|
|
value: '1000000000000000000000', |
|
|
|
|
// gas limit, you can use string or use BN value |
|
|
|
|
gasLimit: '210000', |
|
|
|
|
// send token from shardID |
|
|
|
|
shardID: 0, |
|
|
|
|
// send token to toShardID |
|
|
|
|
toShardID: 0, |
|
|
|
|
// gas Price, you can use Unit class, and use Gwei, then remember to use toWei(), which will be transformed to BN |
|
|
|
|
gasPrice: new Unit('100').asGwei().toWei(), |
|
|
|
|
// if you set nonce manually here, and remember, the `updateNonce` of `Account.signTransaction` should be set to false |
|
|
|
|
nonce: 0, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const txn = new Transaction(txnObject, customMessenger); |
|
|
|
|
|
|
|
|
|
async function signTheTxn() { |
|
|
|
|
// Account.signTransaction(transaction: Transaction, updateNonce?: boolean, encodeMode?: string, blockNumber?: string): Promise<Transaction> |
|
|
|
|
// If the 2nd parameter `updateNonce` is set to true, it will query and update account's nonce before it signs |
|
|
|
|
const signedTxn = await myAccountWithMyPrivateKey.signTransaction(txn, false, 'rlp', 'latest'); |
|
|
|
|
|
|
|
|
|
// see if the transaction is signed |
|
|
|
|
console.log(`\n see if transaction is signed: \n ${signedTxn.isSigned()} \n`); |
|
|
|
|
|
|
|
|
|
// get the tranaction bytes |
|
|
|
|
console.log(`\n the signed bytes is: \n ${signedTxn.getRawTransaction()} \n`); |
|
|
|
|
|
|
|
|
|
return signTheTxn; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
signTheTxn(); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Usage of Wallet |
|
|
|
|
|
|
|
|
|