sunweb
Version:
JavaScript SDK that encapsulates the TRON HTTP API
344 lines (246 loc) • 12.6 kB
Markdown
SunWeb inherits from TronWeb and services for Sun-network. We encapsulated two objects (mainchain and sidechain) based on TronWeb. The methods and attributes in mainchain or sidechain are exactly the same as the tronweb instance. For example, users can use sunweb.mainchain.trx.getBalance() to get balance from the mainchain. Futhermore, we add some new methods which are as follows in SunWeb class so that users can use them to contact between the main chain and the side chain.
## SunWeb Object
###### SubWeb Instantiation
To use the SunWeb library in your App, you need to instantiate Sunweb.
You can define two objects mainOptions and sideOptions which respectively contains the following key:
- fullNode
- solidityNode
- eventServer
You can also set a:
- fullHost
which works as a jolly. If you do so, though, the more precise specification has priority.
And besides, you may also need to set gateway address:
- mainGatewayAddress
- sideGatewayAddress
- sideChainId
- privateKey (optional)
Supposing you are using a server which provides everything, like TronGrid, you can instantiate SunWeb as:
```javascript
const sunWeb = new SunWeb({
fullHost: 'https://mainapi.trongrid.io'
}, {
fullHost: 'https://sideapi.trongrid.io'
},
mainGatewayAddress: 'TEEXEWrkMFKapSMJ6mErg39ELFKDqEs6w3' ,
sideGatewayAddress: 'TXPHCzmAmjyERtWES6EXTYqUPfJfQSzp2m',
sideChainId,
privateKey: '...');
```
If you are using different servers for anything, you can instantiate like:
```javascript
const sunWeb = new SunWeb({
fullNode: 'http://fullnode.tron.network',
solidityNode: 'http://solidity.tron.network',
eventServer: 'http://mainapi.trongrid.io'
}, {
fullNode: 'http://fullnode.sun.network',
solidityNode: 'http://solidity.sun.network',
eventServer: 'http://sideapi.trongrid.io'
},
mainGatewayAddress: 'TTGhuSDKr561gzHFjkZ1V4ZtMgUEFLa7ct',
sideGatewayAddress: 'TBAHKAbjZ6nn3B4cAfNd2ZXscRoskaxbk2',
sideChainId,
privateKey: '...');
```
For example, you can create a sunWeb instance connected to out sun network test-net like:
```javascript
const sunWeb = new SunWeb({
fullNode: 'http://39.107.123.182:8090',
solidityNode: 'http://47.252.84.158:8090',
eventServer: 'http://47.252.84.141:8080'
}, {
fullNode: 'http://47.252.85.90:8090',
solidityNode: 'http://47.252.85.90:8091',
eventServer: 'http://47.252.85.90:8090'
},
mainGatewayAddress: 'TGHxhFu4jV4XqMGmk3tEQdSeihWVHE9kBP',
sideGatewayAddress: 'TBHr5KpbA7oACUysTKxHiAD7c6X6nkZii1',
'410e7e8f7fbd5d5ffae4f2a7d2f97a83b93db7b5bc',
privateKey: '...');
```
deposit asset from mainchain to sidechain
```javascript
// Format
sunWeb.depostiTrx(callValue, feeLimit, options);
// example
sunWeb.depositTrx(100000000, 1000000);
```
| Parameter | Description | Type | Options |
| --------- | --------------------------------------- | ---------------------- | -------- |
| callValue | Amount of TRX (Units in SUN) to deposit | Integer (Units in SUN) | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
#### depositTrc10
###### deposit trc10 token from main chain to side chain
```javascript
// format
sunWeb.depositTrc10(tokenId, tokenValue, feeLimit, options);
// example
sunWeb.depositTrc10(100059, 10000000, 100000);
```
| Parameter | Description | Type | Options |
| ---------- | ----------------------------------------------- | ---------------------- | -------- |
| tokenId | Token Id of trc10 | Integer | Required |
| tokenValue | Amount of trc10 token (Units in SUN) to deposit | Integer (Units in SUN) | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
#### depositTrc20
###### deposit trc20 token from main chain to side chain
Note: You have to mapping TRC20 contract to side chain with the mappingTrc20 function provided by SunWeb. Then you also have to use the approveTrc20 function. Only done with the two steps before, you can depositTrc20 from main chain to side chain.
```javascript
// format
sunWeb.depositTrc10(num, feeLimit, contractAddress, options);
// example
sunWeb.depositTrc10(1000000, 1000000, 'TD9Jrm546pGkzRu7K5nitMxk8nn75wXNkQ');
```
| Parameter | Description | Type | Options |
| --------------- | ------------------------------------------ | ------------- | -------- |
| Num | Amount of TRC20 (Units in SUN) to deposit | Integer | Required |
| feeLimit | Cost limit | Integer, long | Required |
| contractAddress | Main Chain TRC20 Contract Address | String | Required |
| options | The permissions Id | Object | Optional |
#### depositTrc721
###### deposit trc20 token from main chain to side chain
Note: You have to use mappingTrc721 and approveTrc721 before depositTrc721 like depositTrc20.
```javascript
// format
sunWeb.depositTrc721(id, feeLimit, contractAddress, options);
// example
sunWeb.depositTrc10(1000000, 1000000, 'TCLRqK6aP2xsCZWhE2smkYzdRHf9uvyz5P');
```
| Parameter | Description | Type | Options |
| --------------- | ---------------------------------- | ------------- | -------- |
| id | Id of TRC721 to deposit | Integer | Required |
| feeLimit | cost limit | Integer, long | Required |
| contractAddress | Main Chain TRC721 Contract Address | String | Required |
| options | The permissions Id | Object | Optional |
```javascript
// format
sunWeb.approveTrc20(num, feeLimit, contractAddress, options);
// example
sunWeb.approveTrc20(10000, 10000000, 'TGKuXDnvdHv9RNE6BPXUtNLK2FrVMBDAuA');
```
| Parameter | Description | Type | Options |
| --------------- | --------------------------------- | ------------- | -------- |
| Num | Num of TRC20 | Integer | Required |
| contractAddress | Main Chain TRC20 Contract Address | String | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
```javascript
// format
sunWeb.approveTrc721(id, feeLimit, contractAddress, options);
// example
sunWeb.approveTrc721(100, 10000000, 'TUxDmFbEceGgjWCb6rLVcrFgnsWwofPdPq');
```
| Parameter | Description | Type | Options |
| --------------- | ---------------------------------- | ------------- | -------- |
| Num | Id of TRC721 | Integer | Required |
| contractAddress | Main Chain TRC721 Contract Address | String | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
```javascript
// format
mappingTrc20(trxHash, feeLimit, options);
// example
mappingTrc20('548442d9080605a60adf1d30cc126a2b9c6308cbe9ec224f8c67a6c2590fa299', 100000, , options);
```
| Parameter | Description | Type | Options |
| --------- | ------------------------------------------------------------ | ------------- | -------- |
| trxHash | The hash value of the transaction for the main chain deployment TRC20 contract | Hex string | Required |
| feeLimit | cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
```javascript
// format
mappingTrc721(trxHash, feeLimit, options);
// example
mappingTrc721('548442d9080605a60adf1d30cc126a2b9c6308cbe9ec224f8c67a6c2590fa299', 100000, , options);
```
| Parameter | Description | Type | Options |
| --------- | ------------------------------------------------------------ | ------------- | -------- |
| trxHash | The hash value of the transaction for the main chain deployment TRC721 contract | Hex string | Required |
| feeLimit | cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
```javascript
// Format
sunWeb.withdrawTrx(callValue, feeLimit, options);
// example
sunWeb.withdrawTrx(100000000, 1000000);
```
| Parameter | Description | Type | Options |
| --------- | --------------------------------------- | ---------------------- | -------- |
| callValue | Amount of TRX (Units in SUN) to deposit | Integer (Units in SUN) | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
### withdrawTrc10
###### Withdraw trc10 token from side chain to main chain
```javascript
// format
sunWeb.withdrawTrc10(tokenId, tokenValue, feeLimit, options);
// example
sunWeb.withdrawTrc10(100059, 10000000, 100000);
```
| Parameter | Description | Type | Options |
| ---------- | ----------------------------------------------- | ---------------------- | -------- |
| tokenId | Token Id of TRC10 | Integer | Required |
| tokenValue | Amount of TRC10 token (Units in SUN) to deposit | Integer (Units in SUN) | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
#### withdrawTrc20
###### withdraw trc20 token from side chain to main chain
```javascript
// format
sunWeb.withdrawTrc20(num, feeLimit, contractAddress, options);
// example
sunWeb.withdrawTrc20(10000, 10000000, 'TWzXQmDoASGodMss7uPD6vUgLHnkQFX7ok');
```
| Parameter | Description | Type | Options |
| --------------- | ----------------------------------------------- | ------------- | -------- |
| Num | Num of TRC20 | Integer | Required |
| contractAddress | Side Chain TRC20 Contract Address after mapping | Integer | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |
```javascript
// format
sunWeb.withdrawTrc721(id, feeLimit, contractAddress, options);
// example
sunWeb.withdrawTrc721(101, 10000000, 'TA2xrVESq2UcEtDtgPzxNJEiLgxmMVdtFR');
```
| Parameter | Description | Type | Options |
| --------------- | ----------------------------------------------- | ------------- | -------- |
| id | Id of TRC721 | Integer | Required |
| contractAddress | Side Chain TRC20 Contract Address after mapping | Integer | Required |
| feeLimit | Cost limit | Integer, long | Required |
| options | The permissions Id | Object | Optional |