|
|
|
# @harmony-js/core
|
|
|
|
|
|
|
|
This package provides a collection of apis to interact with Harmony blockchain.
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
```
|
|
|
|
npm install @harmony-js/core
|
|
|
|
```
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Create a Harmony instance connecting to testnet
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
const { Harmony } = require('@harmony-js/core');
|
|
|
|
const {
|
|
|
|
ChainID,
|
|
|
|
ChainType,
|
|
|
|
hexToNumber,
|
|
|
|
numberToHex,
|
|
|
|
fromWei,
|
|
|
|
Units,
|
|
|
|
Unit,
|
|
|
|
} = require('@harmony-js/utils');
|
|
|
|
|
|
|
|
const hmy = new Harmony(
|
|
|
|
'https://api.s0.b.hmny.io/',
|
|
|
|
{
|
|
|
|
chainType: ChainType.Harmony,
|
|
|
|
chainId: ChainID.HmyTestnet,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting balance of account `one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7`
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getBalance({ address: 'one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7' })
|
|
|
|
.then((response) => {
|
|
|
|
console.log('balance in ONEs: ' + fromWei(hexToNumber(response.result), Units.one));
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the latest block number
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain.getBlockNumber().then((response) => {
|
|
|
|
console.log('current block number: ' + hexToNumber(response.result));
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the block using block hash
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getBlockByHash({
|
|
|
|
blockHash: '0x08c46ae7249362a7d1f602d44c5a81f33ebdab6a7dcb6068f99610b57911aafd',
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the block using block number
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getBlockByNumber({
|
|
|
|
blockNumber: numberToHex(422635),
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the transaction using hash
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getTransactionByHash({
|
|
|
|
txnHash: '0x56c73eb993b18dc04baacec5c2e9d1292a090f6a978a4a1c461db5255fcbc831',
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the transaction receipt
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getTransactionReceipt({
|
|
|
|
txnHash: '0x56c73eb993b18dc04baacec5c2e9d1292a090f6a978a4a1c461db5255fcbc831',
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the cross-shard transaction receipt
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getCxReceiptByHash({
|
|
|
|
txnHash: '0xcd36a90ff5d5373285c2896ba7bbcd3f5324263c0cb8ecfb7cad2f5fc2fbdbda',
|
|
|
|
shardID: 1,
|
|
|
|
})
|
|
|
|
.then((value) => {
|
|
|
|
console.log(value.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the deployed smart contract code
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getCode({
|
|
|
|
address: '0x08AE1abFE01aEA60a47663bCe0794eCCD5763c19',
|
|
|
|
blockNumber: 'latest',
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the transaction count of an account
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain
|
|
|
|
.getTransactionCount({
|
|
|
|
address: 'one1pdv9lrdwl0rg5vglh4xtyrv3wjk3wsqket7zxy',
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
console.log(hexToNumber(response.result));
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Getting the shard structure and details
|
|
|
|
```javascript
|
|
|
|
hmy.blockchain.getShardingStructure().then((response) => {
|
|
|
|
console.log(response.result);
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Transferring funds using `sendTransaction`
|
|
|
|
```javascript
|
|
|
|
// key corresponds to one103q7qe5t2505lypvltkqtddaef5tzfxwsse4z7, only has testnet balance
|
|
|
|
hmy.wallet.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e');
|
|
|
|
|
|
|
|
async function transfer() {
|
|
|
|
const txn = hmy.transactions.newTx({
|
|
|
|
to: 'one166axnkjmghkf3df7xfvd0hn4dft8kemrza4cd2',
|
|
|
|
value: new Unit(1).asOne().toWei(),
|
|
|
|
// gas limit, you can use string
|
|
|
|
gasLimit: '21000',
|
|
|
|
// 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 hmy.utils.Unit('1').asGwei().toWei(),
|
|
|
|
});
|
|
|
|
|
|
|
|
// sign the transaction use wallet;
|
|
|
|
const signedTxn = await hmy.wallet.signTransaction(txn);
|
|
|
|
const txnHash = await hmy.blockchain.sendTransaction(signedTxn);
|
|
|
|
console.log(txnHash.result);
|
|
|
|
}
|
|
|
|
|
|
|
|
transfer();
|
|
|
|
```
|