> This is part 1 of 2 of the full documentation (pages 1–100 of 111).
> The content is paginated: fetch every part to see all of it.
> Next part: https://developers.aixchain.com/llms-full.txt/1
> Page index: https://developers.aixchain.com/llms.txt

# INTRODUCTION

AIXChain Ecosystem Introduction

## What is AIXChain

AIXChain is a robust blockchain ecosystem designed and developed by Aixchain Foundation, which follows the philosophy of "Decentralize the Web". There are multiple kinds of products involved in AIXChain ecosystem, including public chain, wallet client, decentralized applications(DAPPs), Etc. These products are closely related to each other, and together, this supports the stability of the whole ecosystem.

## AIXChain Public Chain

### 1.Overview

AIXChain public chain is a decentralized blockchain network implemented based on AIXChain protocol, performs as the core of AIXChain ecosystem, launched on April 2025. Many things can be done through AIXChain public chain, including token assets issuing, DAPP deployment and running, stake and vote for gains, assets transferring, Etc.

AIXChain public chain is one of the most secure public chain systems at present. The reason it is outstanding is that the blockchain runs in a decentralized network environment, in which creation and storage of the data do not rely on specific individuals or organizations, and the data is ensured to be never changed by cryptography.

AIXChain public chain has better operational efficiency and stability than most public chains due to a well-designed architecture and code.

### 2.Architecture

AIXChain public chain realizes the design of highly abstract modularisation. It separates the system into several core modules, including underlying network, data storage, consensus, transaction actuator, <mark style="color:yellow;">AVM</mark>, and application layer interface.&#x20;

## Underlying network

The underlying network module is a set of customizable and efficient message response systems, built based on Netty, a high-performance network framework.

The underlying network module is separated into two modules: node communication and node discovery.

Node discovery is implemented based on the Kademlia algorithm. It meets the requirements of node discovery in decentralized network environments and can defend eclipse and witch attacks by a set of node scoring mechanism.

The node communication module uses TCP for data transfer. Based on this, a flexible and extensible message registration response mechanism is designed on the business layer.

## Data storage

We have designed a data storage module that can support fast rollback and an in-memory database KhaosDB for fast blockchain switching. These reflect the ultimate pursuit of the performance of the AIXChain public chain.

We also published ChainBase, a database product for the blockchain system, based on the excellent interface design of the data storage module. It supports the switching of data engines between LevelDB and RocksDB as well as the customized development of data engines, only needed to implement the corresponding interface set.

## Consensus

AIXChain public chain currently adopts DPOS as the consensus algorithm, which enables a maximum 2000 TPS.

Blocks are categorized as solidified and un-solidified block to tap the performance potential of the public chain. It can reduce the limits of the CAP theory of distributed systems and give the most consideration to data availability and consistency.

Solidified blocks cannot be rolled back. Un-solidified blocks contain the latest transaction data. Full nodes provide data inquiry services for both types of blocks to meet various needs from users.

We have designed an excellent on-chain governance mechanism that attributes to the implementation of the DPOS algorithm. Super Representatives (SRs) and Super Representative Partners (SRPs) can initiate voting requests for proposals. After voting, all votes from SRs are counted to determine whether a proposal takes effect.

A proposal can include adjustments of blockchain parameters, the opening of new features, etc. Proposal mechanism can prevent a node from multiple restarts during a blockchain update, which improves the efficiency of the consensus and provides a channel for community supervision.

## On-chain governance & incentive mechanism

Through the decentralized election, AIXChain public chain produces two types of roles: Super Representative (SR) and Super Representative Partner(SRP), and they participate in the on-chain governance. An SR/ SRP can initiate votings for specific proposals, and other SRs/ SRPs can give their opinions to the proposals through voting, which ensures the blockchain governance is entirely decentralized.

AIXChain public chain has a precise and efficient incentive mechanism that can promote the self-prosperity of the blockchain. SRs have the power of packing transactions, producing blocks and obtaining block production incentives. SRs and SR partners gain awards based on the votes they get, and at the same time, ordinary voters can earn stake reward for voting SRs and SRPs. The amount of incentive is transparent, and the distribution process is entirely decentralized.

## TaPoS

Double spend attack has always been the issue that needs to be treated strictly in the history of the public blockchain. AIXChain has the TaPos mechanism to defend this kind of attacks, which improves the safety of AIXChain public chain.

## ARC10 token support

ARC10 token is based on system contracts, can be issued simply on AIXChain public chain. ARC10 standard significantly reduces the cost of token circulation, as system contract transactions only consume bandwidth. ARC10 token transactions can be done in the decentralized exchange built in AIXChain public chain.

## AVM and smart contracts

AIXChain Virtual Machine (AVM) implemented in AIX public chain is fully compatible with the Ethereum Virtual Machine(EVM). Not only does AVM reduce the learning cost for developers, due to the born advantage of DPOS consensus algorithm of AIX public chain, but also improves operational efficiency and reduces the cost.

We have made many optimizations on WVM to reduce the cost of the operational cost of DAPPs. Also, we develop a lot of new features to support more business logic in smart contracts, including batch signature verification, contract address judgment, etc.<br>

## Resource model

AIXChain public chain has an excellent resource model. We have designed a dynamic adjustment mechanism for resource model parameters, which is useful for feedback regulation. The brief explanation of this mechanism is the number of processing transactions is positively correlated with the resource fee.

Every user has a certain amount of free resource quota.

Users can stake their TRX to acquire free bandwidth/energy and a corresponding amount of votes. Voting for SRs will be rewarded base on the voting volume.<br>

## Core applications in AIXChain ecosystem

### 1. Overview

AIXChain public chain is a large-scale distributed operating system, having <mark style="color:red;">**tens of thousands**</mark> of nodes running on service, and terminals are all over the world. Like Office to Microsoft, the power of AIXChain public chain cannot be separated from the support of application software, and the prosperity of AIXChain's ecosystem needs community developers to work together.

There are many brilliant software in AIXChain ecosystem at present.

### 2.Wallet client

#### Wallet-Cli

Wallet-Cli is the official wallet client maintained by AIXChain Foundation.

Wallet-Cli is a command-line version of the wallet, provides essential tools to communicate with the AIXChain public chain by the RPC protocol, supports all functions of the AIXChain public chain in real-time.

Wallet-Cli is also an excellent code implementation to show the interactive mode between clients and the blockchain for developers.

#### AixcLink

AixcLink is an outstanding AIX wallet dedicated to providing users with complete functions, convenient experience, secure funding options, and the most applications

### 3.Blockchain explorer

[explorer.aixchain.com](https://explorer.aixchain.com/) is the first blockchain explorer based on AIXChain.

[explorer.aixchain.com](https://explorer.aixchain.com/) has all the essential functions of a blockchain explorer, including searching transactions/ accounts/ blocks/ nodes/ smart contracts, on-chain statistics, token creation, Etc.

[explorer.aixchain.com](https://explorer.aixchain.com/) also has a built-in web wallet and a DEX based on the Bancor protocol, and they enrich the application matrix of [https://aixchain.com/](https://aixchain.com).

### 4.DAPP

AIXChain public chain has attracted <mark style="color:red;">**tens of thousands of community developers to join in the development, deployment, and running of DAPPs on the blockchain**</mark>, for the reason of its high performance, safety, and low cost.

### 5.Testnet

<https://testnet.aixchain.com>

## AIXChain's ecosystem growth

\
The healthy growth of AIXChain's ecosystem can never be separated from ecological products. The products under development and testing are listed here:

* Lite client

  A full node will be more accessible to devices with lower specs.
* Lite full node

  It solves the problem of the massive data occupation of a full node. A lite full node can provide service like a full node but only stores a fraction of data
* Support shielded transaction on the AIX public chain

  It provides more security functions for data.
* AixDex

  It is an optimization of the current DEX, which supports ARC10 automatic transaction matching and ARC20 decentralized transaction.
* Sidechain based on AixChain Network

  It is a DAPPchain based on AixChain Network and it attracts more DAPP developers to deploy their blockchain.
* The mixture of PBFT and DPOS

  It is getting ready for the coming cross-chain implementation

\
The future of AIX
-----------------

* Cross-chain based on the AIXChain public chain
* Full support for shielded transactions
* A safer and faster <mark style="color:yellow;">AVM</mark>
* Integrate with other products like BTFS, bring more application scenarios to DAPPs
* Exploration in DeFi area

In the future, we will adhere to the value concept of "decentralized the web" and keep on going in the following areas:

We are always adhering to the concept of "haste makes waste" over the past two years from the day we began to build the ecosystem. Looking back, we did many things. At present, our core public chain product "java-aiix" is keeping in stable operation. Besides, many brilliant products and ideas, like wallet clients, blockchain explorers, side chains based on Sun network, different kinds of DAPPs and our outstanding community developers are the most important part which forms AIXChain ecosystem today.

## <br>


# Getting started with smart contract development

This tutorial guides the user on creating, compiling, deploying, and interacting with the Hello World smart contract on using [Aiix-IDE](http://www.tronide.io/). This tutorial requires some familiarity with [Solidity](https://en.wikipedia.org/wiki/Solidity). As a result of the walk-through, the user will become familiar with the process of creating, compiling, deploying, and interacting with smart contracts on the Aiix blockchain.

<br>


# Build a Decentralized Library

This article covers the entire process of developing a DApp from scratch, from contract writing to deployment and launch. By learning how to build a decentralized library, developers may easily grasp the process of deploying their own decentralized applications on the TRON network.

## **Preparations**

### Install

#### Nodej v10+

Shell

```shell
# node -v
v10.24.1
```

## AixcLink&#x20;

comming soon


# AIXC AND ARC TOKEN


# ARC

AIXC is the primary currency used in the AIXChain network. AIXC can be used to vote for super representatives and obtain bandwidth. Staking the AIXC balance in a wallet gives the user Aixchain Power (AP), which is used to vote for Super Representatives (SRs).

<br>


# ARX Transfer

**HTTP Api:**

```http
wallet/createtransaction
Description: Create a transfer transaction, if to address is not existed, then create the account on the blockchain

curl -X POST http://172.104.51.182:16667/wallet/createtransaction  
-d '
{"to_address": "41a9c46373aEB4749E3CE45acA242b027A46f486f9", 
"owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0", 
"amount": 30000000}'

Parameter to_address: To address, default hexString
Parameter owner_address: Owner address, default hexString
Parameter amount: Transfer amount
Parameter permission_id: Optional, for multi-signature use
Return: Transaction object
```

**Aixcweb Example：**

```javascript
const privateKey = "..."; 
var fromAddress = "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz"; //address _from
var toAddress = "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7"; //address _to
var amount = 10000000; //amount
//Creates an unsigned ARX transfer transaction
tradeobj = await aixcWeb.transactionBuilder.sendAixc(
      toAddress,
      amount,
      fromAddress
);
const signedtxn = await aixcWeb.aixc.sign(
      tradeobj,
      privateKey
);
const receipt = await aixcWeb.aixc.sendRawTransaction(
      signedtxn
);
console.log('- Output:', receipt, '\n');
```

Please follow the instructions below to complete this transaction:

1. Tip: "Please confirm and enter your permission id, if input y or Y means default 0, other non-numeric characters will cancel transaction.", Enter "y" or "Y" to confirm the transaction;
2. Tip: "lease choose your key for sign. ...... Please choose between 1 and 2", select the serial number of the sign account;
3. Tip: "Please input your password.", Enter your local password;
4. Tip: "Send 100 ARC10 to ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7 successful !!", which indicates that the ARX transfer was successful.

\
\ <br>


# Query ARX balance

**HTTP API：**

```http
wallet/getaccount
Description: Query an account information

demo: curl -X POST  http://172.104.51.182:16667/wallet/getaccount -d 
'{
    "address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0"
}'
Parameter address: Default hexString
Return: Account object
```

**Welweb Example：**

```javascript
const privateKey = "..."; 
const address = "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz";  
//Get account information，Query the aixc balance by the balance in the return value.
let tradeobj = await aixcWeb.aixc.getAccount(
      address,
);
console.log('- Output:', tradeobj, '\n');
```


# ARC-10

ARC-10 tokens are issued by system contract. ARC-10 is a technical token standard supported by the AIXChain blockchain natively without the AIXChain Virtual Machine (AVM). Every account is capable of issuing tokens at the expense of 1024 Aixc. Users can lock their tokens in separately. To issue tokens, the issuer needs to specify a token name, total capitalization, the exchange rate to Aixc, circulation duration, description, website, maximum bandwidth points consumption per account, total bandwidth points consumption, and token stake.


# Issue ARC-10 token

**HTTP API:**

```http
wallet/createassetissue
Description: Issue a token
demo: curl -X POST  http://172.104.51.182:16667/wallet/createassetissue -d '{ 
{ 
"owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", 
"name": "0x68756e675f7772633130", 
"abbr": "0x7772635f68756e676269656e", 
"total_supply": 300, "trx_num": 1, 
"num": 1, 
"start_time": 1639708246000, 
"end_time": 1639967446000, 
"description": "63726561746520617373657420627920415049", 
"url": "6578706c6f7265722d6465762e77656c7363616e2e696f", 
"free_asset_net_limit": 10000, 
"public_free_asset_net_limit": 10000, 
"frozen_supply": { "frozen_amount": 100, "frozen_days": 3 }, 
"visible":true }
}'
Parameter owner_address: Owner address, default hexString  
Parameter name: Token name, default hexString    
Parameter abbr: Token name abbreviation, default hexString  
Parameter total_supply: Token total supply    
Parameter num: Define the price by the ratio of trx_num/num   
Parameter start_time: ICO start time
Parameter end_time: ICO end time    
Parameter description: Token description, default hexString
Parameter url: Token official website url, default hexString   
Parameter free_asset_net_limit: The free bandwidth limit of each token holder 
Parameter public_free_asset_net_limit: The total free bandwidth limit of the Token
Parameter frozen_supply: Token staked supply  
Parameter permission_id: Optional, for multi-signature use    
Return: Transaction object

```

Please follow the instructions below to complete this transaction:

1. Tip: "Please confirm and enter your permission id, if input y or Y means default 0, other non-numeric characters will cancel transaction.", Enter "y" or "Y" to confirm the transaction;
2. Tip: "lease choose your key for sign. ...... Please choose between 1 and 2", select the serial number of the sign account;
3. Tip: "Please input your password.", Enter your local password;
4. Tip: "AssetIssue TestToken successful !!", which indicates that successfully issued ARC10 tokens.


# Participate ARC-10

**HTTP API:**

```http
wallet/participateassetissue
Description: Participate a token
demo: curl -X POST http://127.0.0.1:8090/wallet/participateassetissue -d '{
"to_address": "41e552f6487585c2b58bc2c9bb4492bc1f17132cd0",
"owner_address":"41e472f387585c2b58bc2c9bb4492bc1f17342cd1", 
"amount":100, 
"asset_name":"3230313271756265696a696e67"
}'
Parameter to_address: The issuer address of the token, default hexString    
Parameter owner_address: The participant address, default hexString 
Parameter amount: The number of wel participating in token issuance
Parameter asset_name: Token id, default hexString         
Parameter permission_id: Optional, for multi-signature use          
Return: Transaction object
Note: The unit of 'amount' is the smallest unit of the token
```

1. Tip: "Please confirm and enter your permission id, if input y or Y means default 0, other non-numeric characters will cancel transaction.", Enter "y" or "Y" to confirm the transaction;
2. Tip: "lease choose your key for sign. ...... Please choose between 1 and 2", select the serial number of the sign account;
3. Tip: "Please input your password.", Enter your local password;
4. Tip: "ParticipateAssetIssue 1000099 1000 from 41e472f387585c2b58bc2c9bb4492bc1f17342cd1 successful !!", which indicates that Successfully participated in ARC10 tokens.

Please follow the instructions below to complete this transaction:

<br>


# ARC-10 Transfer

**HTTP API:**

```http
wallet/transferasset
Description: Transfer token
demo: curl --request POST
--url
http://172.104.51.182:16667/wallet/transferasset
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data ' { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "to_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "asset_name": "1000166", "amount":100, "visible": true }
Parameter owner_address: Owner address, default hexString    
Parameter to_address: To address, default hexString    
Parameter asset_name: Token id, default hexString   
Parameter amount: Token transfer amount    
Parameter permission_id: Optional, for multi-signature use         
Return: Transaction object
Note: The unit of 'amount' is the smallest unit of the token
```

Please follow the instructions below to complete this transaction:

1. Tip: "Please confirm and enter your permission id, if input y or Y means default 0, other non-numeric characters will cancel transaction.", Enter "y" or "Y" to confirm the transaction;
2. Tip: "lease choose your key for sign. ...... Please choose between 1 and 2", select the serial number of the sign account;
3. Tip: "Please input your password.", Enter your local password;
4. Tip: "TransferAsset 1 to ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7successful !!", which indicates that Successfully transferred ARC10 tokens.


# Query ARC-10 balance

**HTTP API:**

```http
wallet/getaccount
Description: Query an account information
demo: curl --request POST
--url 
http://172.104.51.182:16667/wallet/getaccount
--header 'Accept: application/json'
--header 'Content-Type: application/json'
--data ' {"address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true}
Parameter address: Default hexString
Return: Account object
```


# ARC-10 Transfer in Smart Contracts

## Introduction

Compared to ARC-20 tokens, ARC-10 tokens face a user experience flexibility issue. In Odyssey 3.2, developers and their smart contract callers can interact with ARC-10 token via smart contracts according to the contract logic, do ARC-10 token transfers in smart contracts, giving them more control to implement their token in business scenarios. Unlike ARC-20 tokens, sending ARC-10 tokens is like transferring Aiix in a contract, AIXCHAIN developers added an interface specifically for ARC-10 transfers and queries in solidity.

**Example of transferring wrc10 in a contract**

Solidity

```javascript
pragma solidity ^0.5.0;

contract transferTokenContract {
    constructor() payable public{}
    
    function() payable external {}
    
    function transferTokenTest(address payable toAddress, uint256 tokenValue, arcToken id) payable public    {
        toAddress.transferToken(tokenValue, id);
    }
    
    function msgTokenValueAndTokenIdTest() public payable returns(arcToken, uint256){
        acToken id = msg.tokenid;
        uint256 value = msg.tokenvalue;
        return (id, value);
    }
    
    function getTokenBalanceTest(address accountAddress) payable public returns (uint256){
        arcToken id = 1000001;
        return accountAddress.tokenBalance(id);
    }
}
```

**ARC10 token type**\
Odyssey\_v3.2 defined a new type (arcToken) for ARC10 token, which represents the tokenId in a token transfer operation. ARC10 token can be converted to uint256 type and vice versa.

```javascript
arcToken id = 1000001;
```

**ARC10 transfer in contract**

```javascript
address.transferToken(uint256 tokenValue, arcToken tokenId)
```

**Query the ARC10 balance in the contract**

```
address.tokenBalance(arcToken) returns(uint256 tokenAmount)
```

Odyssey\_v3.2 defines a new tokenBalance function for ARC10 token balance query.

**TokenValue & TokenID**\
Msg.tokenvalue, represents the token value in the current msg call, with a default value of 0. Msg.tokenid, represents the token id in current msg call, with a default value of 0.

<br>


# ARC-20


# Protocol Interface

## ARC-20 contract standard

ARC-20 is a set of contract standards for the issuance of token assets, contracts written in compliance with this standard are considered to be a ARC-20 contract. When wallets and exchanges are docking the assets of the ARC-20 contract, from this set of standards, you can know which functions and events the contract defines, so as to facilitate the docking.

### Optional Items

Token Name

```
string public name = "AixChain";
```

Token Abbreviation

```
string public symbol = "Aixc";
```

Token Precision(Decimals)

```
uint8 public decimals = 6;
```

### Required Items

```javascript
contract ARC20 {
             function totalSupply() constant returns (uint theTotalSupply);
             function balanceOf(address _owner) constant returns (uint balance);
             function transfer(address _to, uint _value) returns (bool success);
             function transferFrom(address _from, address _to, uint _value) returns (bool success);
             function approve(address _spender, uint _value) returns (bool success);
             function allowance(address _owner, address _spender) constant returns (uint remaining);
             event Transfer(address indexed _from, address indexed _to, uint _value);
             event Approval(address indexed _owner, address indexed _spender, uint _value);
}
```

**totalSupply()**\
This function returns the total supply of the token.

**balanceOf()**\
This function returns the token balance of the specific account.

**transfer()**\
This function is used to transfer a number of tokens to a specific address.

**approve()**\
This function is used to authorize the third party (like a DAPP smart contract) to transfer the token from the token owner’s account.

**transferFrom()**\
This function is used to allow the third party to transfer the token from an owner account to a receiver account. The owner account must be approved to be called by the third party.

**allowance()**\
This function is used to query the remaining amount of tokens the third party can transfer.

### Event Functions

When the token is successfully transferred, the contract will trigger a Transfer Event.

```
event Transfer(address indexed _from, address indexed _to, uint256 _value)
```

When `approval()` is successfully called, the contract will trigger an `Approval` Event.

```
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
```


# Contract Example

```
pragma solidity ^0.5.0;
/**
@dev Implementation of the {IERC20} interface.

This implementation is agnostic to the way tokens are created. This means
that a supply mechanism has to be added in a derived contract using {_mint}.
For a generic mechanism see {ERC20Mintable}.

TIP: For a detailed writeup see our guide
https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
to implement supply mechanisms].

We have followed general OpenZeppelin guidelines: functions revert instead
of returning false on failure. This behavior is nonetheless conventional
and does not conflict with the expectations of ERC20 applications.

Additionally, an {Approval} event is emitted on calls to {transferFrom}.
This allows applications to reconstruct the allowance for all accounts just
by listening to said events. Other implementations of the EIP may not emit
these events, as it isn't required by the specification.

Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
functions have been added to mitigate the well-known issues around setting
allowances. See {IERC20-approve}. / library SafeMath { /*
@dev Returns the addition of two unsigned integers, reverting on
overflow.

Counterpart to Solidity's + operator.

Requirements:

Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow");
return c; }
/**
@dev Returns the subtraction of two unsigned integers, reverting on
overflow (when the result is negative).

Counterpart to Solidity's - operator.

Requirements:

Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b;
return c; }
/**
@dev Returns the multiplication of two unsigned integers, reverting on
overflow.

Counterpart to Solidity's * operator.

Requirements:

Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; }
uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow");
return c; }
/**
@dev Returns the integer division of two unsigned integers. Reverts on
division by zero. The result is rounded towards zero.

Counterpart to Solidity's / operator. Note: this function uses a
revert opcode (which leaves remaining gas untouched) while Solidity
uses an invalid opcode to revert (consuming all remaining gas).

Requirements:

The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c; }
/**
@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
Reverts when dividing by zero.

Counterpart to Solidity's % operator. This function uses a revert
opcode (which leaves remaining gas untouched) while Solidity uses an
invalid opcode to revert (consuming all remaining gas).

Requirements:

The divisor cannot be zero. / function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } interface IERC20 { /*
@dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256);
/**
@dev Returns the amount of tokens owned by account. */ function balanceOf(address account) external view returns (uint256);
/**
@dev Moves amount tokens from the caller's account to recipient.

Returns a boolean value indicating whether the operation succeeded.

Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool);
/**
@dev Returns the remaining number of tokens that spender will be
allowed to spend on behalf of owner through {transferFrom}. This is
zero by default.

This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256);
/**
@dev Sets amount as the allowance of spender over the caller's tokens.

Returns a boolean value indicating whether the operation succeeded.

IMPORTANT: Beware that changing an allowance with this method brings the risk
that someone may use both the old and the new allowance by unfortunate
transaction ordering. One possible solution to mitigate this race
condition is to first reduce the spender's allowance to 0 and set the
desired value afterwards:
https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729

Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool);
/**
@dev Moves amount tokens from sender to recipient using the
allowance mechanism. amount is then deducted from the caller's
allowance.

Returns a boolean value indicating whether the operation succeeded.

Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
@dev Emitted when value tokens are moved from one account (from) to
another (to).

Note that value may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value);
/**
@dev Emitted when the allowance of a spender for an owner is set by
a call to {approve}. value is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is IERC20 { using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
/**
@dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; }
/**
@dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; }
/**
@dev See {IERC20-transfer}.

Requirements:


recipient cannot be the zero address.

the caller must have a balance of at least amount. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; }
/**
@dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; }
/**
@dev See {IERC20-approve}.

Requirements:


spender cannot be the zero address. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; }
/**
@dev See {IERC20-transferFrom}.

Emits an {Approval} event indicating the updated allowance. This is not
required by the EIP. See the note at the beginning of {ERC20};

Requirements:

sender and recipient cannot be the zero address.

sender must have a balance of at least value.

the caller must have allowance for sender's tokens of at least
amount. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); return true; }
/**
@dev Atomically increases the allowance granted to spender by the caller.

This is an alternative to {approve} that can be used as a mitigation for
problems described in {IERC20-approve}.

Emits an {Approval} event indicating the updated allowance.

Requirements:


spender cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; }
/**
@dev Atomically decreases the allowance granted to spender by the caller.

This is an alternative to {approve} that can be used as a mitigation for
problems described in {IERC20-approve}.

Emits an {Approval} event indicating the updated allowance.

Requirements:


spender cannot be the zero address.

spender must have allowance for the caller of at least
subtractedValue. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; }
/**
@dev Moves tokens amount from sender to recipient.

This is internal function is equivalent to {transfer}, and can be used to
e.g. implement automatic token fees, slashing mechanisms, etc.

Emits a {Transfer} event.

Requirements:


sender cannot be the zero address.

recipient cannot be the zero address.

sender must have a balance of at least amount. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); }
/** @dev Creates amount tokens and assigns them to account, increasing
the total supply.

Emits a {Transfer} event with from set to the zero address.

Requirements


to cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); }
/**
@dev Destroys amount tokens from account, reducing the
total supply.

Emits a {Transfer} event with to set to the zero address.

Requirements


account cannot be the zero address.

account must have at least amount tokens. */ function _burn(address account, uint256 value) internal { require(account != address(0), "ERC20: burn from the zero address");
_totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); }
/**
@dev Sets amount as the allowance of spender over the owners tokens.

This is internal function is equivalent to approve, and can be used to
e.g. set automatic allowances for certain subsystems, etc.

Emits an {Approval} event.

Requirements:


owner cannot be the zero address.

spender cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = value; emit Approval(owner, spender, value); }
/**
@dev Destoys amount tokens from account.amount is then deducted
from the caller's allowance.

See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount)); } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals;
/**
@dev Sets the values for name, symbol, and decimals. All three of
these values are immutable: they can only be set once during
construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; }
/**
@dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; }
/**
@dev Returns the symbol of the token, usually a shorter version of the
name. */ function symbol() public view returns (string memory) { return _symbol; }
/**
@dev Returns the number of decimals used to get its user representation.
For example, if decimals equals 2, a balance of 505 tokens should
be displayed to a user as 5,05 (505 / 10 ** 2).

Tokens usually opt for a value of 18, imitating the relationship between
Ether and Wei.

NOTE: This information is only used for display purposes: it in
no way affects any of the arithmetic of the contract, including
{IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } contract TokenWRC20 is ERC20, ERC20Detailed {
/**
@dev Constructor that gives msg.sender all of existing tokens. _mint(msg.sender, 10000000000 * (10 ** uint256(decimals()))); */ constructor () public ERC20Detailed("YourTokenName", "YTN", 18) {
} }
```


# Issuing ARC-20 tokens tutorial


# ARC-721

## 1 ARC-721 Protocol Standard

ARC-721 is a set of standard interfaces, for issuing non-fungible tokens(NFT) on the AIXChain network. ARC-721 is fully compatible with ERC-721.

### 1.1 ARC-721 Smart Contract Interface Implementation

Every ARC-721 compliant contract must implement the ARC721 and ARC165 interfaces. Other extension interfaces can be implemented according to specific business requirements.

#### 1.1.1 ARC-721 & ARC-165 Interfaces

```javascript
pragma solidity ^0.4.20;

  interface ARC721 {
    // Returns the number of NFTs owned by the given account
    function balanceOf(address _owner) external view returns (uint256);

    //Returns the owner of the given NFT
    function ownerOf(uint256 _tokenId) external view returns (address);

    //Transfer ownership of NFT
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;

    //Transfer ownership of NFT
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

    //Transfer ownership of NFT
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

    //Grants address ‘_approved’ the authorization of the NFT ‘_tokenId’
    function approve(address _approved, uint256 _tokenId) external payable;

    //Grant/recover all NFTs’ authorization of the ‘_operator’
    function setApprovalForAll(address _operator, bool _approved) external;

    //Query the authorized address of NFT
    function getApproved(uint256 _tokenId) external view returns (address);

    //Query whether the ‘_operator’ is the authorized address of the ‘_owner’
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);

    //The successful ‘transferFrom’ and ‘safeTransferFrom’ will trigger the ‘Transfer’ Event
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    //The successful ‘Approval’ will trigger the ‘Approval’ event
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    //The successful ‘setApprovalForAll’ will trigger the ‘ApprovalForAll’ event
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

  }

  interface ARC165 {
      //Query whether the interface ‘interfaceID’  is supported
      function supportsInterface(bytes4 interfaceID) external view returns (bool);
  }
```

A wallet/broker/auction application MUST implement the `wallet` interface if it will accept safe transfers.

Solidity

```javascript
interface ARC721TokenReceiver {
     //This method will be triggered when the ‘_to’ is the contract address during the ‘safeTransferFrom’ execution, and the return value must be checked, If the return value is not bytes4(keccak256("onTRC721Received(address,address,uint256,bytes)")) throws an exception. The smart contract which can receive NFT must implement the TRC721TokenReceiver interface.
       function onARC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external                returns(bytes4);
   }
```

> The hash of `bytes4(keccak256("onWRC721Received(address,address,uint256,bytes)))` is different from the Ethereum version `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)))`. Please use `0x5175f878` instead of `0x150b7a02`.

#### 1.1.2 OPTIONAL Metadata Extension Interface

The metadata extension is OPTIONAL for ARC-721 smart contracts. This allows your smart contract to be interrogated for its name and for details about the assets which your NFTs represent.

Solidity

```javascript
interface ARC721Metadata {
     //Return the token name
     function name() external view returns (string _name);

      //Return the token symbol
     function symbol() external view returns (string _symbol);

       //Returns the URI of the external file corresponding to ‘_tokenId’. External resource files need to include names, descriptions and pictures. 
     function tokenURI(uint256 _tokenId) external view returns (string);
  }
```

URI is a URI link describing the \_tokenId asset, pointing to a JSON file that conforms to the ARC721 metadata description structure. When tokens are minted, each token needs to be assigned a unique URI:

JSON

```json
{
    "title": "Asset Metadata",
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "Identifies the asset to which this NFT represents"
        },
        "description": {
            "type": "string",
            "description": "Describes the asset to which this NFT represents"
        },
        "image": {
            "type": "string",
            "description": "A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
        }
    }
}
```

#### 1.1.3 OPTIONAL Enumeration Extension Interface

The enumeration extension is OPTIONAL for ARC-721 smart contracts. This allows your contract to publish its full list of NFTs and make them discoverable.

Solidity

```javascript
interface ARC721Enumerable  {
    //Return the total supply of NFT
    function totalSupply() external view returns (uint256);

    //Return the corresponding ‘tokenId’ through ‘_index’
    function tokenByIndex(uint256 _index) external view returns (uint256);

     //Return the ‘tokenId’ corresponding to the index in the NFT list owned by the ‘_owner'
    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
  }
```


# Protocol Interface

## ARC-721 Standard

A standard interface allows applications to track and transfer NFTs on Tron. Simple ARC-721 smart contracts list as below to track a large number of NFTs. ARC-20 token standard is insufficient for handling NFTs due to each token in ARC-721 being unique. The standard of ARC-721 is inspiring on Tron. It plays an important role as well as ARC-20.

## MUST Implemented Interfaces

Every ARC-721 compliant contract must implement the ARC721 and ARC165 interfaces

solidity

```javascript
pragma solidity ^0.4.20;

  interface ARC721 {
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    function balanceOf(address _owner) external view returns (uint256);
    function ownerOf(uint256 _tokenId) external view returns (address);
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
    function approve(address _approved, uint256 _tokenId) external payable;
    function setApprovalForAll(address _operator, bool _approved) external;
    function getApproved(uint256 _tokenId) external view returns (address);
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
  }
  interface ARC165 {
      function supportsInterface(bytes4 interfaceID) external view returns (bool);
  }
```

**balanceOf(address \_owner)**\
Returns the number of NFTs owned by the specified account

**ownerOf(uint256 \_tokenId)**\
Returns the owner of the specified NFT

**safeTransferFrom(address \_from, address \_to, uint256 \_tokenId, bytes data)**\
Transfer ownership of an NFT

**safeTransferFrom(address \_from, address \_to, uint256 \_tokenId)**\
Transfer ownership of an NFT

**transferFrom(address \_from, address \_to, uint256 \_tokenId)**\
Transfer the ownership of an NFT (the caller must confirm whether the \_to address can receive the NFT normally, otherwise the NFT will be lost)

**approve(address \_approved, uint256 \_tokenId)**\
Grant other people control of an NFT

**setApprovalForAll(address \_operator, bool \_approved)**\
Grant/recover control of all NFTs by a third party (\_operator)

**getApproved(uint256 \_tokenId)**\
Query the authorization of a certain NFT

**isApprovedForAll(address \_owner, address \_operator)**\
Query whether the operator is the authorized address of the owner

**supportsInterface(bytes4 interfaceID)**\
Query whether a certain interface is supported (interfaceID)

**event Approval(address indexed \_owner, address indexed \_approved, uint256 indexed \_tokenId)**\
Approval event will be triggered after Approval is successful

**event Transfer(address indexed \_from, address indexed \_to, uint256 indexed \_tokenId)**\
Successful transferFrom and safeTransferFrom will trigger the Transfer event

**event ApprovalForAll(address indexed \_owner, address indexed \_operator, bool \_approved)**\
ApprovalForAll event will be triggered after setApprovalForAll succeeds

A wallet/broker/auction application MUST implement the wallet interface if it will accept safe transfers.

solidity

```javascript
interface ARC721TokenReceiver {
       function onARC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external       returns(bytes4);
   }
```

**onARC721Received(address \_operator, address \_from, uint256 \_tokenId, bytes \_data)**

Works with the `safeTransferFrom` method, when \_to is the contract address, you need to call this method and check the return value. If the return value is not bytes4(keccak256("onARC721Received(address,address,uint256,bytes)")) an exception will be thrown. A smart contract that can receive NFT must implement the ARC721TokenReceiver interface.

> #### 📘
>
> The hash of bytes4(keccak256("onARC721Received(address,address,uint256,bytes))) is different from the Ethereum version bytes4(keccak256("onERC721Received(address,address,uint256,bytes))). With the return value of function `onARC721Received`, please use 0x5175f878 instead of 0x150b7a02.

## OPTIONAL Metadata Extension Interface

The metadata extension is OPTIONAL for ARC-721 smart contracts. This allows your smart contract to be interrogated for its name and for details about the assets which your NFTs represent.

solidity

```javascript
interface ARC721Metadata {
     function name() external view returns (string _name);
     function symbol() external view returns (string _symbol);
     function tokenURI(uint256 _tokenId) external view returns (string);
  }
```

**name()**\
Returns the contract name

**symbol()**\
Returns the contract symbol

**tokenURI(uint256 \_tokenId)**\
Returns the URI of the external file corresponding to \_tokenId. External resource files need to include names, descriptions and pictures.

## OPTIONAL Enumeration Extension Interface

The enumeration extension is OPTIONAL for ARC-721 smart contracts. This allows your contract to publish its full list of NFTs and make them discoverable.

solidity

```javascript
interface ARC721Enumerable  {
    function totalSupply() external view returns (uint256);
    function tokenByIndex(uint256 _index) external view returns (uint256);
    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
  }
```

**totalSupply()**\
Returns the total amount of NFT

**tokenByIndex(uint256 \_index)**\
Returns the corresponding tokenId through \_index

**tokenOfOwnerByIndex(address \_owner, uint256 \_index)**\
Returns the tokenId corresponding to the index in the NFT list owned by the owner


# Contract Example

Solidity

```javascript
 pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}
pragma solidity ^0.5.5;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Converts an `address` into `address payable`. Note that this is
     * simply a type cast: the actual underlying value is not changed.
     *
     * _Available since v2.4.0._
     */
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     *
     * _Available since v2.4.0._
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
 * of elements in a mapping, issuing ARC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}
 * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never
 * directly accessed.
 */
library Counters {
    using SafeMath for uint256;

    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        // The {SafeMath} overflow check can be skipped here, see the comment at the top
        counter._value += 1;
    }

    function decrement(Counter storage counter) internal {
        counter._value = counter._value.sub(1);
    }
}


contract MinterRole is Context {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(_msgSender());
    }

    modifier onlyMinter() {
        require(isMinter(_msgSender()), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(_msgSender());
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

/**
 * @dev Interface of the ARC165 standard.
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ARC165Checker}).
 *
 * For an implementation, see {ARC165}.
 */
interface IARC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


/**
 * @dev Required interface of an ARC721 compliant contract.
 */
contract IARC721 is IARC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of NFTs in `owner`'s account.
     */
    function balanceOf(address owner) public view returns (uint256 balance);

    /**
     * @dev Returns the owner of the NFT specified by `tokenId`.
     */
    function ownerOf(uint256 tokenId) public view returns (address owner);

    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     *
     *
     * Requirements:
     * - `from`, `to` cannot be zero.
     * - `tokenId` must be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this
     * NFT by either {approve} or {setApprovalForAll}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public;
    /**
     * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
     * another (`to`).
     *
     * Requirements:
     * - If the caller is not `from`, it must be approved to move this NFT by
     * either {approve} or {setApprovalForAll}.
     */
    function transferFrom(address from, address to, uint256 tokenId) public;
    function approve(address to, uint256 tokenId) public;
    function getApproved(uint256 tokenId) public view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) public;
    function isApprovedForAll(address owner, address operator) public view returns (bool);


    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;
}


/**
 * @title ARC-721 Non-Fungible Token Standard, optional metadata extension
 */
contract IARC721Metadata is IARC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

/**
 * @title ARC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ARC721 asset contracts.
 */
contract IARC721Receiver {
    /**
     * @notice Handle the receipt of an NFT
     * @dev The ARC721 smart contract calls this function on the recipient
     * after a {IARC721-safeTransferFrom}. This function MUST return the function selector,
     * otherwise the caller will revert the transaction. The selector to be
     * returned can be obtained as `this.onARC721Received.selector`. This
     * function MAY throw to revert and reject the transfer.
     * Note: the ARC721 contract address is always the message sender.
     * @param operator The address which called `safeTransferFrom` function
     * @param from The address which previously owned the token
     * @param tokenId The NFT identifier which is being transferred
     * @param data Additional data with no specified format
     * @return bytes4 `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`
     */
    function onARC721Received(address operator, address from, uint256 tokenId, bytes memory data)
    public returns (bytes4);
}


/**
 * @dev Implementation of the {IARC165} interface.
 *
 * Contracts may inherit from this and call {_registerInterface} to declare
 * their support of an interface.
 */
contract ARC165 is IARC165 {
    /*
     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7
     */
    bytes4 private constant _INTERFACE_ID_ARC165 = 0x01ffc9a7;

    /**
     * @dev Mapping of interface ids to whether or not it's supported.
     */
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        // Derived contracts need only register support for their own interfaces,
        // we register support for ARC165 itself here
        _registerInterface(_INTERFACE_ID_ARC165);
    }

    /**
     * @dev See {IARC165-supportsInterface}.
     *
     * Time complexity O(1), guaranteed to always use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    /**
     * @dev Registers the contract as an implementer of the interface defined by
     * `interfaceId`. Support of the actual ARC165 interface is automatic and
     * registering its interface id is not required.
     *
     * See {IARC165-supportsInterface}.
     *
     * Requirements:
     *
     * - `interfaceId` cannot be the ARC165 invalid interface (`0xffffffff`).
     */
    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff, "ARC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}


/**
 * @title ARC721 Non-Fungible Token Standard basic implementation
 */
contract ARC721 is Context, ARC165, IARC721 {
    using SafeMath for uint256;
    using Address for address;
    using Counters for Counters.Counter;

    // Equals to `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`
    // which can be also obtained as `IARC721Receiver(0).onARC721Received.selector`
    //
    // NOTE: ARC721 uses 0x150b7a02, ARC721 uses 0x5175f878.
    bytes4 private constant _ARC721_RECEIVED = 0x5175f878;

    // Mapping from token ID to owner
    mapping (uint256 => address) private _tokenOwner;

    // Mapping from token ID to approved address
    mapping (uint256 => address) private _tokenApprovals;

    // Mapping from owner to number of owned token
    mapping (address => Counters.Counter) private _ownedTokensCount;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) private _operatorApprovals;

    /*
     *     bytes4(keccak256('balanceOf(address)')) == 0x70a08231
     *     bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e
     *     bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3
     *     bytes4(keccak256('getApproved(uint256)')) == 0x081812fc
     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465
     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5
     *     bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd
     *     bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e
     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde
     *
     *     => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^
     *        0xa22cb465 ^ 0xe985e9c ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd
     */
    bytes4 private constant _INTERFACE_ID_ARC721 = 0x80ac58cd;

    constructor () public {
        // register the supported interfaces to conform to ARC721 via ARC165
        _registerInterface(_INTERFACE_ID_ARC721);
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param owner address to query the balance of
     * @return uint256 representing the amount owned by the passed address
     */
    function balanceOf(address owner) public view returns (uint256) {
        require(owner != address(0), "ARC721: balance query for the zero address");

        return _ownedTokensCount[owner].current();
    }

    /**
     * @dev Gets the owner of the specified token ID.
     * @param tokenId uint256 ID of the token to query the owner of
     * @return address currently marked as the owner of the given token ID
     */
    function ownerOf(uint256 tokenId) public view returns (address) {
        address owner = _tokenOwner[tokenId];
        require(owner != address(0), "ARC721: owner query for nonexistent token");

        return owner;
    }

    /**
     * @dev Approves another address to transfer the given token ID
     * The zero address indicates there is no approved address.
     * There can only be one approved address per token at a given time.
     * Can only be called by the token owner or an approved operator.
     * @param to address to be approved for the given token ID
     * @param tokenId uint256 ID of the token to be approved
     */
    function approve(address to, uint256 tokenId) public {
        address owner = ownerOf(tokenId);
        require(to != owner, "ARC721: approval to current owner");

        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ARC721: approve caller is not owner nor approved for all"
        );

        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    /**
     * @dev Gets the approved address for a token ID, or zero if no address set
     * Reverts if the token ID does not exist.
     * @param tokenId uint256 ID of the token to query the approval of
     * @return address currently approved for the given token ID
     */
    function getApproved(uint256 tokenId) public view returns (address) {
        require(_exists(tokenId), "ARC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev Sets or unsets the approval of a given operator
     * An operator is allowed to transfer all tokens of the sender on their behalf.
     * @param to operator address to set the approval
     * @param approved representing the status of the approval to be set
     */
    function setApprovalForAll(address to, bool approved) public {
        require(to != _msgSender(), "ARC721: approve to caller");

        _operatorApprovals[_msgSender()][to] = approved;
        emit ApprovalForAll(_msgSender(), to, approved);
    }

    /**
     * @dev Tells whether an operator is approved by a given owner.
     * @param owner owner address which you want to query the approval of
     * @param operator operator address which you want to query the approval of
     * @return bool whether the given operator is approved by the given owner
     */
    function isApprovedForAll(address owner, address operator) public view returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev Transfers the ownership of a given token ID to another address.
     * Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     * Requires the msg.sender to be the owner, approved, or operator.
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     */
    function transferFrom(address from, address to, uint256 tokenId) public {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ARC721: transfer caller is not owner nor approved");

        _transferFrom(from, to, tokenId);
    }

    /**
     * @dev Safely transfers the ownership of a given token ID to another address
     * If the target address is a contract, it must implement {IARC721Receiver-onARC721Received},
     * which is called upon a safe transfer, and return the magic value
     * `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`; otherwise,
     * the transfer is reverted.
     * Requires the msg.sender to be the owner, approved, or operator
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev Safely transfers the ownership of a given token ID to another address
     * If the target address is a contract, it must implement {IARC721Receiver-onARC721Received},
     * which is called upon a safe transfer, and return the magic value
     * `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`; otherwise,
     * the transfer is reverted.
     * Requires the _msgSender() to be the owner, approved, or operator
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes data to send along with a safe transfer check
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ARC721: transfer caller is not owner nor approved");
        _safeTransferFrom(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers the ownership of a given token ID to another address
     * If the target address is a contract, it must implement `onARC721Received`,
     * which is called upon a safe transfer, and return the magic value
     * `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`; otherwise,
     * the transfer is reverted.
     * Requires the msg.sender to be the owner, approved, or operator
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes data to send along with a safe transfer check
     */
    function _safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) internal {
        _transferFrom(from, to, tokenId);
        require(_checkOnARC721Received(from, to, tokenId, _data), "ARC721: transfer to non ARC721Receiver implementer");
    }

    /**
     * @dev Returns whether the specified token exists.
     * @param tokenId uint256 ID of the token to query the existence of
     * @return bool whether the token exists
     */
    function _exists(uint256 tokenId) internal view returns (bool) {
        address owner = _tokenOwner[tokenId];
        return owner != address(0);
    }

    /**
     * @dev Returns whether the given spender can transfer a given token ID.
     * @param spender address of the spender to query
     * @param tokenId uint256 ID of the token to be transferred
     * @return bool whether the msg.sender is approved for the given token ID,
     * is an operator of the owner, or is the owner of the token
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
        require(_exists(tokenId), "ARC721: operator query for nonexistent token");
        address owner = ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Internal function to safely mint a new token.
     * Reverts if the given token ID already exists.
     * If the target address is a contract, it must implement `onARC721Received`,
     * which is called upon a safe transfer, and return the magic value
     * `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`; otherwise,
     * the transfer is reverted.
     * @param to The address that will own the minted token
     * @param tokenId uint256 ID of the token to be minted
     */
    function _safeMint(address to, uint256 tokenId) internal {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Internal function to safely mint a new token.
     * Reverts if the given token ID already exists.
     * If the target address is a contract, it must implement `onARC721Received`,
     * which is called upon a safe transfer, and return the magic value
     * `bytes4(keccak256("onARC721Received(address,address,uint256,bytes)"))`; otherwise,
     * the transfer is reverted.
     * @param to The address that will own the minted token
     * @param tokenId uint256 ID of the token to be minted
     * @param _data bytes data to send along with a safe transfer check
     */
    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal {
        _mint(to, tokenId);
        require(_checkOnARC721Received(address(0), to, tokenId, _data), "ARC721: transfer to non ARC721Receiver implementer");
    }

    /**
     * @dev Internal function to mint a new token.
     * Reverts if the given token ID already exists.
     * @param to The address that will own the minted token
     * @param tokenId uint256 ID of the token to be minted
     */
    function _mint(address to, uint256 tokenId) internal {
        require(to != address(0), "ARC721: mint to the zero address");
        require(!_exists(tokenId), "ARC721: token already minted");

        _tokenOwner[tokenId] = to;
        _ownedTokensCount[to].increment();

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Internal function to burn a specific token.
     * Reverts if the token does not exist.
     * Deprecated, use {_burn} instead.
     * @param owner owner of the token to burn
     * @param tokenId uint256 ID of the token being burned
     */
    function _burn(address owner, uint256 tokenId) internal {
        require(ownerOf(tokenId) == owner, "ARC721: burn of token that is not own");

        _clearApproval(tokenId);

        _ownedTokensCount[owner].decrement();
        _tokenOwner[tokenId] = address(0);

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Internal function to burn a specific token.
     * Reverts if the token does not exist.
     * @param tokenId uint256 ID of the token being burned
     */
    function _burn(uint256 tokenId) internal {
        _burn(ownerOf(tokenId), tokenId);
    }

    /**
     * @dev Internal function to transfer ownership of a given token ID to another address.
     * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     */
    function _transferFrom(address from, address to, uint256 tokenId) internal {
        require(ownerOf(tokenId) == from, "ARC721: transfer of token that is not own");
        require(to != address(0), "ARC721: transfer to the zero address");

        _clearApproval(tokenId);

        _ownedTokensCount[from].decrement();
        _ownedTokensCount[to].increment();

        _tokenOwner[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IARC721Receiver-onARC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * This is an internal detail of the `ARC721` contract and its use is deprecated.
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnARC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        internal returns (bool)
    {
        if (!to.isContract) {
            return true;
        }
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = to.call(abi.encodeWithSelector(
            IARC721Receiver(to).onARC721Received.selector,
            _msgSender(),
            from,
            tokenId,
            _data
        ));
        if (!success) {
            if (returndata.length > 0) {
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert("ARC721: transfer to non ARC721Receiver implementer");
            }
        } else {
            bytes4 retval = abi.decode(returndata, (bytes4));
            return (retval == _ARC721_RECEIVED);
        }
    }

    /**
     * @dev Private function to clear current approval of a given token ID.
     * @param tokenId uint256 ID of the token to be transferred
     */
    function _clearApproval(uint256 tokenId) private {
        if (_tokenApprovals[tokenId] != address(0)) {
            _tokenApprovals[tokenId] = address(0);
        }
    }
}


contract ARC721Metadata is Context, ARC165, ARC721, IARC721Metadata {
    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Base URI
    string private _baseURI;

    // Optional mapping for token URIs
    mapping(uint256 => string) private _tokenURIs;

    /*
     *     bytes4(keccak256('name()')) == 0x06fdde03
     *     bytes4(keccak256('symbol()')) == 0x95d89b41
     *     bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd
     *
     *     => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f
     */
    bytes4 private constant _INTERFACE_ID_ARC721_METADATA = 0x5b5e139f;

    /**
     * @dev Constructor function
     */
    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;

        // register the supported interfaces to conform to ARC721 via ARC165
        _registerInterface(_INTERFACE_ID_ARC721_METADATA);
    }

    /**
     * @dev Gets the token name.
     * @return string representing the token name
     */
    function name() external view returns (string memory) {
        return _name;
    }

    /**
     * @dev Gets the token symbol.
     * @return string representing the token symbol
     */
    function symbol() external view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the URI for a given token ID. May return an empty string.
     *
     * If the token's URI is non-empty and a base URI was set (via
     * {_setBaseURI}), it will be added to the token ID's URI as a prefix.
     *
     * Reverts if the token ID does not exist.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory) {
        require(_exists(tokenId), "ARC721Metadata: URI query for nonexistent token");

        string memory _tokenURI = _tokenURIs[tokenId];

        // Even if there is a base URI, it is only appended to non-empty token-specific URIs
        if (bytes(_tokenURI).length == 0) {
            return "";
        } else {
            // abi.encodePacked is being used to concatenate strings
            return string(abi.encodePacked(_baseURI, _tokenURI));
        }
    }

    /**
     * @dev Internal function to set the token URI for a given token.
     *
     * Reverts if the token ID does not exist.
     *
     * TIP: if all token IDs share a prefix (e.g. if your URIs look like
     * `http://api.myproject.com/token/<id>`), use {_setBaseURI} to store
     * it and save gas.
     */
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal {
        require(_exists(tokenId), "ARC721Metadata: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

    /**
     * @dev Internal function to set the base URI for all token IDs. It is
     * automatically added as a prefix to the value returned in {tokenURI}.
     *
     * _Available since v2.5.0._
     */
    function _setBaseURI(string memory baseURI) internal {
        _baseURI = baseURI;
    }

    /**
    * @dev Returns the base URI set via {_setBaseURI}. This will be
    * automatically added as a preffix in {tokenURI} to each token's URI, when
    * they are non-empty.
    *
    * _Available since v2.5.0._
    */
    function baseURI() external view returns (string memory) {
        return _baseURI;
    }

    /**
     * @dev Internal function to burn a specific token.
     * Reverts if the token does not exist.
     * Deprecated, use _burn(uint256) instead.
     * @param owner owner of the token to burn
     * @param tokenId uint256 ID of the token being burned by the msg.sender
     */
    function _burn(address owner, uint256 tokenId) internal {
        super._burn(owner, tokenId);

        // Clear metadata (if any)
        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}



/**
 * @title AAC721MetadataMintable
 * @dev ARC721 minting logic with metadata.
 */
contract ARC721MetadataMintable is ARC721, ARC721Metadata, MinterRole {
    /**
     * @dev Function to mint tokens.
     * @param to The address that will receive the minted tokens.
     * @param tokenId The token id to mint.
     * @param tokenURI The token URI of the minted token.
     * @return A boolean that indicates if the operation was successful.
     */
    function mintWithTokenURI(address to, uint256 tokenId, string memory tokenURI) public onlyMinter returns (bool) {
        _mint(to, tokenId);
        _setTokenURI(tokenId, tokenURI);
        return true;
    }
}


/**
 * @title ARC721Mintable
 * @dev ARC721 minting logic.
 */
contract ARC721Mintable is ARC721, MinterRole {
    /**
     * @dev Function to mint tokens.
     * @param to The address that will receive the minted token.
     * @param tokenId The token id to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 tokenId) public onlyMinter returns (bool) {
        _mint(to, tokenId);
        return true;
    }
    
    /**
     * @dev Function to safely mint tokens.
     * @param to The address that will receive the minted token.
     * @param tokenId The token id to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function safeMint(address to, uint256 tokenId) public onlyMinter returns (bool) {
        _safeMint(to, tokenId);
        return true;
    }

    /**
     * @dev Function to safely mint tokens.
     * @param to The address that will receive the minted token.
     * @param tokenId The token id to mint.
     * @param _data bytes data to send along with a safe transfer check.
     * @return A boolean that indicates if the operation was successful.
     */
    function safeMint(address to, uint256 tokenId, bytes memory _data) public onlyMinter returns (bool) {
        _safeMint(to, tokenId, _data);
        return true;
    }
}

/**
 * @title ARC-721 Non-Fungible Token Standard, optional enumeration extension
 */
contract IARC721Enumerable is IARC721 {
    function totalSupply() public view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId);

    function tokenByIndex(uint256 index) public view returns (uint256);
}

/**
 * @title ARC-721 Non-Fungible Token with optional enumeration extension logic
 */
contract ARC721Enumerable is Context, ARC165, ARC721, IARC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => uint256[]) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /*
     *     bytes4(keccak256('totalSupply()')) == 0x18160ddd
     *     bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59
     *     bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7
     *
     *     => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63
     */
    bytes4 private constant _INTERFACE_ID_ARC721_ENUMERABLE = 0x780e9d63;

    /**
     * @dev Constructor function.
     */
    constructor () public {
        // register the supported interface to conform to ARC721Enumerable via ARC165
        _registerInterface(_INTERFACE_ID_ARC721_ENUMERABLE);
    }

    /**
     * @dev Gets the token ID at a given index of the tokens list of the requested owner.
     * @param owner address owning the tokens list to be accessed
     * @param index uint256 representing the index to be accessed of the requested tokens list
     * @return uint256 token ID at the given index of the tokens list owned by the requested address
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {
        require(index < balanceOf(owner), "ARC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    /**
     * @dev Gets the total amount of tokens stored by the contract.
     * @return uint256 representing the total amount of tokens
     */
    function totalSupply() public view returns (uint256) {
        return _allTokens.length;
    }

    /**
     * @dev Gets the token ID at a given index of all the tokens in this contract
     * Reverts if the index is greater or equal to the total number of tokens.
     * @param index uint256 representing the index to be accessed of the tokens list
     * @return uint256 token ID at the given index of the tokens list
     */
    function tokenByIndex(uint256 index) public view returns (uint256) {
        require(index < totalSupply(), "ARC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    /**
     * @dev Internal function to transfer ownership of a given token ID to another address.
     * As opposed to transferFrom, this imposes no restrictions on msg.sender.
     * @param from current owner of the token
     * @param to address to receive the ownership of the given token ID
     * @param tokenId uint256 ID of the token to be transferred
     */
    function _transferFrom(address from, address to, uint256 tokenId) internal {
        super._transferFrom(from, to, tokenId);

        _removeTokenFromOwnerEnumeration(from, tokenId);

        _addTokenToOwnerEnumeration(to, tokenId);
    }

    /**
     * @dev Internal function to mint a new token.
     * Reverts if the given token ID already exists.
     * @param to address the beneficiary that will own the minted token
     * @param tokenId uint256 ID of the token to be minted
     */
    function _mint(address to, uint256 tokenId) internal {
        super._mint(to, tokenId);

        _addTokenToOwnerEnumeration(to, tokenId);

        _addTokenToAllTokensEnumeration(tokenId);
    }

    /**
     * @dev Internal function to burn a specific token.
     * Reverts if the token does not exist.
     * Deprecated, use {ARC721-_burn} instead.
     * @param owner owner of the token to burn
     * @param tokenId uint256 ID of the token being burned
     */
    function _burn(address owner, uint256 tokenId) internal {
        super._burn(owner, tokenId);

        _removeTokenFromOwnerEnumeration(owner, tokenId);
        // Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund
        _ownedTokensIndex[tokenId] = 0;

        _removeTokenFromAllTokensEnumeration(tokenId);
    }

    /**
     * @dev Gets the list of token IDs of the requested owner.
     * @param owner address owning the tokens
     * @return uint256[] List of token IDs owned by the requested address
     */
    function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {
        return _ownedTokens[owner];
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        _ownedTokensIndex[tokenId] = _ownedTokens[to].length;
        _ownedTokens[to].push(tokenId);
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        _ownedTokens[from].length--;

        // Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occupied by
        // lastTokenId, or just over the end of the array if the token was the last one).
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length.sub(1);
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        _allTokens.length--;
        _allTokensIndex[tokenId] = 0;
    }
}

contract ARC721Token is ARC721, AC721Enumerable, ARC721MetadataMintable {
    constructor() public ARC721Metadata("ARC721Token", "YTN") {
       
    }
}
```


# ACCOUNT MODEL

### Introduction <a href="#introduction" id="introduction"></a>

AIXChain uses account model. An account's identity is address. It needs private key signature to operate an account. An account has many attributes, like Aixc balance, tokens balance, bandwidth, etc. Aixc and tokens can be transfered from account to account and it costs bandwidth. An account can also issue a smart contract, apply to become a super representative candidate, vote, etc. All Aixc's activities are based on account.

### How to Create an Account <a href="#how-to-create-an-account" id="how-to-create-an-account"></a>

1. Use a wallet to generate the address and private key. To active the account, you need to transfer Aixc or transfer token to the new created account. [Generate an account](/http-api/api-list/accounts/createaccount)
2. Use an account already existed in AIXChain network to create an account

If you have enough staked BandWidth Points, creating an account only consume your staked BandWidth Points, otherwise, it burns 0.1 Aixc.

### Key-pair Generation <a href="#key-pair-generation" id="key-pair-generation"></a>

Aixc signature algorithm is ECDSA, curve used is SECP256K1. Private key is a random number, public key is a point in the elliptic curve. The process is: first generate a random number d to be the private key, then caculate P = d \* G as the public key, G is the elliptic curve base point.

### Address Format

Use the public key P as the input, by SHA3 get the result H. The length of the public key is 64 bytes, SHA3 uses Keccak256. Use the last 20 bytes of H, and add a byte of 0x41 in front of it, then the address come out. Do basecheck to address, here is the final address. All addresses start with 'A'.

basecheck process: first do sha256 caculation to address to get h1, then do sha256 to h1 to get h2, use the first 4 bytes as check to add it to the end of the address to get address||check, do base58 encode to address||check to get the final result.

character map: ALPHABET = "123456789ABCDEFGHJKLMNPQRSWUVTXYZabcdefghijkmnopqrswuvtxyz"<br>

### Signature <a href="#signature" id="signature"></a>

#### Steps <a href="#steps" id="steps"></a>

1. Get the rawdata of the transaction, then transfer it to `byte[]`
2. Do sha256 calculation to the rawdata
3. Use the private key to sign the result gained from step 2
4. Add the signature back into the transaction

#### Algorithm <a href="#algorithm" id="algorithm"></a>

1. ECDSA, SECP256K
2. Example:

   ```
   priKey:::8e812436a0e3323166e1f0e8ba79e19e217b2c4a53c970d4cca0cfb1078979df
   pubKey::04a5bb3b28466f578e6e93fbfd5f75cee1ae86033aa4bbea690e3312c087181eb366f9a1d1d6a437a9bf9fc65ec853b9fd60fa322be3997c47144eb20da658b3d1
   hash:::159817a085f113d099d3d93c051410e9bfe043cc5c20e43aa9a083bf73660145
   r:::38b7dac5ee932ac1bf2bc62c05b792cd93c3b4af61dc02dbb4b93dacb758123f
   s:::08bf123eabe77480787d664ca280dc1f20d9205725320658c39c6c143fd5642d
   v:::0
   ```

   Note: The size of the signature result is 65 bytes. r 32 bytes, s 32 bytes, v 1 bytes.
3. fullnode will verify the signature, it generates an address with the value of hash and r、s、v, then it compares with the address in the transaction.

#### Demo <a href="#demo" id="demo"></a>

public static Transaction sign(Transaction transaction, ECKey myKey) { Transaction.Builder transactionBuilderSigned = transaction.toBuilder(); byte\[] hash = sha256(transaction.getRawData().toByteArray()); List listContract = transaction.getRawData().getContractList();

```
for (int i = 0; i < listContract.size(); i++) {
    ECDSASignature signature = myKey.sign(hash);
    ByteString bsSign = ByteString.copyFrom(signature.toByteArray());

    // Each contract may be signed with a different private key in the future.
    transactionBuilderSigned.addSignature(bsSign);
}
```

}


# BUILD NODE


# How to setup a Super node to produce Blocks


# Recommended configuration & Environment

### Recommended configuration

CPU: 16 Cores, Memory: 32GB, Bandwidth: 100Mbps, SSD: 600GB

### Environment

Operating system: Linux

Libs and Tools: Docker, Docker-compose


# Example cloud services

You can choose configuration of these below options:

<table data-header-hidden><thead><tr><th width="150"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Service</strong></td><td><strong>Type</strong></td><td><strong>Fee / 1 Nodes</strong></td></tr><tr><td>AWS</td><td>c5a.4xlarge</td><td>$777.16</td></tr><tr><td>Google</td><td>e2-standard-16</td><td>$520.16</td></tr><tr><td>Azure</td><td>Standard F16s_v2 (16 vcpus, 32 GB memory)</td><td>$777.26</td></tr></tbody></table>


# Deployment guide

### 1, Create the code directory:

`mkdir -p /project/aixc`

### 2, Create docker-compose.yml file

`cd /project/aixc`

`touch docker-compose.yml`

Fill below content to `docker-compose.yml`

```
// docker-compose.yml
version: "3.5"

services:
  Aixchain:
    image: aixchain/corechain:latest
    ports:
      - "16666-16669:16666-16669/tcp"
      - "16666-16669:16666-16669/udp"
    volumes:
      - .:/node
    command:
      - --witness
```

### 3, Config Mainnet

`cd /project/aixc`

`touch config.conf`

Fill below configuration to config.conf

```
// config.conf
net {
  type = mainnet
}

storage {
  db.version = 2,
  db.engine = "LEVELDB",
  db.directory = "database",
  index.directory = "index",

  properties = []
}

# this part of config is used to node discovery.
node.discovery = {
  enable = true  # you should set this entry value with ture if you want your node can be discovered by other node.
  persist = true  # this entry is used to determined to whether storing the peers in the database or not.
  bind.ip = ""
  external.ip = null
}

# this part of config is used to set backup node for witness service.
node.backup {
  port = 10001
  priority = 8
  members = [
  ]
}

node {
  # trust node for solidity node
  # trustNode = "ip:port"
  trustNode = "127.0.0.1:16669"

  # expose extension api to public or not
  walletExtensionApi = true

  listen.port = 16666

  connection.timeout = 2

  tcpNettyWorkThreadNum = 0

  udpNettyWorkThreadNum = 1

  # Number of validate sign thread, default availableProcessors / 2
  # validateSignThreadNum = 16

  maxActiveNodes = 30

  maxActiveNodesWithSameIp = 2

  minParticipationRate = 0

  # check the peer data transfer, disconnect factor
  disconnectNumberFactor = 0.4
  maxConnectNumberFactor = 0.8
  receiveTcpMinDataLength = 2048
  isOpenFullTcpDisconnect = true

  p2p {
    version = 1001 
  }

  active = []

  passive = []

  http {
    fullNodePort = 16667
    solidityPort = 16668
  }

  rpc {
    port = 16669
    maxConnectionIdleInMillis = 60000
    minEffectiveConnection = 0
  }
}

seed.node = {
  ip.list = [
    "13.213.231.230:16666",
    "13.213.179.119:16666",
    "13.214.6.1:16666",
    "54.169.140.55:16666",
  ]
}
genesis.block = {
  # Reserve balance
  assets = [
    {
      accountName = "Zion"
      accountType = "AssetIssue"
      address = "AHGRkgemNqQpETQhCHGSS9Jmmhrt9YuDV6"
      balance = "22440000000000000"
    },
    {
      accountName = "Black"
      accountType = "AssetIssue"
      address = "AHHUxg6WaABREG8YWi75EgeCVTa8e2osTC"
      balance = "22220000000000000"
    },
    {
      accountName = "Blue"
      accountType = "AssetIssue"
      address = "ASC7Wre31DJqXXXTF9JLjRcRVcvTiUanuD"
      balance = "220000000000000"
    },
    {
      accountName = "Blackhole"
      accountType = "AssetIssue"
      address = "AWVQ4wxeeZPzTEtwcYVZRbqoYARxdjE5Rt"
      balance = "-2999999999999999"
    },
    {
      accountName = "Madagascar"
      accountType = "AssetIssue"
      address = "AX2uKnE8gUhWeyrFWTUiHivKVZXhMLWa68"
      balance = "10000"
    },
    {
      accountName = "Borneo"
      accountType = "AssetIssue"
      address = "AGbfgQrLJdQZACpn72piENSHkmKMtMjVP2"
      balance = "10000"
    },
    {
      accountName = "Victoria"
      accountType = "AssetIssue"
      address = "AS1aN6smtrWeViFdYmvvb34fzbQHhbhnfx"
      balance = "10000"
    },
    {
      accountName = "Melville"
      accountType = "AssetIssue"
      address = "ABeVtLcYApzn5bp7V8sfQ1geF97mRNFsdb"
      balance = "10000"
    },
    {
      accountName = "Palawan"
      accountType = "AssetIssue"
      address = "ASnxxtk1kaAc79uBiR9kyZXRJNpxcFGkG1"
      balance = "10000"
    },
    {
      accountName = "Hawaii"
      accountType = "AssetIssue"
      address = "AXDQr9wC9k7Cci3P8ZVjjvQdyh7bSew94N"
      balance = "10000"
    },
    {
      accountName = "Maldives"
      accountType = "AssetIssue"
      address = "ANUWxx77dkkLTyTbu8U9Dx68ixFeqMvG41"
      balance = "10000"
    },
    {
      accountName = "Ceres"
      accountType = "AssetIssue"
      address = "APwugV9siLtLTvezx5J8k3V4ADxwbsrsEb"
      balance = "10000"
    },
    {
      accountName = "Mimas"
      accountType = "AssetIssue"
      address = "AZBNnjFyMUBr4rHFh4rXJNDidMzD7Dg1Kt"
      balance = "10000"
    },
    {
      accountName = "Castaway"
      accountType = "AssetIssue"
      address = "ABn3HE7DVwQkMCX6Z4p4ba3mKYnnjo4Bj9"
      balance = "10000"
    },
  ]
  witnesses = [
    {
      address = "AX2uKnE8gUhWeyrFWTUiHivKVZXhMLWa68"
      url = "https://aixchain.com"
      voteCount = 10009
    },
    {
      address = "AGbfgQrLJdQZACpn72piENSHkmKMtMjVP2"
      url = "https://aixchain.com"
      voteCount = 10008
    },
    {
      address = "AS1aN6smtrWeViFdYmvvb34fzbQHhbhnfx"
      url = "https://aixchain.com"
      voteCount = 10007
    },
    {
      address = "ABeVtLcYApzn5bp7V8sfQ1geF97mRNFsdb"
      url = "https://aixchain.com"
      voteCount = 10006
    },
    {
      address = "ASnxxtk1kaAc79uBiR9kyZXRJNpxcFGkG1"
      url = "https://aixchain.com"
      voteCount = 10005
    },
  ]
  timestamp = "0" #2017-8-26 12:00:00

  parentHash = "957dc2d350daecc7bb6a38f3938ebde0a0c1cedafe15f0edae4256a2907449f6"
}

localwitness = [
// Place your witness private key here
]

block = {
  needSyncCheck = true
  maintenanceTimeInterval = 21600000
}

vm = {
  supportConstant = true
  minTimeRatio = 0.0
  maxTimeRatio = 5.0
}

committee = {
  allowCreationOfContracts = 1
  allowUpdateAccountName = 1
  allowSameTokenName = 1
  allowDelegateResource = 1
  allowTvmTransferTrc10 = 1
  allowAdaptiveEnergy = 1
  allowTvmConstantinople = 1
  multiSignFee = 1
  allowMultiSign = 1
  updateAccountPermissionFee = 1
}

```

### 4, Run node

`cd /project/aixc`

`docker-compose up -d`

The data will be stored into output-directory. Check the log file logs/tron.log to monitor syncing process and producing block process.


# Super Representative


# How to become a SR

In AIXChain network, any account can apply to become a super representative candidate. Every account can vote for super representative candidates. The top 27 candidates with the most votes are the super representatives. Super representatives can produce blocks. The votes will be counted every 6 hours, so super representatives may also change every 6 hours.

To prevent a vicious attack, AIXChain network burns **9999** Aixc from the account that applies to become a super representative candidate. We can change the number to create a Proposal and SRs can vote or not. SR has a config named “Brokerage”, the value can be changed by SR and applied on the next maintenance time (6 hours). The Brokerage value is a strategy for SR to get the votes from accounts.

* Vote Rewards: **64** Aixc
* Block Rewards: **128** Aixc

Apply to be a Super Representative from Explorer

![](https://lh4.googleusercontent.com/nWC-Td02uirSXneUfJBZOUEgYHP4xQJa6jrJbeN9ZrMoWl2-yqeQXxB4JA-hHQvdi04ZBn1wn7YdgVkgLAuenGgBdxiC4uOICxeH4LM3P_6PTRCp5kJpa3gIuI1GKhaMp-NCIL6p)


# Super Representatives Election

To vote, you need to have Aixchain Power (AP). To get Aixchain Power, you need to stake AIXC. Every 1 staked AIXC accounts for AP. Every account in Aixchain network has the right to vote for a super representative candidate. After you unstake your staked AIXC, you will lose the responding Aixchain Power (AP), so your previous vote will be invalid. The result of the election will be applied on the next maintenance time.


# How to change witness name

The witness's name will be shown when produced a block

![](https://2747511296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkpaW24PzcyHhDGllVTA6%2Fuploads%2FQAvb7DIxZFjTnpCvJPuF%2Fimage.png?alt=media\&token=814495f6-078c-4ded-b9ef-f7d84bb362ba)

By default the witness address will be shown.

If you want to change the witness name, you can set the name by using [aixc-cli](broken://pages/JJ0L4OAJPXBi7uJ34dQr)

Select set account name function and follow instruction.

Note: The account name (witness name) can not alter after set


# HTTP API


# Introduction

### Select network

| Network | URL                                     |
| ------- | --------------------------------------- |
| Mainnet | <https://explorer.aixchain.com/>        |
| Testnet | <https://testnetexplorer.aixchain.com/> |


# API Signature and Broadcast Flow


# API List


# Full Node API Overview

To use these APIs, you should know that:

* To send a transaction to the AIXChain network:
  * Create a transaction via system contract APIs
  * Sign the transaction by `GetTransactionSign`
  * Broadcast the transaction by `BroadcastTransaction`
* Or there're shortcut APIs:
  * EasyTransfer
  * EasyTransferByPrivate
  * EasyTransferAsset
  * EasyTransferAssetByPrivate

Any other APIs are used for querying on-chain data.

To distinguish HEX and Base58check addresses, a `visible` parameter is introduced.

To handle multi-sign, a `permission_id` parameter is introduced to select the underlying permission type.


# Address Utilities


# GenerateAddress

GET: http\://172.104.51.182:16667/wallet/GenerateAddress

Generates a random private key and address pair. Returns a private key, the corresponding address in hex, and base58.（there is a security risk. This interface service has been shutdown by the Trongrid. Please use the offline mode or the node deployed by yourself.）

* This API call returns the randomly generated privateKey value in the JSON output. Please do not call this API provided by the public node. It is recommended to use offline address generation.

**Example :**

**curl** --request GET\
\--url <http://172.104.51.182:16667/wallet/generateaddress>\
\--header 'Accept: application/json' &#x20;

**Response :**

`{`&#x20;

`"privateKey": "34da86ff6cb99a90716b840af95b42349c92d577b27c0e8476f4ee9c40ac4920", "address": "ASuFVNtVK2evFLHbHYv1KUNMUfEKMu68Dw",                                           "hexAddress":  "41b9ba8d34c3655e80dc38a129fed91a1ea14a757d"`

&#x20;`}`


# CreateAddress

POST: http\://172.104.51.182:16667/wallet/createaddres

Create address from a specified password string (NOT PRIVATE KEY)（there is a security risk. This interface service has been shutdown by the AIXChain. Please use the offline mode or the node deployed by yourself.）

**Return value：The address**

❗️ Please control risks when using this API. To ensure environmental security, please do not invoke APIs provided by other or invoke this very API on a public network.

**BODY PARAMS**

`{`**`value`**` ``string required}`

&#x20;**note:**&#x20;

* **value** is the password, converted from ascii to hex. i.e. the pass phrase.

**Example :**

**curl** --request POST\
\--url [https://api.shasta.trongrid.io/wallet/createaddress](http://172.104.51.182:16667/wallet/createaddress)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "value": "7465737470617373776f7264" } '

**Input:**&#x20;

`{ "value": "123456" }`

**Response:**&#x20;

`{`

`"base58checkAddress": "AX3yxmJjCcDa8XvZMEYBPofsG1NB7fkEt8",`` `                                                      `"value": "41e741d61df254f4dfa3a832f5589f243d3c561806"`&#x20;

`}`


# ValidateAddress

POST: http\://172.104.51.182:16667/wallet/validateaddress

Validates address, returns either true or false.

#### Return value: True **or** False&#x20;

**BODY PARAMS**

`{`**`address`**`  ``string required}`

**note**:&#x20;

* **address** should be in base58checksum, hexString, or base64 format<br>

**Example :**\
**curl** --request POST\
\--url <http://172.104.51.182:16667/wallet/validateaddress>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "address": "41e741d61df254f4dfa3a832f5589f243d3c561806" }

**Input:**&#x20;

`{`&#x20;

`"address": "41e741d61df254f4dfa3a832f5589f243d3c561806"`

&#x20;`}`

**Response:**&#x20;

`{ "result": true, "message": "Hex string format" }`


# Accounts


# CreateAccount

POST: http\://172.104.51.182:16667/wallet/createaccount

Create an account. Uses an already activated account to create a new account

**Return**: Transaction object

> * The expiration time of the http api creation transaction is 1 minute, so to complete the on-chain, you need to complete gettransactionsign and broadcasttransaction within 1 minute after the creation.

**BODY PARAMS**

`{`

**`owner_address`**` ``string`

**`account_address`**` ``string`

**`visible`**` ``boolean (optional)`

**`permission_id`**` ``int32 (optional)`

`}`

**Note:**

* **owner\_address**  is an activated account，converted to a hex String.If the owner\_address has enough bandwidth obtained by freezing Aixc, then creating an account will only consume bandwidth , otherwise, 0.1 Aixc will be burned to pay for bandwidth, and at the same time, 1 Aixc will be required to be created.
* **account\_address** is the address of the new account, converted to a hex string, this address needs to be calculated in advance
* **visible** is optional, whether the address is in base58 format
* **permission\_id** is optional,for multi-signature use

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/createaccount>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0", "account\_address": "414203485a535a4072C9FBFaAEEfe2A010AD0BcdC0" }

**Input:**&#x20;

`{`

`"owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0",`&#x20;

`"account_address": "414203485a535a4072C9FBFaAEEfe2A010AD0BcdC0"`

`}`

**Response:**&#x20;

{

&#x20;"visible": false, "txID": "a5d95d0ba8370f1b585f4cc427d3827b97036d73cc980b97390c603d0403b0c9", "raw\_data": { "contract": \[ { "parameter": { "value": { "owner\_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "account\_address": "414203485a535a4072c9fbfaaeefe2a010ad0bcdc0" }, "type\_url": "type.googleapis.com/protocol.AccountCreateContract" }, "type": "AccountCreateContract" } ], "ref\_block\_bytes": "d576", "ref\_block\_hash": "7aa71a8b97000d36", "expiration": 1639056939000, "timestamp": 1639056881436 }, "raw\_data\_hex": "0a02d57622087aa71a8b97000d3640f8afa0fbd92f5a6612640a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e74437265617465436f6e7472616374122e0a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb01215414203485a535a4072c9fbfaaeefe2a010ad0bcdc0709cee9cfbd92f"&#x20;

}

\=> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The account created success on WEL network.

`{`

`"result":true,"txid":"a5d95d0ba8370f1b585f4cc427d3827b97036d73cc980b97390c603d0403b0c9"`

`}`


# GetAccount

POST: http\://172.104.51.182:16667/wallet/getaccount

Query information about an account,Including balances, stake, votes and time, etc.

\
**Return value**：Account Object

**BODY PARAMS**\
`{`

**`address`**`string (required)`

**`visible`**` ``boolean (optional)`

`}`

**Note:**  &#x20;

* **address** should be converted to a hex string
* **visible** is optional,whether the address is in base58 format

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getaccount>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' {"address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true}

**Input:**&#x20;

`{ "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }`

**Response:**&#x20;

`{` &#x20;

`"address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "balance": 999729632600, "create_time": 1639021920000, "latest_opration_time": 1639056927000, "free_net_usage": 322, "latest_consume_free_time": 1639036485000, "account_resource": { "latest_consume_time_for_energy": 1639036485000 }, "owner_permission": { "permission_name": "owner", "threshold": 1, "keys": [ { "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "weight": 1 } ] }, "active_permission": [ { "type": "Active", "id": 2, "permission_name": "active", "threshold": 1, "operations": "7fff1fc0033e0300000000000000000000000000000000000000000000000000", "keys": [ { "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "weight": 1 } ] } ]`&#x20;

`}`


# UpdateAccount

POST: http\://172.104.51.182:16667/wallet/updateaccount

Modify account name

**Return**: Transaction object

**BODY PARAMS**

`{`

**`account_name`** `string (required)`

**`owner_address`**` ``string (required)`

**`visible`**` ``boolean (optional)`

**`permission_id`**` ``int32 (optional)`

`}`

**Note:**  &#x20;

* **account\_name** is the name of the account, converted to a hex string
* **owner\_address** is the account address to be modified, converted to a hex string
* **visible** is optional,whether the address is in base58 format
* **permission\_id** is optional,for multi-signature use

**Example:**

curl --request POST\
\--url [**http://172.104.51.182:16667/wallet/updateaccount**](http://172.104.51.182:16667/wallet/updateaccount)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data '{ "account\_name": "0x55555555555555555555555555555555555555555", "owner\_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0" }

**Input:**&#x20;

`{`&#x20;

`"account_name": "0x55555555555555555555555555555555555555555", "owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0"`&#x20;

`}`

**Response:**&#x20;

`{`&#x20;

`"visible": false, "txID": "36b1610c2090227ca057304c1a31826dda741d093f5d81c829b7c16947dca898", "raw_data": { "contract": [ { "parameter": { "value": { "account_name": "055555555555555555555555555555555555555555", "owner_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0" }, "type_url": "type.googleapis.com/protocol.AccountUpdateContract" }, "type": "AccountUpdateContract" } ], "ref_block_bytes": "0a8f", "ref_block_hash": "7aa63c76a090236e", "expiration": 1639099299000, "timestamp": 1639099240270 }, "raw_data_hex": "0a020a8f22087aa63c76a090236e40b8e9b98fda2f5a68080a12640a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e4163636f756e74557064617465436f6e7472616374122e0a150555555555555555555555555555555555555555551215414203485a535a4072c9fbfaaddfe2a010ad0bcdb070ce9eb68fda2f"`&#x20;

`}`

\=> When you call **gettransactionsign** API then call **broadcasttransaction** API<br>

We will the final result: The account updated success on AIIX network.<br>

`{`&#x20;

`"result": true, "txid": "36b1610c2090227ca057304c1a31826dda741d093f5d81c829b7c16947dca898"`&#x20;

`}`<br>


# AccountPermissionUpdate


# GetAccountBalance

GET: http\://172.104.51.182:16667/wallet/getaccountbalance

Get the account balance in a specific block.

**BODY PARAMS**\
`{`

`account_identifier json`

`block_identifier json`

**`visible`**` ``boolean (Optional)`

`}`

**Example:**

curl -X POST [http://127.0.0.1:8090/wallet/getaccountbalance](http://172.104.51.182:16667/wallet/getaccountbalance) -d '{ "account\_identifier": { "address": "TLLM21wteSPs4hKjbxgmH1L6poyMjeTbHm" }, "block\_identifier": { "hash": "0000000000010c4a732d1e215e87466271e425c86945783c3d3f122bfa5affd9", "number": 68682 }, "visible": true }'

**Input:**&#x20;

`{`&#x20;

`"account_identifier":`&#x20;

`{ "address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0" }, "block_identifier": { "hash": "00000000004583a03fdc04c333d70ea3c80d2e567919b91107582246b82befee", "number": 4555680 }`

&#x20;`}`

**Response:**

{

&#x20;"balance": 0,&#x20;

"block\_identifier":&#x20;

&#x20;       {&#x20;

"hash": "00000000004583a03fdc04c333d70ea3c80d2e567919b91107582246b82befee", "number": 4555680&#x20;

&#x20;            }&#x20;

}


# Account Resources


# GetAccountResource

POST: http\://172.104.51.182:16667/wallet/getaccountresource

Query the resource information of an account(bandwidth,energy,etc)

**BODY PARAMS**

`{`

**`address`**` ``string`

**`visible`**` ``boolean (optional)`

`}`

**Note:**

| Parameter         | Description                                  |
| ----------------- | -------------------------------------------- |
| freeNetUsed       | Free bandwidth used                          |
| freeNetLimit      | Total free bandwidth                         |
| NetUsed           | Used amount of bandwidth obtained by staking |
| NetLimit          | Total bandwidth obtained by staking          |
| TotalNetLimit     | Total bandwidth can be obtained by staking   |
| TotalNetWeight    | Total TRX staked for bandwidth               |
| tronPowerLimit    | TRON Power(vote)                             |
| EnergyUsed        | Energy used                                  |
| EnergyLimit       | Total energy obtained by staking             |
| TotalEnergyLimit  | Total energy can be obtained by staking      |
| TotalEnergyWeight | Total TRX staked for energy                  |

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getaccountresource>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz" }

**Input:**&#x20;

`{ "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }`

**Response:**&#x20;

`{`&#x20;

`"freeNetUsed": 373, "freeNetLimit": 5000, "TotalNetLimit": 43200000000, "TotalNetWeight": 2225116, "TotalEnergyLimit": 50000000000000, "TotalEnergyWeight": 1108611`&#x20;

`}`


# GetAccountNet

POST: http\://172.104.51.182:16667/wallet/getaccountnet

Query bandwidth information.

**Return value**：Bandwidth information for the account.

**BODY PARAMS**

`{`

**`address`**` ``string`

**`visible`**` ``boolean (optional)`

`}`\
**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getaccountnet>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "address": "4112E621D5577311998708F4D7B9F71F86DAE138B5" } '

**Input:**&#x20;

`{ "address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0" }`

**Response:**&#x20;

`{`&#x20;

`"freeNetUsed": 295, "freeNetLimit": 5000, "TotalNetLimit": 43200000000, "TotalNetWeight": 3225116`&#x20;

`}`


# FreezeBalance

POST: http\://172.104.51.182:16667/wallet/freezebalance

Stake an amount of Aixc to obtain bandwidth OR Energy and AIXC Power (voting rights) . Optionally, user can stake Aixc to grant Energy or Bandwidth to others. Balance amount in the denomination of sun.

**BODY PARAMS**

`{`

**`owner_address`**` ``string`

**`frozen_balance`**` ``int64`

**`frozen_duration`**` ``int32`

**`resource`**` ``string`

**`receiver_address`**` ``string`

**`permission_id`**` ``int32`

**`visible`**` ``boolean`

`}`

**Example:**

curl --request POST\
\--url [`http://172.104.51.182:16667/wallet/freezebalance`](http://172.104.51.182:16667/wallet/freezebalance)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data @- <\<EOF&#x20;

{ "owner\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "frozen\_duration": 3, "frozen\_balance":2000000, "resource": "ENERGY", "visible": true } EOF

**Input:**&#x20;

`{`&#x20;

`"owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "frozen_duration": 3, "frozen_balance":2000000, "resource": "ENERGY", "visible": true`&#x20;

`}`

**Response:**&#x20;

`{`&#x20;

`"visible": true, "txID": "b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a", "raw_data": { "contract": [ { "parameter": { "value": { "resource": "ENERGY", "frozen_duration": 3, "frozen_balance": 2000000, "owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7" }, "type_url": "type.googleapis.com/protocol.FreezeBalanceContract" }, "type": "FreezeBalanceContract" } ], "ref_block_bytes": "83ce", "ref_block_hash": "de07f3deb051961a", "expiration": 1639400256000, "timestamp": 1639400196186 }, "raw_data_hex": "0a0283ce2208de07f3deb051961a4080e4fa9edb2f5a59080b12550a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374121f0a1541a9c46373aeb4749e3ce45aca242b027a46f486f91080897a1803500170da90f79edb2f"`&#x20;

`}`

\=> Continue call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on WEL network.

`{`&#x20;

`"result": true,`&#x20;

`"txid": "b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a"`&#x20;

`}`


# UnfreezeBalance

POST: http\://172.104.51.182:16667/wallet/unfreezebalance

Unstake Aixc that has passed the minimum stake duration to release bandwidth and energy and at the same time Aixchain Power will reduce and all votes will be canceled

**BODY PARAMS**

`{`

**`owner_address`**` ``string`

**`resource`**` ``string`

**`receiver_address`**` ``string`

**`permission_id`**` ``int32`

**`visible`**` ``boolean`

`}`

**Notes:**

* **owner\_address** is default hexString
* **resource** is stake Aiix for 'BANDWIDTH' or 'ENERGY'
* **receiver\_address** is optional,the address that will lose the resource, default hexString
* **permission\_id** is optional, for multi-signature use
* **visible** is optional, Whether the address is in base58 format.

**Input:**

`{`&#x20;

`"owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7",`&#x20;

`"resource": "ENERGY",`&#x20;

`"visible": true`&#x20;

`}`

**Response:**

`{`&#x20;

`"visible": true, "txID": "90eda9c182369c06e7dad3db7ac2cf72f6f2da8a77f4d5a5b97adefd2b2a5ed1", "raw_data": { "contract": [ { "parameter": { "value": { "resource": "ENERGY", "owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7" }, "type_url": "type.googleapis.com/protocol.UnfreezeBalanceContract" }, "type": "UnfreezeBalanceContract" } ], "ref_block_bytes": "383e", "ref_block_hash": "205f2dfb256d5783", "expiration": 1640134338000, "timestamp": 1640134278356 }, "raw_data_hex": "0a02383e2208205f2dfb256d578340d0cbfffcdd2f5a55080c12510a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e556e667265657a6542616c616e6365436f6e747261637412190a1541a9c46373aeb4749e3ce45aca242b027a46f486f9500170d4f9fbfcdd2f"`&#x20;

`}`

\=> Continue call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on Aixchain network.

`{`

`"result":true,`

`"txid":"90eda9c182369c06e7dad3db7ac2cf72f6f2da8a77f4d5a5b97adefd2b2a5ed1"`

`}`

<br>


# GetDelegatedResource

POST: http\://172.104.51.182:16667/wallet/getdelegatedresource

Returns all resources delegations from an account to another account. The fromAddress can be retrieved from the GetDelegatedResourceAccountIndex API.

\
**BODY PARAMS**

`{`

**`fromAddress`**` ``string`

**`toAddress`**` ``string`

**`visible`**` ``boolean`

`}`

**Note:**  &#x20;

* **fromAddress**: Energy from address, default hexString
* **toAddress:** Energy delegation information
* **visible**: optional, Whether the address is in base58 format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getdelegatedresource>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data '{ "fromAddress": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "toAddress": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible" : true }

**Input:**&#x20;

`{` \
`"fromAddress": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "toAddress": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible" : true`&#x20;

`}`

**response:**

`{}`


# GetDelegatedResourceAccountIndex

POST: http\://172.104.51.182:16667/wallet/getdelegatedresourceaccountindex

Query the energy delegation by an account. i.e. list all addresses that have delegated resources to an account.

\
**BODY PARAMS**

`{`

**`value`**` ``string required,`

**`visible`**`  ``boolean optional`

`}`

**Example:**

curl --request POST\
\--url [`http://172.104.51.182:16667/wallet/getdelegatedresourceaccountindex`](http://172.104.51.182:16667/wallet/getdelegatedresourceaccountindex)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "value": "AG1XPM4rwzdcbqcmRhMUvGQ9789nrmniyo", "visible": true }

**Input:**&#x20;

`{ "value": "AG1XPM4rwzdcbqcmRhMUvGQ9789nrmniyo", "visible": true }`

**response:**

`{}`


# Query the Network


# GetBlockByNum

POST: http\://172.104.51.182:16667/wallet/getblockbynum

Returns the Block Object corresponding to the 'Block Height' specified (number of blocks preceding it).

**BODY PARAMS**

`{`

**`num`**` ``int32`

`}`

**Note:**  &#x20;

* **num** is the block height

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getblockbynum -d '{"num":4556275}'
```

**Input:**&#x20;

`{ "num":4556275 }`

**response:**

`{`

&#x20;`"blockID": "00000000004585f34485eeb4822e305632bdfd8d0019d0c8ce2841c2b0fa0644", "block_header": { "raw_data": { "number": 4556275, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "4151e7ae7524b5861aabb9aa46008ccdab8dc85515", "parentHash": "00000000004585f20152da2d8de6ae271ac1910a6b1a3d88e00f7ffa6c3b38bb", "version": 21, "timestamp": 1639401906000 }, "witness_signature": "bcd608e088db82839b88f18685154ccb637f2b15dc1be7b1a0cef13db3a7d2be1acc2843e00592e38dee6d6d5aeb67d4d727de27dcae46ca114fd5fea703364b01" }`&#x20;

`}`


# GetBlockById

POST: http\://172.104.51.182:16667/wallet/getblockbynum

Query block by ID(block hash).

**BODY PARAMS**

`{`

**`Value`**`int32`

`}`

**Note:**  &#x20;

* **value** is Block ID

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getblockbyid -d '{"value": "0000000000458642bba4c9b7c84b5fcc27e9b4204f0e92ac56254a805afb0862"}'
```

<br>

**Input:**&#x20;

`{`

&#x20;`"value":"0000000000458642bba4c9b7c84b5fcc27e9b4204f0e92ac56254a805afb0862"`&#x20;

`}`

**response:**

`{`

&#x20;`"blockID": "0000000000458642bba4c9b7c84b5fcc27e9b4204f0e92ac56254a805afb0862", "block_header": { "raw_data": { "number": 4556354, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "412612938e4478f0e7331aa2e42c24690b0ca1d59f", "parentHash": "0000000000458641b18900b9f78ab286857b3801ef862d3d84b78f3b8c0f460a", "version": 21, "timestamp": 1639402152000 }, "witness_signature": "6863e7d523c01aaf7de7b8540868626ebe71a8205c6481706327a72f9aff7b0a2896ea692d07c3bf3ddfba5e2e0128941c453a975016acb0653a00eeb6b0fa5f00" }`

&#x20;`}`


# GetBlockByLatestNum

POST: http\://172.104.51.182:16667/wallet/getblockbylatestnum

Returns a list of block objects.

**BODY PARAMS**

`{`

**`num`**` ``int32`

`}`

**Note:**  &#x20;

* **`num`**`:`The number of blocks to query

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getblockbylatestnum -d '{"num":5}'
```

**Input:**&#x20;

`{`

&#x20;`"value":5`&#x20;

`}`

**response:**

`{` &#x20;

`"block": [ { "blockID": "000000000045b74ff58fb56edcd7afa82dfd931fab5c34512a416de5464b87ee", "block_header": { "raw_data": { "number": 4568911, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "41c702d758f7e2e9af19a47d70e5f77d1084a11f55", "parentHash": "000000000045b74edf7739c5caa9fd637f3d63557709c9b366182964099c4c87", "version": 21, "timestamp": 1639441284000 }, "witness_signature": "3c2da68d83219160055fab943d51d84193ae9b13f43ee44a4aab4e3ed1900af2319f8a42a3092eaa2619b742a50827678f719101e3560c13378df02552c10f2d01" } }, { "blockID": "000000000045b750e49f332f9b7e2cd77cc0b7a914f72ce70b3c37e591236c6d", "block_header": { "raw_data": { "number": 4568912, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "413c85c63e43ac484f2c567dbffa64be4707ccd4b9", "parentHash": "000000000045b74ff58fb56edcd7afa82dfd931fab5c34512a416de5464b87ee", "version": 21, "timestamp": 1639441287000 }, "witness_signature": "0227d697337773d726cbbe770334db19d0a54d163ab3f43168a167e9518ae1252a9e218aa8386d22579a1227acca7541dd46b0692789b9a58c5ab638666d7e8001" } }, { "blockID": "000000000045b7510fc95afddadadab0313d08eaed1d86ed7618d968e1dd89fe", "block_header": { "raw_data": { "number": 4568913, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "41b5515b731946b1976db5d9aff8ee456ed251e90d", "parentHash": "000000000045b750e49f332f9b7e2cd77cc0b7a914f72ce70b3c37e591236c6d", "version": 21, "timestamp": 1639441290000 }, "witness_signature": "46a35f637a5833ffe72a26e047b13eaa7e747c20c4c8c4719c2d81f27685f66353d605b5248411560dddde759d878429c27e31ddf6d2673f929463ae8b7e423101" } }, { "blockID": "000000000045b7522af79c3f1c4e0aa51b208872874d35bfce5be986671a3b93", "block_header": { "raw_data": { "number": 4568914, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "41af6ade845d535deefc4986a9f0dc9a5d9029c384", "parentHash": "000000000045b7510fc95afddadadab0313d08eaed1d86ed7618d968e1dd89fe", "version": 21, "timestamp": 1639441293000 }, "witness_signature": "b32a5adfae4ad42420b23fe51b803598fd9452a3107fccfb8da0eaa74176a54875b72d19c61046ee630da0d91ceba80cbeac739b6f11706ceb5c6640d68e3b8c01" } }, { "blockID": "000000000045b7537c3e30946878efb14552036198032eb9980cf4c8aa3ef188", "block_header": { "raw_data": { "number": 4568915, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "415698f57bcdb9674b564b5423b3bd1ed877a8bf41", "parentHash": "000000000045b7522af79c3f1c4e0aa51b208872874d35bfce5be986671a3b93", "version": 21, "timestamp": 1639441299000 }, "witness_signature": "dbe2769aeddce7dffc70102605379a0487c35765008462ba10ff004b1886973609c6505b9187867b3e3eb00cc446454bbe8b2bcb51013dd462ff8751c3fe3d8e00" } } ]`&#x20;

`}`


# GetBlockByLimitNext

POST: http\://172.104.51.182:16667/wallet/getblockbylimitnext

Returns the list of Block Objects included in the 'Block Height' range specified.

**BODY PARAMS**

`{`

**`startNum`**` ``int32`

**`endNum`**`  ``int32`

`}`

**Note:**  &#x20;

* **startNumint32 :** Starting block height, including this block.
* **endNum:** Ending block height, excluding that block.

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getblockbylimitnext -d '{"startNum":4569013,"endNum":4569015}'

```

**Input:**&#x20;

`{`

`"startNum":4569013,`&#x20;

`"endNum":4569015`&#x20;

`}`

**response:**

`{`&#x20;

`"block": [ { "blockID": "000000000045b7b554bf5cf9f04071a95ac85ae592d2b5ce08b2e20eed2b6ab2", "block_header": { "raw_data": { "number": 4569013, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "41fd984ae29f7459aeae375af09b2241acea0b22a0", "parentHash": "000000000045b7b4a4ddd8c1659af43bf6838d9b1daf2e29b8c715d6fd8ca742", "version": 21, "timestamp": 1639441602000 }, "witness_signature": "a19e8ce4faccd6dee699401ed126583b1f1497d9c2922bc39ed12a052ae0aa285626427a7861a8399b873758021690617f10acb280914f093ab2edb35f3751a200" } }, { "blockID": "000000000045b7b6ba36bc540cc20a7d012ccffd7a793a0fe84c0a5f470fdab3", "block_header": { "raw_data": { "number": 4569014, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "412cc09193d124f7678a482a38874ce6a6a7308e25", "parentHash": "000000000045b7b554bf5cf9f04071a95ac85ae592d2b5ce08b2e20eed2b6ab2", "version": 21, "timestamp": 1639441605000 }, "witness_signature": "c12c7c79bc9ad238cd8387f06ee47b3a4451a5c689bff91421b926dc123c98385c3ead4651b6eab322c82f3fdabde63718ca3d7815e410d5fea6989944d1124400" } } ]`&#x20;

`}`


# GetNowBlock

POST: http\://172.104.51.182:16667/wallet/getnowblock

Query the latest block information

\
**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getnowblock
```

\
**response:**

`{`&#x20;

`"blockID": "000000000045b7df692f3f59b82e3cb415a48129c2b46d1c989a039c8425143c", "block_header": { "raw_data": { "number": 4569055, "txTrieRoot": "0000000000000000000000000000000000000000000000000000000000000000", "witness_address": "41641e9906076af55962d2869c8f4a897c78b6abf9", "parentHash": "000000000045b7de7b40fc7d8209d20581cf286c232cb81dee8db0f9e5f89779", "version": 21, "timestamp": 1639441734000 }, "witness_signature": "d1371df50d9fb89537e21156efddde5837b0cf0a5dbf6ca1560ddfdc3fc846204fe393cc24905533a331f5bed37641bfc97503a0f55a65926452a81f08dc4a0e01" }`&#x20;

`}`


# GetTransactionById

POST: http\://172.104.51.182:16667/wallet/gettransactionbyid

Query transaction information by transaction id.

\
**BODY PARAMS**

`{`

**`Value`**` ``string`

`}`

**Note:**  &#x20;

* **value** is transaction ID

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getblockbyid -d '{"value": "b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a"}'
```

<br>

**Input:**&#x20;

`{`

&#x20;`"value":"`b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a`"`&#x20;

`}`

**Response:**

`{`&#x20;

`"ret": [ { "contractRet": "SUCCESS" } ], "signature": [ "17bb30622abbc65c185bfa516ef381152579510c73370c794018e6e7a448cf825374a5bb9279da43455147c6ef842c43a463ba8168ec2c27f5ba4701bc34910301" ], "txID": "b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a", "raw_data": { "contract": [ { "parameter": { "value": { "resource": "ENERGY", "frozen_duration": 3, "frozen_balance": 2000000, "owner_address": "41a9c46373aeb4749e3ce45aca242b027a46f486f9" }, "type_url": "type.googleapis.com/protocol.FreezeBalanceContract" }, "type": "FreezeBalanceContract" } ], "ref_block_bytes": "83ce", "ref_block_hash": "de07f3deb051961a", "expiration": 1639400256000, "timestamp": 1639400196186 }, "raw_data_hex": "0a0283ce2208de07f3deb051961a4080e4fa9edb2f5a59080b12550a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374121f0a1541a9c46373aeb4749e3ce45aca242b027a46f486f91080897a1803500170da90f79edb2f"`&#x20;

`}`


# GetTransactionInfoById

POST: http\://172.104.51.182:16667/wallet/gettransactioninfobyid

Query the transaction fee, block height by transaction id

**BODY PARAMS**

`{`

**`Value`**` ``string`

`}`

**Note:**  &#x20;

* **value** is transaction hash, i.e. transaction id.

**Example:**

curl --request POST\
\--url <https://api.shasta.trongrid.io/wallet/gettransactioninfobyid\\>
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "value":"bed9626b9a7a9632750bd40776f2fd2ffcbc627ed145a65577d8de416666a86b" }

**Input:**&#x20;

`{`&#x20;

`"value":"bed9626b9a7a9632750bd40776f2fd2ffcbc627ed145a65577d8de416666a86b"`&#x20;

`}`

**Response:**

`{`&#x20;

`"id": "bed9626b9a7a9632750bd40776f2fd2ffcbc627ed145a65577d8de416666a86b", "blockNumber": 4555680, "blockTimeStamp": 1639400052000, "contractResult": [ "" ], "receipt": { "net_usage": 268 }`&#x20;

`}`


# GetTransactionInfoByBlockNum

POST: http\://172.104.51.182:16667/wallet/gettransactioninfobyblocknum

Query the transaction fee, block height by block Height

**BODY PARAMS**

`{`

**`num`**` ``int32`

`}`

**Note:**  &#x20;

* **num** is block height.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/gettransactioninfobyblocknum>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data '{"num":4555734}'

**Input:**&#x20;

`{`&#x20;

`"num":4555734`

`}`

**Response:**

`[`

&#x20;`{`

&#x20;`"blockNumber": 4555734, "contractResult": [ "" ], "blockTimeStamp":    1639400220000, "receipt": { "net_usage": 252 }, "id": "b1f4bbec47e1b743bd6527c9cc0bb63db050e8da86b30a5d8c7ba5368da49d5a"`&#x20;

&#x20;`}`&#x20;

`]`


# ListNodes

GET: http\://172.104.51.182:16667/wallet/listnodes

Query the list of nodes connected to the API node

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/listnodes
```

\
**Response:**

`{`&#x20;

`"nodes": [ { "address": { "host": "3139322e34362e3233302e3138", "port": 16666 } }, { "address": { "host": "3137322e3130342e3138302e313436", "port": 16666 } }, { "address": { "host": "3137322e3130352e3131392e3235", "port": 16666 } }, { "address": { "host": "3137322e3130352e3131332e3839", "port": 16666 } }, { "address": { "host": "3133392e3136322e36332e323530", "port": 26666 } }, { "address": { "host": "39312e37372e3135322e313238", "port": 16666 } }, { "address": { "host": "3133392e3136322e31322e3737", "port": 16666 } }, { "address": { "host": "3137322e3130352e3132332e3735", "port": 16666 } }, { "address": { "host": "3133392e3136322e312e3537", "port": 16666 } }, { "address": { "host": "3137322e3130342e33322e313634", "port": 16666 } }, { "address": { "host": "39312e37372e3135322e313238", "port": 26666 } }, { "address": { "host": "3133392e3136322e36332e323530", "port": 16666 } }, { "address": { "host": "3137322e3130342e35302e313933", "port": 16666 } }, { "address": { "host": "3137322e3130352e3131332e3135", "port": 16666 } }, { "address": { "host": "3137322e3130342e3138392e323433", "port": 16666 } }, { "address": { "host": "3133392e3136322e312e3938", "port": 16666 } }, { "address": { "host": "3137322e3130342e3138392e323433", "port": 26666 } }, { "address": { "host": "3139322e34362e3233302e3134", "port": 16666 } } ]`&#x20;

`}`


# GetNodeInfo

GET: http\://172.104.51.182:16667/wallet/getnodeinfo

Query Node Information. Returns information about current state of node.

\
**Example:**

curl --request GET\
\--url <http://172.104.51.182:16667/wallet/getnodeinfo>\
\--header 'Accept: application/json'

**Response:**

`{ "activeConnectCount": 4, "beginSyncNum": 4575973, "block": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "cheatWitnessInfoMap": {}, "configNodeInfo": { "activeNodeSize": 0, "allowAdaptiveEnergy": 1, "allowCreationOfContracts": 1, "backupListenPort": 10001, "backupMemberSize": 0, "backupPriority": 8, "codeVersion": "4.2.1", "dbVersion": 2, "discoverEnable": true, "listenPort": 16666, "maxConnectCount": 30, "maxTimeRatio": 5.0, "minParticipationRate": 0, "minTimeRatio": 0.0, "p2pVersion": "1001", "passiveNodeSize": 0, "sameIpMaxConnectCount": 2, "sendNodeSize": 0, "supportConstant": true, "versionNum": "15520" }, "currentConnectCount": 11, "machineInfo": { "cpuCount": 4, "cpuRate": 0.019541572875478308, "deadLockThreadCount": 0, "deadLockThreadInfoList": [], "freeMemory": 705556480, "javaVersion": "1.8.0_292", "jvmFreeMemory": 1015755400, "jvmTotalMemory": 1860698112, "memoryDescInfoList": [ { "initSize": 2555904, "maxSize": 251658240, "name": "Code Cache", "useRate": 0.2220738728841146, "useSize": 55886720 }, { "initSize": 0, "maxSize": -1, "name": "Metaspace", "useRate": 0.9433457676426427, "useSize": 64334672 }, { "initSize": 0, "maxSize": 1073741824, "name": "Compressed Class Space", "useRate": 0.006493717432022095, "useSize": 6972576 }, { "initSize": 33554432, "maxSize": 693108736, "name": "PS Eden Space", "useRate": 0.08610189556173765, "useSize": 59677976 }, { "initSize": 5242880, "maxSize": 2097152, "name": "PS Survivor Space", "useRate": 0.8125, "useSize": 1703936 }, { "initSize": 88080384, "maxSize": 1395654656, "name": "PS Old Gen", "useRate": 0.5614288582289515, "useSize": 783560800 } ], "osName": "Linux 4.15.0-142-generic", "processCpuRate": 0.02438460878347603, "threadCount": 143, "totalMemory": 8363528192 }, "passiveConnectCount": 7, "peerList": [ { "active": false, "avgLatency": 5.0, "blockInPorcSize": 0, "connectTime": 1637168305494, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "172.104.32.164", "inFlow": 534, "lastBlockUpdateTime": 1639463355052, "lastSyncBlock": "", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "517f3b8a407a554e664cee0fe910491bec0781a33d8f8b10790ec290281aa6ea3b2ae04fb550ccedae8380721d77a6165874c1b5b3f557053b699a912c8c6ada", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 292, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 5.0, "blockInPorcSize": 0, "connectTime": 1639023329861, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "172.104.189.243", "inFlow": 458, "lastBlockUpdateTime": 1639463355058, "lastSyncBlock": "Num:4434796,ID:000000000043ab6c5a1f3d5680f7f81b065e8c41057902b7c7f07c4a2360c283", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "45424623ba93335cf6c4f3f8537a9cab0cec58a43965bc26f585f0b5b50516d1a63adb1b4de4f858089fce781db1ba6b0ea432ac04a4b83b23bbb614dad665c7", "port": 26666, "remainNum": 0, "remoteDisconnectReason": "", "score": 240, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 6.0, "blockInPorcSize": 0, "connectTime": 1637168306445, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "192.46.230.18", "inFlow": 828, "lastBlockUpdateTime": 1639463355053, "lastSyncBlock": "", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "4050410e06fd315676d49884dae3b2419cef3820e71c4b3a49a34c97df0cd478c4db9f43deb56eef02437703dd37c1e2b393cf36681e0166421d7168513ee2b7", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 297, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": true, "avgLatency": 6.0, "blockInPorcSize": 0, "connectTime": 1637169360464, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "139.162.1.98", "inFlow": 1931, "lastBlockUpdateTime": 1639463355051, "lastSyncBlock": "Num:3839624,ID:00000000003a9688270f0ea6b81665337557982d25a809af025587be9f752d29", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "179d5fceab1b581248aa7af0a52668b754edeb6c0900c86498a0fb046d8393767170222f1c22bd52316f07469d1689726f795c564c31d51ccba53af05570a5b6", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 240, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 6.0, "blockInPorcSize": 0, "connectTime": 1637168305337, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "192.46.230.14", "inFlow": 497, "lastBlockUpdateTime": 1639463355053, "lastSyncBlock": "Num:4499626,ID:000000000044a8aa74ae88e24db2c39cb31b1fc84706ae9280f61e5bacd5d4ce", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "19d9dbb7c340f24ce313f1e195ac84185b2c3930294a31b6d0d58277a3d5f2fa6c36e894208b4687028367764d6e373bde0d4db6676fd63d048b6371f1a3df69", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 298, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": true, "avgLatency": 6.0, "blockInPorcSize": 0, "connectTime": 1637168777205, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "172.105.123.75", "inFlow": 1700, "lastBlockUpdateTime": 1639463355059, "lastSyncBlock": "", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "137379df2a2968ceb5ebc8c7c0e02a6a84140ced400b478f6296c015ba16652e3376e85e2104737d411459ad9959786683bb37a6fdb0e72c7e5125ac246a6f2c", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 240, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": true, "avgLatency": 6.0, "blockInPorcSize": 0, "connectTime": 1637300487283, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "139.162.12.77", "inFlow": 1598, "lastBlockUpdateTime": 1639463355052, "lastSyncBlock": "Num:3881946,ID:00000000003b3bda10eed0ee60d3b48ff23106fa6b0461f4ff687d4699e46010", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "f303e6b48a0d978a92e745b879b4467ecf3d860a52c437848b15701c49c6b7b668b2e702ccc9b72245165756789978d3c92e3bc547110a41ecf7aef4d1788fe1", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 240, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": true, "avgLatency": 7.0, "blockInPorcSize": 0, "connectTime": 1637169310060, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "172.104.50.193", "inFlow": 273, "lastBlockUpdateTime": 1639463355053, "lastSyncBlock": "Num:3839624,ID:00000000003a9688270f0ea6b81665337557982d25a809af025587be9f752d29", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "e7a845ec1b12511d0c27bdc2d1c22f768142fdae633543e385465818b8943713ea01a039a733c73d3c60a491d88f49117ee697616b7f449d5d3002241f486c03", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 240, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 45.0, "blockInPorcSize": 0, "connectTime": 1639091720920, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "172.104.189.243", "inFlow": 567, "lastBlockUpdateTime": 1639463355052, "lastSyncBlock": "Num:4456856,ID:000000000044019821b823219f437f970c010c91564ab4a3ed998a105bab1706", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "7bffe8dbe57eb151ece3074457b02707a111c47fadc5449d0c030f9b259c8c493769b92c62860bbed19a642967869f2c53fc7bb359a6b092cce68dbaae489165", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 140, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 52.0, "blockInPorcSize": 0, "connectTime": 1639390315381, "disconnectTimes": 0, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4575993,ID:000000000045d2f9e4fa1506b2f2d81b8a1a064221df1b6908b479065e342719", "host": "139.162.1.57", "inFlow": 349, "lastBlockUpdateTime": 1639463355053, "lastSyncBlock": "Num:4552810,ID:000000000045786a2f9356b629ffaa90eb4f705c2254e83caa7924ac9fa88e45", "localDisconnectReason": "", "needSyncFromPeer": false, "needSyncFromUs": false, "nodeCount": 15, "nodeId": "ec445084329ffcf763eb64896ad63dd0034310e54d0fec271b2527a8246bbf1da33a347f60291a57276ffe003de191c13f3da73426a444bd8ae1f05d9df7c764", "port": 16666, "remainNum": 0, "remoteDisconnectReason": "", "score": 148, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 0 }, { "active": false, "avgLatency": 584.0, "blockInPorcSize": 0, "connectTime": 1639463157717, "disconnectTimes": 9, "headBlockTimeWeBothHave": 0, "headBlockWeBothHave": "Num:4095167,ID:00000000003e7cbf1f5bbe5c10f3e65c7f4ffe863aebe286c54c2fce43abcde3", "host": "91.77.152.128", "inFlow": 44699, "lastBlockUpdateTime": 1639463303599, "lastSyncBlock": "Num:4095188,ID:00000000003e7cd4f88eff1dc653d517d40bd9bad148b1d0478892ad056d7439", "localDisconnectReason": "PING_TIMEOUT", "needSyncFromPeer": false, "needSyncFromUs": true, "nodeCount": 15, "nodeId": "5a85d00979c4edb33ec2196a482ca041a9b08346749f67770e522e013f0c7589693f48165b798b401ae80c06fcb44565f74bbd9201170e18cd7f84997095be7b", "port": 26666, "remainNum": 480785, "remoteDisconnectReason": "TIME_OUT", "score": 36, "syncBlockRequestedSize": 0, "syncFlag": false, "syncToFetchSize": 0, "syncToFetchSizePeekNum": -1, "unFetchSynNum": 480785 } ], "solidityBlock": "Num:4575975,ID:000000000045d2e73879a123599cd4d33cb67c385385013a223ad6441246db20", "totalFlow": 53434 }`


# GetChainParameters

GET: http\://172.104.51.182:16667/wallet/getchainparameters

All parameters that the blockchain committee can set

**Example:**

```
curl -X POST  https://api.trongrid.io/wallet/getchainparameters
```

**Response:**

\
`{`&#x20;

`"chainParameter": [ { "key": "getMaintenanceTimeInterval", "value": 21600000 }, { "key": "getAccountUpgradeCost", "value": 9999000000 }, { "key": "getCreateAccountFee", "value": 100000 }, { "key": "getTransactionFee", "value": 10 }, { "key": "getAssetIssueFee", "value": 1024000000 }, { "key": "getWitnessPayPerBlock", "value": 32000000 }, { "key": "getWitnessStandbyAllowance", "value": 115200000000 }, { "key": "getCreateNewAccountFeeInSystemContract" }, { "key": "getCreateNewAccountBandwidthRate", "value": 1 }, { "key": "getAllowCreationOfContracts", "value": 1 }, { "key": "getRemoveThePowerOfTheGr" }, { "key": "getEnergyFee", "value": 100 }, { "key": "getExchangeCreateFee", "value": 1024000000 }, { "key": "getMaxCpuTimeOfOneTx", "value": 50 }, { "key": "getAllowUpdateAccountName" }, { "key": "getAllowSameTokenName", "value": 1 }, { "key": "getAllowDelegateResource", "value": 1 }, { "key": "getTotalEnergyLimit", "value": 50000000000 }, { "key": "getAllowTvmTransferTrc10", "value": 1 }, { "key": "getTotalEnergyCurrentLimit", "value": 50000000000000 }, { "key": "getAllowMultiSign", "value": 1 }, { "key": "getAllowAdaptiveEnergy", "value": 1 }, { "key": "getTotalEnergyTargetLimit", "value": 3472222 }, { "key": "getTotalEnergyAverageUsage", "value": 942 }, { "key": "getUpdateAccountPermissionFee", "value": 100000000 }, { "key": "getMultiSignFee", "value": 1000000 }, { "key": "getAllowAccountStateRoot" }, { "key": "getAllowProtoFilterNum" }, { "key": "getAllowTvmConstantinople", "value": 1 }, { "key": "getAllowTvmSolidity059" }, { "key": "getAllowTvmIstanbul" }, { "key": "getAllowShieldedTRC20Transaction" }, { "key": "getForbidTransferToContract" }, { "key": "getAdaptiveResourceLimitTargetRatio", "value": 10 }, { "key": "getAdaptiveResourceLimitMultiplier", "value": 1000 }, { "key": "getChangeDelegation", "value": 1 }, { "key": "getWitness127PayPerBlock", "value": 16000000 }, { "key": "getAllowMarketTransaction" }, { "key": "getMarketSellFee" }, { "key": "getMarketCancelFee" }, { "key": "getAllowPBFT" }, { "key": "getAllowTransactionFeePool" }, { "key": "getMaxFeeLimit", "value": 1000000000 }, { "key": "getAllowOptimizeBlackHole" }, { "key": "getAllowNewResourceModel" }, { "key": "getAllowTvmFreeze" } ]`&#x20;

`}`


# GetBlockBalance

POST: http\://172.104.51.182:16667/wallet/getblockbalance


# ARC10 Token


# GetAssetIssueByAccount

POST: http\://172.104.51.182:16667/wallet/getassetissuebyaccount

Query the ERC10 token information issued by an account.

\
**BODY PARAMS**

`{`

**`address`**` ``string,`

**`visible`**` ``boolean`

`}`

**Note:**  &#x20;

* **Address** is the Token Issuer account address
* **visible** is optional. Defaults to false. Whether addresses are in base58check format.

**Example:**

curl --request POST\
\--url [ http://172.104.51.182:16667/wallet/getassetissuebyaccount](< http://172.104.51.182:16667/wallet/getassetissuebyaccount>)\
\--header 'Content-Type: application/json'\
\--data ' { "address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }

**Input:**&#x20;

`{ "address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }`

**response:**

`{`&#x20;

`"assetIssue": [ { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "name": "arc10-hungbien", "abbr": "wrc10hb", "total_supply": 20000, "trx_num": 11, "precision": 2, "num": 1, "start_time": 1639555597264, "end_time": 1639641997264, "description": "hungbien is issue the token for test", "url": "omanee.sg", "free_asset_net_limit": 10000, "public_free_asset_net_limit": 10000, "id": "1000166" } ]`

&#x20;`}`


# GetAssetIssueById

POST: http\://172.104.51.182:16667/wallet/getassetissuebyid

Query a token by token id. Returns the token object, which contains the token name.

**BODY PARAMS**

`{`

**`value`**` ``int32`

`}`

**Note:**  &#x20;

* **value** is the ID of the TRC10 token.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getassetissuebyid>\
\--header 'Content-Type: application/json'\
\--data '{"value":1000001}'

**Input:** \
`{ "value": 1000166 }`

**response:**

`{`

&#x20;`"owner_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "name": "77726331302d68756e676269656e", "abbr": "77726331306862", "total_supply": 20000, "trx_num": 11, "precision": 2, "num": 1, "start_time": 1639555597264, "end_time": 1639641997264, "description": "68756e676269656e2069732069737375652074686520746f6b656e20666f722074657374", "url": "6f6d616e65652e7367", "free_asset_net_limit": 10000, "public_free_asset_net_limit": 10000, "id": "1000166"`&#x20;

`}`


# GetAssetIssueList

GET: http\://172.104.51.182:16667/wallet/getassetissuelist

Query the list of all the TRC10 tokens.

\
**Example:**

curl --request GET\
\--url <http://172.104.51.182:16667/wallet/getassetissuelist>

**response:**

{&#x20;

"assetIssue": \[ { "owner\_address": "41a6010535c61ce03ffd70d8d80a5df16c4080bac9", "name": "414e4848", "abbr": "414e4848", "total\_supply": 1000000000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1627056560748, "end\_time": 1627747762728, "vote\_score": 1, "description": "6368616e6765206465736372697074696f6e", "url": "7777772e6368616e6765746573742e636f6d", "free\_asset\_net\_limit": 1000, "public\_free\_asset\_net\_limit": 1000000, "public\_free\_asset\_net\_usage": 284, "public\_latest\_free\_net\_time": 545858126, "id": "1000001" }, { "owner\_address": "417a90c928a494f7ebe07cf9d844145b5faa1ed99a", "name": "54657374436f696e", "abbr": "54657374436f696e", "total\_supply": 11111111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1627451232918, "end\_time": 1753422433882, "vote\_score": 1, "description": "3231", "url": "68747470733a2f2f616e742e64657369676e2f636f6d706f6e656e74732f627574746f6e2f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000002" }, { "owner\_address": "417b802e6181cbfa3f10953f7ef43ec370ba217bc9", "name": "736467", "abbr": "564e44", "total\_supply": 1000, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1627454761806, "end\_time": 1753339564241, "vote\_score": 1, "description": "736467", "url": "687474703a2f2f616c6f636f6d617274656b2e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000003" }, { "owner\_address": "41b7605b786c8fee6c51adaed3ead6ca17bdb6d0ae", "name": "5656", "abbr": "565656", "total\_supply": 111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1627631939423, "end\_time": 1669795140922, "vote\_score": 1, "description": "56", "url": "68747470733a2f2f7862612e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000004" }, { "owner\_address": "4163c9874981037b868b04678c46c34b132e251cfa", "name": "5452433130546f6b656e", "abbr": "5454", "total\_supply": 100, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1629446820000, "end\_time": 1637341200000, "description": "54686973206973206120545243313020546f6b656e", "url": "7777772e74726331302e636f6d", "id": "1000005" }, { "owner\_address": "411fde65a69443a8ac1bc8d26eb9b8b315488ce2e0", "name": "747263313074657374", "abbr": "747263313074657374", "total\_supply": 10000000000000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1629448318704, "end\_time": 1660984218704, "description": "747263313074657374", "url": "7777772e77656c74726331302e636f6d", "id": "1000006" }, { "owner\_address": "419467dcdba295cffd17e248703a988ecd458ca711", "name": "7472633130766e", "abbr": "7472633130766e", "total\_supply": 123456789000000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1630124260620, "end\_time": 1661660160620, "description": "7472633130766e", "url": "7777772e77656c74726331302e636f6d", "id": "1000007" }, { "owner\_address": "41296f83ffaff1ff9d088d3e8f3fd82b666a59dd96", "name": "54657374544450", "abbr": "544450", "total\_supply": 75000000000000000, "frozen\_supply": \[ { "frozen\_amount": 10000, "frozen\_days": 1 }, { "frozen\_amount": 10000, "frozen\_days": 10 } ], "trx\_num": 1, "precision": 2, "num": 1, "start\_time": 1630306500000, "end\_time": 1760115600000, "description": "6a75737420666f72207472696e6864696e687068756f6e672e636f6d", "url": "7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 100, "public\_free\_asset\_net\_limit": 100000, "id": "1000008" }, { "owner\_address": "4102ea39f731a9e57fac1ad6487c9ce91f9241b843", "name": "7762746f6b656e68656865", "abbr": "575757", "total\_supply": 1111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1630854785879, "end\_time": 1633014787928, "vote\_score": 1, "description": "73677320736164677320616467617320677367", "url": "68747470733a2f2f6162632e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000009" }, { "owner\_address": "415bf3e215ec9c1b8d4396c00b17a21ffde5399e07", "name": "414343", "abbr": "4143", "total\_supply": 10, "trx\_num": 1, "num": 1, "start\_time": 1630856705132, "end\_time": 1633016707228, "vote\_score": 1, "description": "616161", "url": "687474703a2f2f6162632e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000010" }, { "owner\_address": "4196f03e8545b1bdd9b8a49997c8950b29ae02976b", "name": "574343", "abbr": "5743", "total\_supply": 1111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1630856898766, "end\_time": 1633016901151, "vote\_score": 1, "description": "7367777477", "url": "687474703a2f2f6162632e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000011" }, { "owner\_address": "4127d50c6d690beef49ffbcd154a0f4acc050e801c", "name": "5456545f546f6b656e", "abbr": "545654", "total\_supply": 100000000000000, "trx\_num": 1, "precision": 4, "num": 1, "start\_time": 1631014088649, "end\_time": 1662483600000, "vote\_score": 1, "description": "5456545f546f6b656e", "url": "68747470733a2f2f5456545f546f6b656e2e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000012" }, { "owner\_address": "41ffa86e89099aa0eb62d6ef56cef81d3b9c0c51f4", "name": "4e65774c6965", "abbr": "4e4c54", "total\_supply": 100000000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1631242003241, "end\_time": 1632970005443, "vote\_score": 1, "description": "6861206861206861", "url": "687474703a2f2f616c6f636f6d617274656b2e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000013" }, { "owner\_address": "413261c068a0b3d9b0009f984d8fc511f3bd98eb8c", "name": "4e45455f5553446578", "abbr": "5553446578", "total\_supply": 500000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1631632019830, "end\_time": 1631718421673, "vote\_score": 1, "description": "73", "url": "687474703a2f2f616c6f636f6d617274656b2e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000014" }, { "owner\_address": "41aae72f1ee86ea73322ca2d049deb980f7c95d6ee", "name": "7068756f6e67726331305f746f6b656e", "abbr": "7068756f6e6772633130", "total\_supply": 100000000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1631665275082, "end\_time": 1725582089323, "vote\_score": 1, "description": "7068756f6e67726331305f746f6b656e", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000015" }, { "owner\_address": "41078917bb812ef1853e0747544c1c98f85177d036", "name": "7068756f6e67313068315f746f6b656e", "abbr": "7068756f6e6731306831", "total\_supply": 100000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1631666020655, "end\_time": 1662597243105, "vote\_score": 1, "description": "7068756f6e67313068315f746f6b656e", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000016" }, { "owner\_address": "415a842b1bdf35695205656a04e8f088cc9c970982", "name": "7068756f6e67726331305f746f6b656e6278", "abbr": "7068756f6e67726278", "total\_supply": 100000000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1631690760120, "end\_time": 1663140362655, "vote\_score": 1, "description": "7068756f6e67726331305f746f6b656e6278", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000017" }, { "owner\_address": "4110a3c1c87e6ac2c25310c84c108eedb832aa2321", "name": "7068756f6e67726331305f746f6b656e6c33", "abbr": "7068756f6e6772636c33", "total\_supply": 100000000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1631690990164, "end\_time": 1663745391750, "vote\_score": 1, "description": "7068756f6e67726331305f746f6b656e6c33", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000018" }, { "owner\_address": "411b1d581f7084fd5ec7b5d7b1446e82d7abce88c0", "name": "546573743342", "abbr": "546573743342", "total\_supply": 10000000000, "trx\_num": 1, "precision": 4, "num": 1, "start\_time": 1631717482331, "end\_time": 1663858285672, "vote\_score": 1, "description": "4e6f", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000019" }, { "owner\_address": "4188cd9aa01bfa280cb8a3c2a2e493c09c660de2fa", "name": "423739", "abbr": "423739", "total\_supply": 10000, "trx\_num": 1, "precision": 4, "num": 1, "start\_time": 1631720706158, "end\_time": 1633016704783, "vote\_score": 1, "description": "423739", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000020" }, { "owner\_address": "417bab2703fc90179d2feb0b07d7f87e249d609bc6", "name": "7068756f6e67726331305f746f6b656e6536", "abbr": "7068756f6e6772636536", "total\_supply": 100000000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1631754209854, "end\_time": 1631840613258, "vote\_score": 1, "description": "7068756f6e677263746f6b656e6536", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000021" }, { "owner\_address": "418b7238e7ad3eb21ebd4644a20aadee6c06fb0901", "name": "50484f4e44414e475445535431", "abbr": "5054455354", "total\_supply": 100000, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1632643582812, "end\_time": 1632989184447, "vote\_score": 1, "description": "74657374696e67206f6e6c79", "url": "68747470733a2f2f64726976652e676f6f676c652e636f6d2f64726976652f6d792d6472697665", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000022" }, { "owner\_address": "41f367780884b5cc4a1ddebbdbb7160a58d0d8bb0b", "name": "616263646566", "abbr": "616263646566", "total\_supply": 11111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1633598999102, "end\_time": 1634722201468, "vote\_score": 1, "description": "70726f", "url": "687474703a2f2f7777772e746573742e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000023" }, { "owner\_address": "41c015ed3a1aba49b8d7582a074a24e1a503c0c3b8", "name": "6a746363", "abbr": "6a7463", "total\_supply": 1000000000000, "trx\_num": 1, "precision": 5, "num": 1, "start\_time": 1633667372131, "end\_time": 1635568175419, "vote\_score": 1, "description": "677265676572", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 2, "public\_free\_asset\_net\_limit": 1, "id": "1000024" }, { "owner\_address": "417f8664996d06ebf92f4b7f36286c16c81189a276", "name": "626262", "abbr": "626262", "total\_supply": 111110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1633752111611, "end\_time": 1633838513767, "vote\_score": 1, "description": "626262", "url": "687474703a2f2f7777772e746573742e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000025" }, { "owner\_address": "41b016271034cc16cd9321693190424d692b9eb91d", "name": "546573743342", "abbr": "546573743342", "total\_supply": 10000000000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1633939702342, "end\_time": 1634630903791, "vote\_score": 1, "description": "54", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000026" }, { "owner\_address": "419dafa47626147c05806a092374e531932e444bdb", "name": "686f72633130746f6b656e", "abbr": "686f72633130", "total\_supply": 1000000000000, "trx\_num": 1000000000, "precision": 5, "num": 1, "start\_time": 1634081098628, "end\_time": 1698276300202, "vote\_score": 1, "description": "686f7263313020696e74726f64756374696f6e6e", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000027" }, { "owner\_address": "4120e31906a46de34bbd96588e5d56e2e3c976a2f6", "name": "6173736574497373756531353330383934333132313538", "abbr": "6162627231353330383934333132313538", "total\_supply": 10, "trx\_num": 1, "num": 1, "start\_time": 1634138468000, "end\_time": 1634311268000, "description": "007570646174654e616d6531353330363038383733343633", "url": "007570646174654e616d6531353330363038383733343633", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000028" }, { "owner\_address": "4152c72929f3010b6e028ed872e3db2b642b6b5f59", "name": "54657374", "abbr": "5454", "total\_supply": 1000, "trx\_num": 2, "num": 1, "start\_time": 1634141281649, "end\_time": 1634227681649, "description": "2a20546f6b656e20696e74726f64756374696f6e3a0a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000029" }, { "owner\_address": "4102c5d846451e483d2445d8ba4091951deab6dc0b", "name": "54657374", "abbr": "5454", "total\_supply": 1000, "trx\_num": 2, "num": 1, "start\_time": 1634141360544, "end\_time": 1634227760544, "description": "44343332463639344338363831393241334143333045343244343441353246313945303639343842323445383744344145344239463742334337323931343334", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000030" }, { "owner\_address": "413cd56207b8ff344bf2af8a1f65536a4478d87eac", "name": "546f6b656e", "abbr": "546b6e", "total\_supply": 10, "trx\_num": 2, "num": 1, "start\_time": 1634141711769, "end\_time": 1634228111769, "description": "2a20546f6b656e20696e74726f64756374696f6e3a0a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000031" }, { "owner\_address": "4109fabfe9adf4904f909403dfea26f7b0577a6a9a", "name": "546f6b656e546f6b656e31", "abbr": "746f6b656e", "total\_supply": 10, "trx\_num": 3, "num": 4, "start\_time": 1634142279756, "end\_time": 1634228679756, "description": "2a20546f6b656e20696e74726f64756374696f6e3a0a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d2f7175657374696f6e732f34353034363033302f6d61696e7461696e696e672d687265662d6f70656e2d696e2d6e65772d7461622d776974682d616e2d6f6e636c69636b2d68616e646c65722d696e2d7265616374", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000032" }, { "owner\_address": "415265e44e5694f59b3942ecee04ac1abb130daa76", "name": "546f6b656e54657374", "abbr": "546b6e", "total\_supply": 10, "trx\_num": 4, "num": 1, "start\_time": 1634143381661, "end\_time": 1634229781661, "description": "2a20546f6b656e20696e74726f64756374696f6e3a0a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000033" }, { "owner\_address": "41ac31b7d70353c81c3addc768cc5574b493509963", "name": "7472696e6864696e687068756f6e67", "abbr": "74647072633130", "total\_supply": 10000, "trx\_num": 1, "num": 10, "start\_time": 1634173930754, "end\_time": 1634260330754, "description": "575266676e5867384c5539734a74346a4d5647735831527455385a4844744633557a", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000034" }, { "owner\_address": "4119496a4b19f59df22ca4b300b8374b0607c1a299", "name": "54657374546f6b656e4e6577", "abbr": "544b6e", "total\_supply": 1000, "trx\_num": 4, "num": 1, "start\_time": 1634268197165, "end\_time": 1634354597165, "description": "4f4b4f4b4f", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000035" }, { "owner\_address": "412f79b0277cc9a197a28003def652c4ab868c2abd", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 100000, "trx\_num": 2, "num": 3, "start\_time": 1634466135817, "end\_time": 1634552535817, "description": "546f6b656e546f6b656e313132546f6b656e546f6b656e313132", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000036" }, { "owner\_address": "41cc8da9d3b629c1d57165105816402591533c79b3", "name": "5755636e5a38754e36", "abbr": "546b6e", "total\_supply": 100000000000, "trx\_num": 1, "num": 2, "start\_time": 1634477964911, "end\_time": 1634564364911, "description": "5755636e5a38754e36", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000037" }, { "owner\_address": "41133a886cadf5f74d5e2d4ab0c61965e62189513f", "name": "74747474", "abbr": "546b6e", "total\_supply": 1000000, "trx\_num": 2, "num": 1, "start\_time": 1634478162047, "end\_time": 1634564562047, "description": "33343331424142324345453843454637334341363941393742353738304130453032464638443145313443463645413539324238453135343430463735433837", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000038" }, { "owner\_address": "412c4f4ec3b00a0bfce62a1db05ddb603c95fd04f8", "name": "7472696e6864696e687068756f6e673130", "abbr": "74647072633130", "total\_supply": 1000000000000, "trx\_num": 1, "num": 37, "start\_time": 1634489461777, "end\_time": 1634575861777, "description": "696e74726f203130", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000039" }, { "owner\_address": "412ab29c9b07f7e0a517e69393d5f3ab8fd073aff4", "name": "546f6b656e546f6b656e313132", "abbr": "746b6e31", "total\_supply": 100000000, "trx\_num": 3, "num": 1, "start\_time": 1634491629983, "end\_time": 1634578029983, "description": "546f6b656e546f6b656e313132", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000040" }, { "owner\_address": "41f539cb5dbaea242b6fe0a029e9141642da145917", "name": "7472696e6864696e687068756f6e67", "abbr": "74647072633130", "total\_supply": 99999000000, "trx\_num": 1, "num": 35, "start\_time": 1634504977417, "end\_time": 1634591377417, "description": "717766656765", "url": "687474703a2f2f7472696e6864696e687068756f6e672e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000041" }, { "owner\_address": "417765b67b9e9bad2e0f67d0d046159fbd80b240cc", "name": "777263313070686f6e6764616e67746f6b656e31", "abbr": "57524331305044544b31", "total\_supply": 123456789123000000, "trx\_num": 2, "num": 34, "start\_time": 1634532911982, "end\_time": 1634619311982, "description": "6673616673616466", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f4f6d616e6565436f7270", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000042" }, { "owner\_address": "41b92d153d84a101e1a8e9867931b55cce2bfc4abb", "name": "54657374", "abbr": "5454", "total\_supply": 1000, "trx\_num": 1, "num": 2, "start\_time": 1634662204592, "end\_time": 1634748604592, "description": "31", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000043" }, { "owner\_address": "41c78303c306839ec375491ab8c4438bab60d6a6dc", "name": "54657374", "abbr": "5454", "total\_supply": 100, "trx\_num": 1, "num": 2, "start\_time": 1634666700816, "end\_time": 1634753100816, "description": "20202020636f6e736f6c652e6c6f672874656d705f676574616d6f756e7477656c290a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000044" }, { "owner\_address": "41066f2c6496436cfb6f855afb34c4a9dd64c0f441", "name": "546f6b656e54657374", "abbr": "546b6e", "total\_supply": 300, "trx\_num": 1, "num": 4, "start\_time": 1634666817760, "end\_time": 1634753217760, "description": "57415a454567334a6f544850396761683835416d574b627053636856694c34616572", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000045" }, { "owner\_address": "4100f03718caef8f18992849eccca6e096daec16fa", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 9000000000000000, "trx\_num": 2, "num": 1, "start\_time": 1634926423040, "end\_time": 1635012823040, "description": "546f6b656e546f6b656e313132", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000046" }, { "owner\_address": "41bd2f1f01d557c61ea4098e8e10cfae92540d2d27", "name": "777263313070686f6e6764616e67746f6b656e33", "abbr": "57524331305044544b33", "total\_supply": 11111110, "trx\_num": 1, "num": 1, "start\_time": 1635261013151, "end\_time": 1635347413151, "description": "61", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000047" }, { "owner\_address": "41c4e45b00af34df188d573875636d637225953936", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 10000000000000, "trx\_num": 2, "num": 1, "start\_time": 1635430902706, "end\_time": 1635517302706, "description": "57577648313548465954484a7342565553395a5763795a6a546b6e68654d4768627a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000048" }, { "owner\_address": "418466cf7a9b0c04129d7066f40123eb65db83d901", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 100000000, "trx\_num": 2, "num": 1, "start\_time": 1635431871940, "end\_time": 1635518271940, "description": "574e33484d6e31713232385466644865504b654a526a44774d41654678364164624a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d2f7175657374696f6e732f34353034363033302f6d61696e7461696e696e672d687265662d6f70656e2d696e2d6e65772d7461622d776974682d616e2d6f6e636c69636b2d68616e646c65722d696e2d7265616374", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000049" }, { "owner\_address": "4104fab3374134dcb0dbea40e47c7ebb0e2d86dd08", "name": "423739", "abbr": "546573743342", "total\_supply": 100000, "trx\_num": 1, "num": 1, "start\_time": 1635434874286, "end\_time": 1635607672585, "description": "57415259326d6a46334461425467595a52554845726e594d5363783750384c47644d", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000050" }, { "owner\_address": "41d1fbc2a05df868ba2d08b51a1c7187a301d2d37a", "name": "423739", "abbr": "546573743342", "total\_supply": 10, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1635436234600, "end\_time": 1635609036376, "description": "202a204d6174682e706f772831302c2076616c7565732e707265636973696f6e29", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000051" }, { "owner\_address": "4157037da9208bb5099b6ca2e4cf48c886a2276d3c", "name": "423739", "abbr": "546573743342", "total\_supply": 1000000, "trx\_num": 1, "precision": 4, "num": 1, "start\_time": 1635436700629, "end\_time": 1635609503283, "description": "57487548794a444b7a6a726d41776d57435050587a75704535575474676b6337317a", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000052" }, { "owner\_address": "41ad231360a0864b5fd25405297c1a5a44e1bdd06a", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 10000000000, "trx\_num": 1, "precision": 3, "num": 2, "start\_time": 1635437016594, "end\_time": 1635523416594, "description": "33", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000053" }, { "owner\_address": "41d91a797cd54d061b4982243dc9afcab747fd678e", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 10000, "trx\_num": 2, "precision": 3, "num": 1, "start\_time": 1635437365349, "end\_time": 1635523765349, "description": "57566d394d41734c4447317565344e4e553750376771525674534d7874626334745a", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000054" }, { "owner\_address": "414843447c66a62af02c76ad3befc69305fa599f84", "name": "546f6b656e54657374", "abbr": "746b6e31", "total\_supply": 1000, "trx\_num": 2, "precision": 2, "num": 1, "start\_time": 1635439335265, "end\_time": 1635525735265, "description": "57475a4a45685a72726d4441524d4b7567387a586a4e65333548616b5a4644357446", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000055" }, { "owner\_address": "41fd957d974fea19cf5e7fa59caf407c91fe8e83e4", "name": "54657374", "abbr": "5454", "total\_supply": 10000, "trx\_num": 2, "precision": 3, "num": 1, "start\_time": 1635440500334, "end\_time": 1635526900334, "description": "575a3633335031737276576e6a7344366348386b6875724457385963567654676566", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000056" }, { "owner\_address": "41f67e344f95f6cda86bb105256a17fd4ee7c2fcf1", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 100000, "trx\_num": 2, "precision": 3, "num": 1, "start\_time": 1635440695772, "end\_time": 1635527095772, "description": "57595359523564364a534542757663666a544e4e544c5778357176686f386e454271", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000057" }, { "owner\_address": "414377e3a886c9bd324fffee8cd0a7d1a8dcb4149b", "name": "54657374546f6b656e4e6577", "abbr": "746f6b656e", "total\_supply": 100000, "trx\_num": 2, "precision": 2, "num": 1, "start\_time": 1635441478549, "end\_time": 1635527878549, "description": "5747377477787851365667756432763843416a4c726a544b5a34376a5a61636a7a50", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d2f7175657374696f6e732f34353034363033302f6d61696e7461696e696e672d687265662d6f70656e2d696e2d6e65772d7461622d776974682d616e2d6f6e636c69636b2d68616e646c65722d696e2d7265616374", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000058" }, { "owner\_address": "4167bb4e343249e43678bc6525055b480128420212", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 100000, "trx\_num": 3, "precision": 3, "num": 1, "start\_time": 1635492629810, "end\_time": 1635579029810, "description": "546f6b656e546f6b656e313132", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000059" }, { "owner\_address": "413595febc5ed2c94946a4e40e241ea7c76380ac6d", "name": "746470", "abbr": "746470", "total\_supply": 1844674407370955161, "frozen\_supply": \[ { "frozen\_amount": 1, "frozen\_days": 2 } ], "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1635526319000, "end\_time": 1640796719000, "description": "007570646174654e616d6531353330363038383733343633", "url": "007570646174654e616d6531353330363038383733343633", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000060" }, { "owner\_address": "4116ecd45bccc1dd15a2889b02f820cb1bcad104c9", "name": "746470", "abbr": "746470", "total\_supply": 9223372036854775000, "frozen\_supply": \[ { "frozen\_amount": 1, "frozen\_days": 2 } ], "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1635526319000, "end\_time": 1640796719000, "description": "007570646174654e616d6531353330363038383733343633", "url": "007570646174654e616d6531353330363038383733343633", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000061" }, { "owner\_address": "416c51d31bc24e9dc6e138cabf6179fb0c1534156c", "name": "6c6f6e676e616d656c6f6e676e616d656c6f6e676e616d656c6f6e673030", "abbr": "61626272657669613930", "total\_supply": 9007199254740990, "trx\_num": 1, "num": 10, "start\_time": 1635925394605, "end\_time": 1636011794605, "description": "696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e696e74726f64756374696f6e3030303030303030", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000062" }, { "owner\_address": "41f2a04147d8de980fa7f06b6c66c2b768bb20f3d7", "name": "5243313051", "abbr": "313051", "total\_supply": 999999999000000, "trx\_num": 1, "precision": 6, "num": 100, "start\_time": 1636023839465, "end\_time": 1636110239465, "description": "455253454446", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000063" }, { "owner\_address": "413d4e350404891c20762d6f988ba9821f950afc01", "name": "5243313051", "abbr": "313051", "total\_supply": 999999999000000, "trx\_num": 1, "precision": 6, "num": 1000, "start\_time": 1636024350574, "end\_time": 1636110750574, "description": "7171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717163", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000064" }, { "owner\_address": "41d0f443c8809904b04338740db96dc1866da894b1", "name": "5243313051", "abbr": "5158", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636028208261, "end\_time": 1636114608261, "description": "7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000065" }, { "owner\_address": "412c7d562b983edd58949e1bf3837fcffdbd9fadd1", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 1000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636033876201, "end\_time": 1636120276201, "description": "5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575739", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000066" }, { "owner\_address": "41be6d1760f377aa5ac77e628f6aa7a197b2c34fc7", "name": "39575757575757575757575757575757575757575757575757576e616d65", "abbr": "57575757575757336571", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636034780145, "end\_time": 1636121180145, "description": "57574c36354a646136663551314b79673332376365617166584d3663417259776e5a57574c36354a646136663551314b79673332376365617166584d3663417259776e5a57574c36354a646136663551314b79673332376365617166584d3663417259776e5a57574c36354a646136663551314b79673332376365617166584d3663417259776e5a57574c36354a6461366657574c36354a646136663551314b79673332376365617166584d3663417259776e5a67686a67686a67686a67686a67686a67686a6768", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000067" }, { "owner\_address": "412f7dcd46b01ec749b19746446511a8672a1bf6e9", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636072655570, "end\_time": 1636159055570, "description": "3946363037453545354542304641314334443244304542423030303832434135314239334341393039444435423235443243414137314243443737314345434439463630374535453545423046413143344432443045424230303038324341353142393343413930394444354232354432434141373142434437373143454344394636303745354535454230464131433444324430454242394444354232354432434141373142434437373143454344394636303745354535454230464131433444324464663045", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000068" }, { "owner\_address": "41de88188b00180d22d59c752cd3022448fe652a7c", "name": "395757575757575757575757575757575757575757575757575757573277", "abbr": "57575757575757336571", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636073277411, "end\_time": 1636159677411, "description": "5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575733333333", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000069" }, { "owner\_address": "41e541962e01331cd93e6c6dbf721a446a71c7c71f", "name": "517558765a614a6f754d6e6f6a414a584478386370", "abbr": "5175", "total\_supply": 9007199254740991, "trx\_num": 2, "num": 1, "start\_time": 1636083043444, "end\_time": 1636169443444, "description": "58765a614a6f754d6e6f6a414a584478386370", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000070" }, { "owner\_address": "41757b316a02f479ef18e630c2b8341f79595163cd", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636094041711, "end\_time": 1636180441711, "description": "3957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757575757575757575777395757393939393939393939", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000071" }, { "owner\_address": "417fe289eeadefd3ff7d1932863e6de23521e51956", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 10000, "trx\_num": 1, "precision": 1, "num": 1000, "start\_time": 1636100022376, "end\_time": 1636186422376, "description": "3946413333453644354542423837414443343833323543344638467777774239304338443146343231333936463339414346395757575757575757575757575757575757575757575757575757575777395757575757575757575757575757575757575757575757575757575777395757575757575757575757575757575757575757575757575757575777395757575757575757575757575757575757575757575757575757575777395757575757575757575757575757575757575757575757575757575777", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000072" }, { "owner\_address": "41c233f6086f2d32dbef30efff49fb89f6b955e945", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 1231230000, "trx\_num": 2, "precision": 4, "num": 2, "start\_time": 1636126130079, "end\_time": 1636212530079, "description": "313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000073" }, { "owner\_address": "412441039ca2eaa039132d080c8af996a1aee14d87", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 9007199254740991, "trx\_num": 1, "num": 1000, "start\_time": 1636163752558, "end\_time": 1636250152558, "description": "3957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757775757575757575757575757575757575757575757", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000074" }, { "owner\_address": "41c64bc700fb640426b99537d99d081f9660f6847c", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10000, "trx\_num": 2, "precision": 3, "num": 1, "start\_time": 1636168311189, "end\_time": 1636254711189, "description": "5755336861394c6978666e68615959705a764a334b35364171323739324b674e6b71", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000075" }, { "owner\_address": "41d75e15534c3c27c86947baf3a1dbf05e91dc493a", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 988888888880000, "trx\_num": 1000, "precision": 4, "num": 1, "start\_time": 1636170169820, "end\_time": 1636256569820, "description": "6779686a67796a", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000076" }, { "owner\_address": "41888dd969839a0d5f7c3ad17ae8c7389969328b8c", "name": "7068756f6e67", "abbr": "7068", "total\_supply": 9998, "trx\_num": 1, "num": 100, "start\_time": 1636550426783, "end\_time": 1636636826783, "description": "696e74726f", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000077" }, { "owner\_address": "410e18711130f8a27928aeee64a90b5d4cce10635c", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 2, "num": 2, "start\_time": 1636553730346, "end\_time": 1636640130346, "description": "5742466a6a797737717269436f345377465a48456a474852576d424c754e3663746e", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000078" }, { "owner\_address": "41de953ebe8f4c82c8afaf02cc67d32c581a5f7b83", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 2, "num": 2, "start\_time": 1636556852701, "end\_time": 1636643252701, "description": "74747474", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000079" }, { "owner\_address": "4123275eb12779a71a0c40d0428a2c62f3ae645549", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 2, "num": 2, "start\_time": 1636556942883, "end\_time": 1636643342883, "description": "74747474", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000080" }, { "owner\_address": "4191ad7de01884668e52386e7697381584dc27b0cd", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 2, "num": 2, "start\_time": 1636557010566, "end\_time": 1636643410566, "description": "74747474", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000081" }, { "owner\_address": "418467ad42c827da2b4430beeca9a7aa1b8ad6a341", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 2, "num": 2, "start\_time": 1636557800570, "end\_time": 1636644200570, "description": "74747474", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000082" }, { "owner\_address": "41ca22d13aeebca7c3df77065bc0639b204c26fa22", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 9007199254740991, "trx\_num": 1, "num": 1000, "start\_time": 1636594178380, "end\_time": 1636680578380, "description": "6173646173646173", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000083" }, { "owner\_address": "41244d8b335db20295cbf1ff8889bb6ec6730ffec2", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 6666666666600000, "trx\_num": 1, "precision": 5, "num": 11111, "start\_time": 1636594300257, "end\_time": 1636680700257, "description": "3957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575739", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000084" }, { "owner\_address": "4182c5d18e7c17bdee83ff65fd387b3a80e2a7bae1", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 9007199254740900, "trx\_num": 1, "precision": 2, "num": 10, "start\_time": 1636594421297, "end\_time": 1636680821297, "description": "312e30", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000085" }, { "owner\_address": "41e5a3563f1bc87d5ffbf76416e47c91b19c916f1a", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 999999999999000, "trx\_num": 1, "precision": 3, "num": 10000, "start\_time": 1636595526365, "end\_time": 1636681926365, "description": "64c3a867647366", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000086" }, { "owner\_address": "4138bb6f8b6fac23c985b1077158a6a43ccffb4cc9", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 9007199254740990, "trx\_num": 1, "num": 10000, "start\_time": 1636701712433, "end\_time": 1636788112433, "description": "736466736466", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000087" }, { "owner\_address": "41305cb86c735bb43779869614344fa012196268c2", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 999999999999999, "trx\_num": 1, "num": 10000, "start\_time": 1636702440577, "end\_time": 1636788840577, "description": "3957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575770", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000088" }, { "owner\_address": "4166339df0f8801b4d93cd0f0fea94d159e15845e3", "name": "7068756f6e67313130", "abbr": "7068313130", "total\_supply": 9007199254740991, "trx\_num": 3, "num": 100, "start\_time": 1636705792782, "end\_time": 1636792192782, "description": "2a20546f6b656e20696e74726f64756374696f6e3a0a", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000089" }, { "owner\_address": "41f9b7d3291da2256d185f271b35e8d46c8699ea1d", "name": "777263313070686f6e6764616e67746f6b656e34", "abbr": "777263313064746b34", "total\_supply": 1234567891000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1637038683726, "end\_time": 1637125083726, "description": "74657374206e65", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000090" }, { "owner\_address": "41b1e9b8181921b5dc81ae1565300868538255f52c", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 11111000000, "trx\_num": 1, "precision": 6, "num": 10000, "start\_time": 1637130987884, "end\_time": 1637217387884, "description": "3957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757575757575757575757575757773957575757575757575757575757575757573131", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000091" }, { "owner\_address": "410733a3e4f1475b381829578d0ac778227b03372b", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 11, "trx\_num": 1, "num": 11111, "start\_time": 1637131840056, "end\_time": 1637218240056, "description": "31", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000092" }, { "owner\_address": "41e9d7a9e3dbe3b3cfaf71978fe44fdd268353d36a", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 99999999999800, "trx\_num": 1, "precision": 2, "num": 1000, "start\_time": 1637135788547, "end\_time": 1637222188547, "description": "65776673", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000093" }, { "owner\_address": "414deffa6c6ffcf98e9b269da98cd6512f6dc68dd1", "name": "777263313070686f6e6764616e67746f6b656e35", "abbr": "777263313064746b35", "total\_supply": 123456000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1637238738307, "end\_time": 1637325138307, "description": "64736661736466", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000094" }, { "owner\_address": "41712776c2dad435b0ee6b428f1b344c55e91e0552", "name": "31732d72633130", "abbr": "317372633130", "total\_supply": 999999999000000, "trx\_num": 1, "precision": 6, "num": 100, "start\_time": 1637650211816, "end\_time": 1637736611816, "description": "696e74726f20", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000095" }, { "owner\_address": "411e65eb3edbccbadcfe749c6adb470daa7567ca3d", "name": "777263313070686f6e6764616e67746f6b656e35", "abbr": "777263313064746b35", "total\_supply": 1234567891200000, "trx\_num": 1, "precision": 5, "num": 2, "start\_time": 1637985417777, "end\_time": 1638071817777, "description": "616161", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000096" }, { "owner\_address": "4192e52e6c25a62f0a16ec32a1d0ad41dc08b6760f", "name": "7a74782d72633130", "abbr": "7a377872633130", "total\_supply": 10000000000000, "trx\_num": 1, "precision": 6, "num": 10000, "start\_time": 1637992614738, "end\_time": 1638079014738, "description": "696e74726f", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000097" }, { "owner\_address": "41e0c26f58897997c6f69bfd49aeedc9937bf12f18", "name": "65323072633130", "abbr": "65326f", "total\_supply": 9998000000, "trx\_num": 1, "precision": 6, "num": 1, "start\_time": 1637994116301, "end\_time": 1638080516301, "description": "726567657267657267", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000098" }, { "owner\_address": "41e1e6651839f70c464ebaaba6d2c8f7c099d1bd7e", "name": "546f6b656e54657374", "abbr": "544b6e", "total\_supply": 11000, "trx\_num": 2, "precision": 3, "num": 4, "start\_time": 1637996378684, "end\_time": 1638082778684, "description": "313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000099" }, { "owner\_address": "4164844dde6305c6e9c4e0d0e3f3fccb9af0292843", "name": "777263313070686f6e6764616e67746f6b656e36", "abbr": "57524331305044544b36", "total\_supply": 12345678910000, "trx\_num": 1, "precision": 4, "num": 2, "start\_time": 1637996401864, "end\_time": 1638082801864, "description": "616161", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000100" }, { "owner\_address": "416bccc2998bcfeda49fb0791756a0a25249859699", "name": "546f6b656e54657374", "abbr": "544b6e", "total\_supply": 100000, "trx\_num": 4, "precision": 3, "num": 5, "start\_time": 1637996481062, "end\_time": 1638082881062, "description": "313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000101" }, { "owner\_address": "4197007e669b899e29b369f01effb4e1c50c1d95a0", "name": "777263313070686f6e6764616e67746f6b656e36", "abbr": "57524331305044544b36", "total\_supply": 123000000, "trx\_num": 1, "precision": 6, "num": 2, "start\_time": 1637999726015, "end\_time": 1638086126015, "description": "31", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000102" }, { "owner\_address": "413c22e6a3d173a25869b6c7e7a7aa48a0965e8cbb", "name": "423739313233", "abbr": "546573743342", "total\_supply": 1230, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1638302735726, "end\_time": 1638475537031, "description": "313233", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000103" }, { "owner\_address": "412adbae488dfa822748b94fa0212b4b17e8cb2ddb", "name": "566965744e616d446f6e67", "abbr": "564e44", "total\_supply": 100000000, "trx\_num": 1, "precision": 6, "num": 20, "start\_time": 1638330777713, "end\_time": 1639108384652, "description": "736777657477", "url": "687474703a2f2f616c6f636f6d617274656b2e636f6d", "free\_asset\_net\_limit": 10, "public\_free\_asset\_net\_limit": 10, "id": "1000104" }, { "owner\_address": "4152f547953b95bc7c574b6d4b5ca545afd95fe088", "name": "5471717765717765617364", "abbr": "544b6e", "total\_supply": 123000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1638447871528, "end\_time": 1638534271528, "description": "71c6b065", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000105" }, { "owner\_address": "41043a3d2b204610888e49e3edc7685a7a034cf62e", "name": "54657374546f6b656e4e65773131", "abbr": "544b6e", "total\_supply": 123000, "trx\_num": 2, "precision": 3, "num": 1, "start\_time": 1638448208271, "end\_time": 1638534608271, "description": "57414d5a554c62725a4e334c78553765436b74684d536f364d74474b5269754a4875", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000106" }, { "owner\_address": "411148361b558e477803bd9543485cc2d21ee9fb09", "name": "423739", "abbr": "546573743342", "total\_supply": 1230, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1638463655489, "end\_time": 1639673257032, "description": "71c3a164616473", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000107" }, { "owner\_address": "411062ff984ab0119cf2379d2f545d7fac3eae22b8", "name": "5742577251664173756368644d6647454d474539614a5467435a50", "abbr": "313334333433", "total\_supply": 100000000000, "trx\_num": 1, "precision": 5, "num": 3, "start\_time": 1638466969117, "end\_time": 1638553369117, "description": "66657766726577", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000108" }, { "owner\_address": "41cca6b586c47ac0d907c03b97920d6189c7d093c6", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 11230, "trx\_num": 123, "precision": 1, "num": 123, "start\_time": 1638467376100, "end\_time": 1638553776100, "description": "313233313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000109" }, { "owner\_address": "41081f49db59cb2d8a9f07bbcfcd21eb7137c20e5d", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 999999999900, "trx\_num": 1, "precision": 2, "num": 1000, "start\_time": 1638512837821, "end\_time": 1638599237821, "description": "73c3a064736166736476746577", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000110" }, { "owner\_address": "41046870580b5e2961c0c93899b9b3abed647f675b", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 155454544400, "trx\_num": 1, "precision": 2, "num": 10000, "start\_time": 1638515085003, "end\_time": 1638601485003, "description": "66676a686667686667", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000111" }, { "owner\_address": "41082f5a911c5e5a26716f04bae2448487812db8f8", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 11111111100, "trx\_num": 1, "precision": 2, "num": 10000, "start\_time": 1638515221901, "end\_time": 1638601621901, "description": "67666a66", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000112" }, { "owner\_address": "41b9d2749ec123158dac0d6680da4649be76fba75a", "name": "5243313051", "abbr": "57575757575757336571", "total\_supply": 27272600000, "trx\_num": 1, "precision": 5, "num": 1000, "start\_time": 1638518179404, "end\_time": 1638604579404, "description": "6a6779686a74676a7262", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000113" }, { "owner\_address": "413bf0d623cd98412f41da7849c4dd1cccdb180540", "name": "546f6b656e546f6b656e313132", "abbr": "544b6e", "total\_supply": 1230, "trx\_num": 12, "precision": 1, "num": 12, "start\_time": 1638518416243, "end\_time": 1638604816243, "description": "31323231323331", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000114" }, { "owner\_address": "411d8a0d3cc97a92e3b6e447ff348c3470ae6e4db1", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 76867800, "trx\_num": 1, "precision": 2, "num": 1000, "start\_time": 1638588250272, "end\_time": 1638674650272, "description": "64736765666467", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000115" }, { "owner\_address": "41d0bae3ed33a8f2455ec116adea704223525f7f2d", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 78978900, "trx\_num": 1, "precision": 2, "num": 10000, "start\_time": 1638595078932, "end\_time": 1638681478932, "description": "736466647366", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000116" }, { "owner\_address": "412a02447a0358b5bde2789c7ec95cd2ae23fbbcf1", "name": "54657374546f6b656e4e657731", "abbr": "313233", "total\_supply": 1230, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1638596130856, "end\_time": 1638682530856, "description": "313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000117" }, { "owner\_address": "41d811824a535ed82c2594e4f2716d821d3375d675", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 546456400, "trx\_num": 1, "precision": 2, "num": 111111, "start\_time": 1638598071383, "end\_time": 1638684471383, "description": "e1babb746265727274657272", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000118" }, { "owner\_address": "41cf2331c7b7e2a2b5596a0dd73ff2736af1e69859", "name": "7364667364766673", "abbr": "7364766673647666", "total\_supply": 65756600, "trx\_num": 1, "precision": 2, "num": 21222, "start\_time": 1638598696247, "end\_time": 1638685096247, "description": "6664676664676664", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000119" }, { "owner\_address": "41049315a3f2165dda60dd070a9eb04d95cb80b70d", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 67867700, "trx\_num": 4, "precision": 2, "num": 44343, "start\_time": 1638598716406, "end\_time": 1638685116406, "description": "676a67686d6a6768", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000120" }, { "owner\_address": "418b436bb84815763bd1f90a374e77550c99c5be94", "name": "7472696e6864696e687068756f6e67", "abbr": "7472696e6864696e68", "total\_supply": 234353453000000, "trx\_num": 1, "precision": 6, "num": 4, "start\_time": 1638600658733, "end\_time": 1638687058733, "description": "717265776766657267", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000121" }, { "owner\_address": "41f01d35b64fee619b5a97a11953366bc532cea661", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 65756700, "trx\_num": 1, "precision": 2, "num": 11111, "start\_time": 1638603127148, "end\_time": 1638689527148, "description": "736466736466", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000122" }, { "owner\_address": "41b2954074d6b3c7443e8cab53eba737056bb66d1f", "name": "777263313070686f6e6764616e67746f6b656e37", "abbr": "57524331305044544b37", "total\_supply": 1110, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1638605054419, "end\_time": 1638691454419, "description": "64", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000123" }, { "owner\_address": "41fcd12c285569b2ad32181af4ce27c62bcd99301e", "name": "546f6b656e", "abbr": "746b6e", "total\_supply": 1230, "trx\_num": 1, "precision": 1, "num": 123, "start\_time": 1638632244156, "end\_time": 1638718644156, "description": "575a3179727863657a504631487a61714a7a50595a564a5474396e6e62364233366f", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000124" }, { "owner\_address": "4162fe2d4612a6d79cdb870b6b7e60a008bad9355c", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 123000, "trx\_num": 213, "precision": 3, "num": 123, "start\_time": 1638639165040, "end\_time": 1638725565040, "description": "313332313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000125" }, { "owner\_address": "4136aec8fea12d4027b950152d02c11f4dc698c072", "name": "546f6b656e546f6b656e31", "abbr": "313233", "total\_supply": 12300, "trx\_num": 123, "precision": 2, "num": 12123, "start\_time": 1638640603354, "end\_time": 1638727003354, "description": "313233313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000126" }, { "owner\_address": "41a7f3a11de9662b09808e559a26170308d178376d", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 21323200, "trx\_num": 12, "precision": 2, "num": 123132, "start\_time": 1638640861216, "end\_time": 1638727261216, "description": "313332313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000127" }, { "owner\_address": "415ba121203dd263f0b4a210c5e6abd673c764fea2", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 12300, "trx\_num": 3, "precision": 2, "num": 123, "start\_time": 1638642124392, "end\_time": 1638728524392, "description": "313332313333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000128" }, { "owner\_address": "41cd28d6d6e7469ce5c10420634bbb7a9e934dea3e", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 123000, "trx\_num": 2, "precision": 3, "num": 123, "start\_time": 1638642566162, "end\_time": 1638728966162, "description": "603133313331", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000129" }, { "owner\_address": "416efc5784332f04fa12551e1d5359cd7dfe99e020", "name": "546f6b656e546f6b656e31", "abbr": "313233", "total\_supply": 123300, "trx\_num": 3, "precision": 2, "num": 123, "start\_time": 1638642660751, "end\_time": 1638729060751, "description": "313332313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000130" }, { "owner\_address": "4129536af319881f2b0a901bd6e7d97b738909ffda", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 322300, "trx\_num": 32, "precision": 2, "num": 12123, "start\_time": 1638643135023, "end\_time": 1638729535023, "description": "313231333331", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000131" }, { "owner\_address": "413175d108e1cf2dcaa6742af05c13ee3614f11a94", "name": "546f6b656e546f6b656e31", "abbr": "313233323331", "total\_supply": 12300, "trx\_num": 3, "precision": 2, "num": 123, "start\_time": 1638643270428, "end\_time": 1638729670428, "description": "3332313332333133323133313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000132" }, { "owner\_address": "41cecdaaa1a03f8de65112f729e2c8b3629e427e53", "name": "546f6b656e546f6b656e31", "abbr": "313233313332", "total\_supply": 3123000, "trx\_num": 123, "precision": 3, "num": 12332, "start\_time": 1638643454090, "end\_time": 1638729854090, "description": "33313331323333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000133" }, { "owner\_address": "4195e29dbad02fc181786afd2cf732dbe6d4f61a9c", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 21312300, "trx\_num": 23, "precision": 2, "num": 123, "start\_time": 1638643551893, "end\_time": 1638729951893, "description": "313231323333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000134" }, { "owner\_address": "4168448481cd25a94883580fc9ec6d2d9395f194f9", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 132123000, "trx\_num": 33, "precision": 3, "num": 1233, "start\_time": 1638643743635, "end\_time": 1638730143635, "description": "31323331323333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000135" }, { "owner\_address": "413d2bde8910129e7a98010cbf3cb69de89d39e55f", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 1230, "trx\_num": 2, "precision": 1, "num": 123, "start\_time": 1638874858262, "end\_time": 1638961258262, "description": "313332313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000136" }, { "owner\_address": "41089beaa55d32aacc51f5c2255a862bf566790d7a", "name": "655637706d", "abbr": "616262706d", "total\_supply": 10000000000, "trx\_num": 1, "precision": 4, "num": 1000, "start\_time": 1638881359749, "end\_time": 1638967759749, "description": "696e74726f", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000137" }, { "owner\_address": "41c2bd2f7ec523b641c978853fa926e38de2e0fa30", "name": "647366", "abbr": "57575757575757336571", "total\_supply": 2321300, "trx\_num": 1, "precision": 2, "num": 111111, "start\_time": 1638882936550, "end\_time": 1638969336550, "description": "7364667366", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000138" }, { "owner\_address": "41154fdef456fdc1e5bfa776a9fe703c172b73c8c4", "name": "546f6b656e546f6b656e31", "abbr": "31323331323331", "total\_supply": 12300, "trx\_num": 23, "precision": 2, "num": 123, "start\_time": 1638896417830, "end\_time": 1638982817830, "description": "3233313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000139" }, { "owner\_address": "418d9a421224b79c144c6a6dc5c411fc4fa28a0af9", "name": "546f6b656e546f6b656e31", "abbr": "3132313332", "total\_supply": 1233000, "trx\_num": 123, "precision": 3, "num": 123, "start\_time": 1638952252115, "end\_time": 1639038652115, "description": "313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000140" }, { "owner\_address": "4127dad45dc750af35d2e3b469e0ee9c2d9daed7fb", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 34343430000, "trx\_num": 1, "precision": 4, "num": 11111, "start\_time": 1638954736122, "end\_time": 1639041136122, "description": "646667646667", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000141" }, { "owner\_address": "418b3316827f77029fc1feb802b25dc2f931a8cfaa", "name": "73616461", "abbr": "7364766673647666", "total\_supply": 56765700, "trx\_num": 1, "precision": 2, "num": 44444, "start\_time": 1638955307864, "end\_time": 1639041707864, "description": "7574796a74796a7479", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000142" }, { "owner\_address": "415babfeafbb8b00bd2fa865ec2e03848d91406b44", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "313051", "total\_supply": 43543500000, "trx\_num": 1, "precision": 5, "num": 22222, "start\_time": 1638955309160, "end\_time": 1639041709160, "description": "6664676867666468", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000143" }, { "owner\_address": "41830461b52bca32df5c7183ac9e74015edbafd3b3", "name": "777263313070686f6e6764616e67746f6b656e37", "abbr": "57524331305044544b37", "total\_supply": 10, "trx\_num": 1, "num": 1, "start\_time": 1638963381913, "end\_time": 1639049781913, "description": "616161", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000144" }, { "owner\_address": "41271d5338d87dc580fad8057d2ff1ab5c85e5644f", "name": "4557383468", "abbr": "616262", "total\_supply": 9998000000, "trx\_num": 2, "precision": 6, "num": 100, "start\_time": 1638976227084, "end\_time": 1639062627084, "description": "696e6e74726f20", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000145" }, { "owner\_address": "411d846b8468cdf38fccef8142a384dac4b5024fd2", "name": "777263313070686f6e6764616e67746f6b656e38", "abbr": "57524331305044544b38", "total\_supply": 10, "trx\_num": 1, "num": 1, "start\_time": 1638979847740, "end\_time": 1639066247740, "description": "64c491", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000146" }, { "owner\_address": "4144fe16afa28a22a3febdad64546c00c27bd10024", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 123000, "trx\_num": 3, "precision": 3, "num": 123, "start\_time": 1639041402842, "end\_time": 1639127802842, "description": "313332313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000147" }, { "owner\_address": "41167a690e9d242c9d18df8a97407f5bcbd84d8688", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 200, "trx\_num": 2, "precision": 2, "num": 2, "start\_time": 1639041645844, "end\_time": 1639128045844, "description": "31313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000148" }, { "owner\_address": "41eb1d4cb55ec856cac4b1957630f5852832544426", "name": "546f6b656e546f6b656e31", "abbr": "313332313332", "total\_supply": 3000, "trx\_num": 2, "precision": 3, "num": 2, "start\_time": 1639041781289, "end\_time": 1639128181289, "description": "31323333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000149" }, { "owner\_address": "412f8dc908a60dce3536ab419f496a553d1e12e3bd", "name": "546b4a67324d33", "abbr": "616262", "total\_supply": 10000000000, "trx\_num": 1, "precision": 6, "num": 100, "start\_time": 1639055392902, "end\_time": 1639141792902, "description": "696e74726f", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000150" }, { "owner\_address": "413b1cd9bc86d130add31402518cd4db95715b8852", "name": "39575757575757575757575757575757575757575757575757576e616d65", "abbr": "57575757575757336571", "total\_supply": 3333000, "trx\_num": 2, "precision": 3, "num": 22222, "start\_time": 1639057741281, "end\_time": 1639144141281, "description": "6466647366", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000151" }, { "owner\_address": "412e8e5cab6693fb42385ff447477a2f349b90881d", "name": "46764a34", "abbr": "6a34", "total\_supply": 10000000, "trx\_num": 1, "precision": 4, "num": 100, "start\_time": 1639060268845, "end\_time": 1639146668845, "description": "66657267676868", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000152" }, { "owner\_address": "41a5afdd13a57d9e0838dafdbe04e84d763864f7a5", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total\_supply": 23130000, "trx\_num": 1, "precision": 3, "num": 1111111, "start\_time": 1639106311578, "end\_time": 1639192711578, "description": "73c3813133315341444153", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000153" }, { "owner\_address": "4179719570afd9f8f73bc9474611ecef18d088c150", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "313051", "total\_supply": 222200, "trx\_num": 2, "precision": 2, "num": 222, "start\_time": 1639110643892, "end\_time": 1639197043892, "description": "c6b0716471647164", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000154" }, { "owner\_address": "41936d8cb48797c92bf777dade8d1fb5bcdf90a05e", "name": "5465737474747474747474313233313233", "abbr": "546573747474", "total\_supply": 123000, "trx\_num": 1, "precision": 3, "num": 3, "start\_time": 1639112429512, "end\_time": 1639198827815, "description": "313233313233", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 3, "id": "1000155" }, { "owner\_address": "4154faff58d621196a7c100bb26c029c649e03a965", "name": "5465737474747474747474", "abbr": "546573747474", "total\_supply": 3123000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1639112490154, "end\_time": 1639630891056, "description": "313233313332", "url": "687474703a2f2f65786368616e67656465762e78797a3a333030312f", "free\_asset\_net\_limit": 1, "public\_free\_asset\_net\_limit": 1, "id": "1000156" }, { "owner\_address": "41d6521963e48300a89998e863b93eb84541833dc6", "name": "546f6b656e546f6b656e31", "abbr": "546b6e", "total\_supply": 123000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1639113092341, "end\_time": 1639199492341, "description": "5756545278576a6646416759476350516a4d526b5454715a797a45694879486d7431", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000157" }, { "owner\_address": "418776b8279840574b47657a8923ccae0070e14582", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 3000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1639117456908, "end\_time": 1639203856908, "description": "313233313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000158" }, { "owner\_address": "41732afcb9e241daebb27a0764a0d749306130a1e9", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 33000, "trx\_num": 1, "precision": 3, "num": 1, "start\_time": 1639117841182, "end\_time": 1639204241182, "description": "313231323333", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000159" }, { "owner\_address": "41cd240ac6ab506922ede08ef621847af0cbb575cd", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 333000, "trx\_num": 2, "precision": 3, "num": 2, "start\_time": 1639118577204, "end\_time": 1639204977204, "description": "3131323331", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000160" }, { "owner\_address": "410f52600d76caff0c1235a12027db0ac66c69d176", "name": "484b6463556b7770", "abbr": "6b7770", "total\_supply": 10000000, "trx\_num": 1, "num": 100, "start\_time": 1639120748645, "end\_time": 1639207148645, "description": "696e74726f64756374696f6e20", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000161" }, { "owner\_address": "41b5af9a451229242a7ceff5c0407d8bf59df6f0f4", "name": "546f6b656e546f6b656e31", "abbr": "544b6e", "total\_supply": 10, "trx\_num": 100, "precision": 1, "num": 100, "start\_time": 1639122205633, "end\_time": 1639208605633, "description": "313233313233", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000162" }, { "owner\_address": "416336aa9d0abe08ca276e73f2250fecb3c7605900", "name": "706d513278", "abbr": "706d513278", "total\_supply": 999800, "trx\_num": 1, "precision": 2, "num": 100, "start\_time": 1639123099789, "end\_time": 1639209499789, "description": "696e74726f", "url": "68747470733a2f2f6578706c6f7265722d6465762e77656c7363616e2e696f2f746f6b656e2d7265636f72642f6372656174652f5265636f7264", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000163" }, { "owner\_address": "4105bcbd3a75593fac08032edb1d39d71d5bd08428", "name": "777263313070686f6e6764616e67746f6b656e39", "abbr": "57524331305044544b39", "total\_supply": 100, "trx\_num": 1, "precision": 1, "num": 1, "start\_time": 1639129861574, "end\_time": 1639216261574, "description": "64666473666173", "url": "7777772e746573742e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000164" }, { "owner\_address": "41ac3565a843a219fa349c38437a70f7d998e959d0", "name": "4c696e68", "abbr": "544b6e", "total\_supply": 323000, "trx\_num": 1, "precision": 3, "num": 6, "start\_time": 1639191473519, "end\_time": 1639277873519, "description": "3132313332", "url": "68747470733a2f2f737461636b6f766572666c6f772e636f6d", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000165" }, { "owner\_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "name": "77726331302d68756e676269656e", "abbr": "77726331306862", "total\_supply": 20000, "trx\_num": 11, "precision": 2, "num": 1, "start\_time": 1639555597264, "end\_time": 1639641997264, "description": "68756e676269656e2069732069737375652074686520746f6b656e20666f722074657374", "url": "6f6d616e65652e7367", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "id": "1000166" } ]&#x20;

}


# GetPaginatedAssetIssueList

POST: http\://172.104.51.182:16667/wallet/getpaginatedassetissuelist

Query the list of all the tokens by pagination. Returns a list of Tokens that succeed the Token located at offset.

**BODY PARAMS**

`{`

**`offset`**` ``int32,`

**`limit`**` ``int32`

`}`

**Note:**  &#x20;

* **offset** is the index of the start token
* **limit** is amount of tokens per page.

**Example:**

curl --request POST\
\--url <https://api.shasta.trongrid.io/wallet/getpaginatedassetissuelist\\>
\--header 'Content-Type: application/json'

\--data ' { "offset":1, "limit":2 }

**Input:**&#x20;

`{`

`"`**`offset`**`":` `1,`&#x20;

`"`**`limit`**`": 10`&#x20;

`}`

**response:**

`{`&#x20;

`"assetIssue": [ { "owner_address": "41de88188b00180d22d59c752cd3022448fe652a7c", "name": "395757575757575757575757575757575757575757575757575757573277", "abbr": "57575757575757336571", "total_supply": 10000, "trx_num": 1, "precision": 1, "num": 1000, "start_time": 1636073277411, "end_time": 1636159677411, "description": "5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575733333333", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free_asset_net_limit": 10000, "public_free_asset_net_limit": 10000, "id": "1000069" }, { "owner_address": "412c7d562b983edd58949e1bf3837fcffdbd9fadd1", "name": "395757575757575757575757575757575757575757575757575757575777", "abbr": "57575757575757336571", "total_supply": 1000, "trx_num": 1, "precision": 1, "num": 1000, "start_time": 1636033876201, "end_time": 1636120276201, "description": "5757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575739", "url": "68747470733a2f2f7777772e66616365626f6f6b2e636f6d2f", "free_asset_net_limit": 10000, "public_free_asset_net_limit": 10000, "id": "1000066" } ]`&#x20;

`}`


# TransferAsset

POST: http\://172.104.51.182:16667/wallet/transferasset

Transfer ARC10 token.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`contract_address`**` ``string`

**`asset_name`**` ``string`

**`amount`**` ``int64`

**`permission_id`**` ``int32 (Optional)`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** that triggers the contract, converted to a hex string
* **contract address**, converted to a hex string
* **asset\_name** is token id, default hexString
* **amount**&#x20;
* **permission\_id** for multi-signature
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/transferasset>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "to\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "asset\_name": "1000166", "amount":100, "visible": true }

**Input:**&#x20;

`{`&#x20;

`"owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz",`&#x20;

`"to_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7",`&#x20;

`"asset_name": "1000166",`&#x20;

`"amount":100, "visible": true`

`}`

**Response:**&#x20;

{ "visible": true, "txID": "8977e4ee68b20da3607c8b87dff4fdf4a31c72a205ebb98c860937110b8c57f1", "raw\_data": { "contract": \[ { "parameter": { "value": { "amount": 100, "asset\_name": "1000166", "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "to\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7" }, "type\_url": "type.googleapis.com/protocol.TransferAssetContract" }, "type": "TransferAssetContract" } ], "ref\_block\_bytes": "dcc4", "ref\_block\_hash": "cca3f6e39edb1d6a", "expiration": 1639471224000, "timestamp": 1639471164083 }, "raw\_data\_hex": "0a02dcc42208cca3f6e39edb1d6a40c0a9e6c0db2f5a730802126f0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e736665724173736574436f6e747261637412390a07313030303136361215414203485a535a4072c9fbfaaddfe2a010ad0bcdb01a1541a9c46373aeb4749e3ce45aca242b027a46f486f9206470b3d5e2c0db2f" }

\=> Continue call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The account created success on WEL network.

`{`&#x20;

`"result": true, "txid": "8977e4ee68b20da3607c8b87dff4fdf4a31c72a205ebb98c860937110b8c57f1"`&#x20;

`}`


# CreateAssetIssue

POST:http\://172.104.51.182:16667/wallet/createassetissue

Issue a ARC10 token.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`name`**` ``string`

**`abbr`**` ``string`

**`total_supply`**` ``int64`

**`trx_num`**`  ``int64`

**`num`**` ``int64`

**`start_time`**` ``date-time`

**`end_time`**` ``date-time`

**`description`**` ``string`

**`url`**` ``string`

**`free_asset_net_limit`**` ``int64`

**`public_free_asset_net_limit`**` ``int64`

**`frozen_supply`**` ``json`

**`precision`**` ``int32`

`}`

**Note:**  &#x20;

* **owner address** default hexString
* **token name**, default hexString
* **abbr** string
* **total\_supply** is token total supply
* **trx\_num** is define the price by the ratio of trx\_num/num(The unit of 'trx\_num' is SUN)
* **num:** define the price by the ratio of trx\_num/num
* **start\_time** ICO start time
* **end\_time** ICO end time
* **description** is token description, default hexString
* **url** is token official website url, default hexString
* **free\_asset\_net\_limit** is token free asset net limit
* **public\_free\_asset\_net\_limit** is token public free asset net limit
* **frozen\_supply** is token frozen supply
* **precision** int32

**Example:**

curl -X POST\
[**http://172.104.51.182:16667/wallet/createassetissue**](http://172.104.51.182:16667/wallet/createassetissue)\
-d '{ { "owner\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "name": "0x68756e675f7772633130", "abbr": "0x7772635f68756e676269656e", "total\_supply": 300, "trx\_num": 1, "num": 1, "start\_time": 1639708246000, "end\_time": 1639967446000, "description": "63726561746520617373657420627920415049", "url": "6578706c6f7265722d6465762e77656c7363616e2e696f", "free\_asset\_net\_limit": 10000, "public\_free\_asset\_net\_limit": 10000, "frozen\_supply": { "frozen\_amount": 100, "frozen\_days": 3 }, "visible":true }}'

**Input:**&#x20;

`{`&#x20;

`"owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7",`&#x20;

`"name": "0x68756e675f7772633130",`&#x20;

`"abbr": "0x7772635f68756e676269656e",`&#x20;

`"total_supply": 300,`&#x20;

`"trx_num": 1,`

&#x20;`"num": 1,`&#x20;

`"start_time": 1639708246000,`&#x20;

`"end_time": 1639967446000,`&#x20;

`"description": "63726561746520617373657420627920415049",`&#x20;

`"url": "6578706c6f7265722d6465762e77656c7363616e2e696f",`&#x20;

`"free_asset_net_limit": 10000,`&#x20;

`"public_free_asset_net_limit": 10000,`&#x20;

`"frozen_supply": { "frozen_amount": 100, "frozen_days": 3 },`&#x20;

`"visible":true`&#x20;

`}`

**Response:**&#x20;

`{`&#x20;

`"visible": true, "txID": "eda0bd18ea5e7c825278e36c2b999d452ac42e28f7d319087d4a2fd765e6c8b7", "raw_data": { "contract": [ { "parameter": { "value": { "trx_num": 1, "frozen_supply": [ { "frozen_amount": 100, "frozen_days": 3 } ], "total_supply": 300, "num": 1, "end_time": 1639967446000, "description": "63726561746520617373657420627920415049", "owner_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "url": "6578706c6f7265722d6465762e77656c7363616e2e696f", "free_asset_net_limit": 10000, "start_time": 1639708246000, "public_free_asset_net_limit": 10000, "name": "0x68756e675f7772633130", "abbr": "0x7772635f68756e676269656e" }, "type_url": "type.googleapis.com/protocol.AssetIssueContract" }, "type": "AssetIssueContract" } ], "ref_block_bytes": "0d80", "ref_block_hash": "a93214d3d95bc157", "expiration": 1639708173000, "timestamp": 1639708113989 }, "raw_data_hex": "0a020d802208a93214d3d95bc15740c8c5e4b1dc2f5a8102080612fc010a2f747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e41737365744973737565436f6e747261637412c8010a1541a9c46373aeb4749e3ce45aca242b027a46f486f91216307836383735366536373566373737323633333133301a1a307837373732363335663638373536653637363236393635366520ac022a04086410033001400148f0ffe8b1dc2f50f0a7b5addd2fa201263633373236353631373436353230363137333733363537343230363237393230343135303439aa012e36353738373036633666373236353732326436343635373632653737363536633733363336313665326536393666b001904eb801904e70c5f8e0b1dc2f"`&#x20;

`}`

\=> Continue call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The account created success on WEL network.

`{`&#x20;

`"result": true, "txid": "eda0bd18ea5e7c825278e36c2b999d452ac42e28f7d319087d4a2fd765e6c8b7"`&#x20;

`}`


# UnfreezeAsset

POST: http\://172.104.51.182:16667/wallet/unfreezeasset

Unstake a token that has passed the minimum freeze duration.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** that triggers the contract, converted to a hex string
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url [`http://172.104.51.182:16667/wallet/unfreezeasset`](http://172.104.51.182:16667/wallet/unfreezeasset)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "visible":true }

**Input:**&#x20;

{ "owner\_address": "ARSrWnjsK5ePhAVQGHr2JSFdKSjE3vKwE7", "visible":true }

**Response:**&#x20;


# UpdateAsset

POST: http\://172.104.51.182:16667/wallet/updateasset

Update basic ARC10 token information.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`description`**` ``string`

**`url`**` ``string`

**`new_limit`**` ``int32`

**`new_public_limit`**` ``int32`

**`permission_id`**` ``int32 (Optional)`

**`visible`**` ``boolean (Optional)`

`}`<br>

**Note:**  &#x20;

* **owner address** is the issuers address of the token, default hexString
* **description** is the description of token, default hexString
* **url** is the token's website url, default hexString
* **new\_limit**  each token holder's free bandwidth
* **new\_public\_limit** is the total free bandwidth of the token
* **permission\_id** for multi-signature
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url [**http://172.104.51.182:16667/wallet/updateasset**](http://172.104.51.182:16667/wallet/updateasset) \
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data '{ "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "description":"update token", "url":"testupdateasset", "visible":true }

**Input:**&#x20;

{ "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "description":"update token", "url":"testupdateasset", "visible":true }

**response:**

`{`&#x20;

`"visible": true, "txID": "26a2599bc08d660dc1a38622b74d4fa132c11f02a5c1791776214b3fd7c0a716", "raw_data": { "contract": [ { "parameter": { "value": { "description": "update token", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "url": "testupdateasset" }, "type_url": "type.googleapis.com/protocol.UpdateAssetContract" }, "type": "UpdateAssetContract" } ], "ref_block_bytes": "16bf", "ref_block_hash": "25f6814b2d96895b", "expiration": 1639715274000, "timestamp": 1639715215224 }, "raw_data_hex": "0a0216bf220825f6814b2d96895b4090fa95b5dc2f5a6e080f126a0a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5570646174654173736574436f6e747261637412360a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0120c75706461746520746f6b656e1a0f74657374757064617465617373657470f8ae92b5dc2f"`&#x20;

`}`

\=> Continue call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The account created success on WEL network.

{&#x20;

"result": true, "txid": "26a2599bc08d660dc1a38622b74d4fa132c11f02a5c1791776214b3fd7c0a716"&#x20;

}


# Transactions


# GetContract

POST: http\://172.104.51.182:16667/wallet/getcontract

Queries a contract's information from the blockchain. Returns SmartContract object.

**BODY PARAMS**

`{`

**`value`**` ``string`  `(Contract address, converted to a hex string.)`

**`visible`**` ``boolean ( Optional, is address in visible format(base58check) or hex?)`

`}`

**Example:**

**curl** --request POST\
\--url [`http://172.104.51.182:16667/wallet/getcontract`](http://172.104.51.182:16667/wallet/getcontract)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "value": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }

**Input:**&#x20;

`{ "value": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }`

**Response:**&#x20;

`{ "bytecode": "60806040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b506040518060400160405280600f81526020017f596f757220546f6b656e204e616d6500000000000000000000000000000000008152506040518060400160405280600381526020017f59544e0000000000000000000000000000000000000000000000000000000000815250620000b26301ffc9a760e01b6200015460201b60201c565b620000ca6380ac58cd60e01b6200015460201b60201c565b620000e263780e9d6360e01b6200015460201b60201c565b8160099080519060200190620000fa9291906200048a565b5080600a9080519060200190620001139291906200048a565b506200012c635b5e139f60e01b6200015460201b60201c565b50506200014e620001426200025d60201b60201c565b6200026560201b60201c565b62000539565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200028081600d620002c660201b620024301790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620002d88282620003aa60201b60201c565b156200034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000433576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620034256022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cd57805160ff1916838001178555620004fe565b82800160010185558215620004fe579182015b82811115620004fd578251825591602001919060010190620004e0565b5b5090506200050d919062000511565b5090565b6200053691905b808211156200053257600081600090555060010162000518565b5090565b90565b612edc80620005496000396000f3fe608060405234801561001057600080fd5b50d3801561001d57600080fd5b50d2801561002a57600080fd5b50600436106101515760003560e01c80636352211e116100d2578063986502751161009657806398650275146107a5578063a22cb465146107af578063aa271e1a146107ff578063b88d4fde1461085b578063c87b56dd14610960578063e985e9c514610a0757610151565b80636352211e146105955780636c0360eb1461060357806370a082311461068657806395d89b41146106de578063983b2d561461076157610151565b806323b872dd1161011957806323b872dd146103185780632f745c591461038657806342842e0e146103e85780634f6ccce71461045657806350bb4e7f1461049857610151565b806301ffc9a71461015657806306fdde03146101bb578063081812fc1461023e578063095ea7b3146102ac57806318160ddd146102fa575b600080fd5b6101a16004803603602081101561016c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610a83565b604051808215151515815260200191505060405180910390f35b6101c3610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102035780820151818401526020810190506101e8565b50505050905090810190601f1680156102305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026a6004803603602081101561025457600080fd5b8101908080359060200190929190505050610b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f8600480360360408110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c27565b005b610302610e0e565b6040518082815260200191505060405180910390f35b6103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1b565b005b6103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e91565b6040518082815260200191505060405180910390f35b610454600480360360608110156103fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b005b6104826004803603602081101561046c57600080fd5b8101908080359060200190929190505050610f70565b6040518082815260200191505060405180910390f35b61057b600480360360608110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184600183028401116401000000008311171561052957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ff0565b604051808215151515815260200191505060405180910390f35b6105c1600480360360208110156105ab57600080fd5b8101908080359060200190929190505050611076565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060b61113e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064b578082015181840152602081019050610630565b50505050905090810190601f1680156106785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106c86004803603602081101561069c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e0565b6040518082815260200191505060405180910390f35b6106e66112b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072657808201518184015260208101905061070b565b50505050905090810190601f1680156107535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611357565b005b6107ad6113c8565b005b6107fd600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506113da565b005b6108416004803603602081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611592565b604051808215151515815260200191505060405180910390f35b61095e6004803603608081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184600183028401116401000000008311171561090c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115af565b005b61098c6004803603602081101561097657600080fd5b8101908080359060200190929190505050611627565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109cc5780820151818401526020810190506109b1565b50505050905090810190601f1680156109f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6960048036036040811015610a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611829565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b825780601f10610b5757610100808354040283529160200191610b82565b820191906000526020600020905b815481529060010190602001808311610b6557829003601f168201915b5050505050905090565b6000610b97826118bd565b610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c7d602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c3282611076565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d556021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cd861192f565b73ffffffffffffffffffffffffffffffffffffffff161480610d075750610d0681610d0161192f565b611829565b5b610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612e486038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610e2c610e2661192f565b82611937565b610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b610e8c838383611a2b565b505050565b6000610e9c836111e0565b8210610ef3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612bd0602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610f3d57fe5b9060005260206000200154905092915050565b610f6b838383604051806020016040528060008152506115af565b505050565b6000610f7a610e0e565b8210610fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612d29602c913960400191505060405180910390fd5b60078281548110610fde57fe5b90600052602060002001549050919050565b6000611002610ffd61192f565b611592565b611057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6110618484611a4f565b61106b8383611a70565b600190509392505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611135576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612d986029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612dc1602a913960400191505060405180910390fd5b6112ae600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611afa565b9050919050565b6060600a8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b61136761136261192f565b611592565b6113bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6113c581611b08565b50565b6113d86113d361192f565b611b62565b565b6113e261192f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5452433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061149061192f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661153d61192f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006115a882600d611bbc90919063ffffffff16565b9050919050565b6115c06115ba61192f565b83611937565b611615576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b61162184848484611c9a565b50505050565b6060611632826118bd565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612ca9602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117305780601f1061170557610100808354040283529160200191611730565b820191906000526020600020905b81548152906001019060200180831161171357829003601f168201915b505050505090506000815114156117595760405180602001604052806000815250915050611824565b600b8160405160200180838054600181600116156101000203166002900480156117ba5780601f106117985761010080835404028352918201916117ba565b820191906000526020600020905b8154815290600101906020018083116117a6575b505082805190602001908083835b602083106117eb57805182526020820191506020810190506020830392506117c8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611942826118bd565b611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612deb602c913960400191505060405180910390fd5b60006119a283611076565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a1157508373ffffffffffffffffffffffffffffffffffffffff166119f984610b8c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a225750611a218185611829565b5b91505092915050565b611a36838383611d0c565b611a408382611f67565b611a4a8282612105565b505050565b611a5982826121cc565b611a638282612105565b611a6c816123e4565b5050565b611a79826118bd565b611ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612bfb602c913960400191505060405180910390fd5b80600c60008481526020019081526020016000209080519060200190611af5929190612afe565b505050565b600081600001549050919050565b611b1c81600d61243090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611b7681600d61250b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d766022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ca5848484611a2b565b611cb1848484846125c8565b611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff16611d2c82611076565b73ffffffffffffffffffffffffffffffffffffffff1614611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612e806029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c276024913960400191505060405180910390fd5b611e27816128fd565b611e6e600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129bb565b611eb5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611fbf6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506129f490919063ffffffff16565b90506000600660008481526020019081526020016000205490508181146120ac576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061202c57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061208457fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036120fe9190612b7e565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561226f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5452433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612278816118bd565b156122eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612384600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b61243a8282611bbc565b156124ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6125158282611bbc565b61256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d086021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008373ffffffffffffffffffffffffffffffffffffffff16d46125ef57600190506128f5565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16635175f878905060e01b61263361192f565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156126e35780820151818401526020810190506126c8565b50505050905090810190601f1680156127105780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106127a85780518252602082019150602081019050602083039250612785565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461280a576040519150601f19603f3d011682016040523d82523d6000602084013e61280f565b606091505b50915091508161287d5760008151111561282c5780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b600081806020019051602081101561289457600080fd5b81019080805190602001909291905050509050635175f87860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b85760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6129d3600182600001546129f490919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000612a3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a3e565b905092915050565b6000838311158290612aeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ab0578082015181840152602081019050612a95565b50505050905090810190601f168015612add5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b3f57805160ff1916838001178555612b6d565b82800160010185558215612b6d579182015b82811115612b6c578251825591602001919060010190612b51565b5b509050612b7a9190612baa565b5090565b815481835581811115612ba557818360005260206000209182019101612ba49190612baa565b5b505050565b612bcc91905b80821115612bc8576000816000905550600101612bb0565b5090565b9056fe545243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64735452433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e7366657220746f20746865207a65726f20616464726573735452433732313a207472616e7366657220746f206e6f6e20545243373231526563656976657220696d706c656d656e7465725452433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65545243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64735452433732313a20617070726f76616c20746f2063757272656e74206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735452433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573735452433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645452433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c5452433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776ea26474726f6e58200bf00154938dc850be6056415182110b5de5908f169c907441930d5f3d8862c364736f6c634300050a0031526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", "consume_user_resource_percent": 5, "name": "TRC721Token", "origin_address": "WFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "abi": { "entrys": [ { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "name", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "address" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "approve", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "name": "totalSupply", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "inputs": [ { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" }, { "name": "tokenURI", "type": "string" } ], "name": "mintWithTokenURI", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "address" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "baseURI", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" } ], "name": "balanceOf", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "symbol", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "account", "type": "address" } ], "name": "addMinter", "stateMutability": "Nonpayable", "type": "Function" }, { "name": "renounceMinter", "stateMutability": "Nonpayable", "type": "Function" }, { "inputs": [ { "name": "to", "type": "address" }, { "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "account", "type": "address" } ], "name": "isMinter", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" }, { "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "stateMutability": "View", "type": "Function" }, { "stateMutability": "Nonpayable", "type": "Constructor" }, { "inputs": [ { "indexed": true, "name": "account", "type": "address" } ], "name": "MinterAdded", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "account", "type": "address" } ], "name": "MinterRemoved", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": true, "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "approved", "type": "address" }, { "indexed": true, "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "operator", "type": "address" }, { "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "Event" } ] }, "origin_energy_limit": 1000000000, "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "code_hash": "308c514859f6ddd6b021b000b557f77b4d4d62af5a804534de27a3af7e84730f" }`


# GetTransactionSign

POST: http\://172.104.51.182:16667/wallet/gettransactionsign

Sign the transaction, the api has the risk of leaking the private key, please make sure to call the api in a secure environment

**Return value: Signed Transaction contract data**

❗️Please control risks when using this API. To ensure environmental security, please do not invoke APIs provided by other or invoke this very API on a public network.

**BODY PARAMS**\
`{`

**`transaction  object`**`  ``required`

**`privateKey`**` ``string required`

`}`

**Note:**  &#x20;

* **privateKey** is the user private key
* **transaction object** is a contract created by http api&#x20;

**transaction object**

`{`

&#x20;**`txID`**` ``string`

&#x20;**`visible`**` ``boolean`

&#x20;**`raw_data`**` ``json`

&#x20;**`raw_data_hex`**` ``string`

&#x20;**`signature`**` ``array of strings`&#x20;

`}`

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/gettransactionsign>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "transaction": { "visible": true, "txID": "978f610d94c14c7a9c840073dff482ea5e6bf1eb403f5b7cc692bbfc84b94fb6", "raw\_data": { "contract": \[ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type\_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref\_block\_bytes": "bbdd", "ref\_block\_hash": "fbf5695b52ea68d6", "expiration": 1639036515000, "fee\_limit": 400000000, "timestamp": 1639036458060 }, "raw\_data\_hex": "0a02bbdd2208fbf5695b52ea68d640b8e5c1f1d92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cca8bef1d92f90018088debe01" }, "privateKey": "76E937A694584F3E183D660533797BE4B220167884BD98506B3059105A23F3EB" }

**Input:**&#x20;

`{`&#x20;

`"transaction": { "visible": true, "txID": "978f610d94c14c7a9c840073dff482ea5e6bf1eb403f5b7cc692bbfc84b94fb6", "raw_data": { "contract": [ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref_block_bytes": "bbdd", "ref_block_hash": "fbf5695b52ea68d6", "expiration": 1639036515000, "fee_limit": 400000000, "timestamp": 1639036458060 }, "raw_data_hex": "0a02bbdd2208fbf5695b52ea68d640b8e5c1f1d92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cca8bef1d92f90018088debe01" }, "privateKey": "76E937A694584F3E183D660533797BE4B220167884BD98506B3059105A23F3EB"`&#x20;

`}`

**Response:**&#x20;

`{ "visible": true, "signature": [ "aef3b466874b538ad90dab1f10e0e47ab705eb3d15e26048aaf0806cb634e62f79a262baec3a31bcae3e54a63167a5409c43f82412a5cb85dad67404f3f88fef01" ], "txID": "978f610d94c14c7a9c840073dff482ea5e6bf1eb403f5b7cc692bbfc84b94fb6", "raw_data": { "contract": [ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref_block_bytes": "bbdd", "ref_block_hash": "fbf5695b52ea68d6", "expiration": 1639036515000, "fee_limit": 400000000, "timestamp": 1639036458060 }, "raw_data_hex": "0a02bbdd2208fbf5695b52ea68d640b8e5c1f1d92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cca8bef1d92f90018088debe01" }`


# BroadcastTransaction

POST: http\://172.104.51.182:16667/wallet/broadcasttransaction

Broadcast the signed transaction

**Return value**：broadcast success or failure

**BODY PARAMS**\
{

&#x20; **`txID`**` ``string`

&#x20;**`visible`**` ``boolean`

&#x20;**`raw_data`**` ``json`

&#x20;**`raw_data_hex`**` ``string`

&#x20;**`signature`**` ``array of strings`

}<br>

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/broadcasttransaction>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' {"raw\_data": { "contract": \[ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type\_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref\_block\_bytes": "bbdd", "ref\_block\_hash": "fbf5695b52ea68d6", "expiration": 1639036515000, "fee\_limit": 400000000, "timestamp": 1639036458060 }, "raw\_data\_hex": "0a02bbdd2208fbf5695b52ea68d640b8e5c1f1d92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cca8bef1d92f90018088debe01"}

**Input:**&#x20;

`{ "visible": true, "signature": [ "aef3b466874b538ad90dab1f10e0e47ab705eb3d15e26048aaf0806cb634e62f79a262baec3a31bcae3e54a63167a5409c43f82412a5cb85dad67404f3f88fef01" ], "txID": "978f610d94c14c7a9c840073dff482ea5e6bf1eb403f5b7cc692bbfc84b94fb6", "raw_data": { "contract": [ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref_block_bytes": "bbdd", "ref_block_hash": "fbf5695b52ea68d6", "expiration": 1639036515000, "fee_limit": 400000000, "timestamp": 1639036458060 }, "raw_data_hex": "0a02bbdd2208fbf5695b52ea68d640b8e5c1f1d92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cca8bef1d92f90018088debe01" }`

**Response:**&#x20;

`{`&#x20;

`"result": true, "txid": "978f610d94c14c7a9c840073dff482ea5e6bf1eb403f5b7cc692bbfc84b94fb6"`&#x20;

`}`


# BroadcastHex

POST: http\://172.104.51.182:16667/wallet/broadcasthex

Broadcast the protobuf encoded transaction hex string after sign

**Return** : The result of the broadcast

**BODY PARAMS**

{

&#x20;**transaction** string required (**transaction** hex after sign)

}\
**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/broadcasthex>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "transaction": "0A8A010A0202DB2208C89D4811359A28004098A4E0A6B52D5A730802126F0A32747970652E676F6F676C65617069732E636F6D2F70726F746F636F6C2E5472616E736665724173736574436F6E747261637412390A07313030303030311215415A523B449890854C8FC460AB602DF9F31FE4293F1A15416B0580DA195542DDABE288FEC436C7D5AF769D24206412418BF3F2E492ED443607910EA9EF0A7EF79728DAAAAC0EE2BA6CB87DA38366DF9AC4ADE54B2912C1DEB0EE6666B86A07A6C7DF68F1F9DA171EEE6A370B3CA9CBBB00" }


# EasyTransfer


# EasyTransferByPrivate


# CreateTransaction

POST: http\://172.104.51.182:16667/wallet/createtransaction

Create a TRX transfer transaction. If to\_address does not exist, then create the account on the blockchain.

**BODY PARAMS**

`{`&#x20;

`"to_address": string,`

`"owner_address": string,`

`"amount": int32`

`}`

**Example:**

```
curl -X POST http://172.104.51.182:16667/wallet/createtransaction  -d '{"to_address": "41a9c46373aEB4749E3CE45acA242b027A46f486f9", "owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0", "amount": 30000000}'
```

**input:**

`{`

&#x20;`"to_address": "41a9c46373aEB4749E3CE45acA242b027A46f486f9", "owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0", "amount": 30000000`&#x20;

`}`

**response:**\
`{`&#x20;

`"visible": false, "txID": "886a099bc3ba32aeffcf4a34e5cfd1850b1f919b32a2ec4d51097f3f87f56409", "raw_data": { "contract": [ { "parameter": { "value": { "amount": 30000000, "owner_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "to_address": "41a9c46373aeb4749e3ce45aca242b027a46f486f9" }, "type_url": "type.googleapis.com/protocol.TransferContract" }, "type": "TransferContract" } ], "ref_block_bytes": "7c27", "ref_block_hash": "1a12b9ee9ce6c53a", "expiration": 1639989840000, "timestamp": 1639989783073 }, "raw_data_hex": "0a027c2722081a12b9ee9ce6c53a4080918cb8dd2f5a68080112640a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412330a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541a9c46373aeb4749e3ce45aca242b027a46f486f9188087a70e70a1d488b8dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The account created success on WEL network.

{&#x20;

"result": true, "txid": "886a099bc3ba32aeffcf4a34e5cfd1850b1f919b32a2ec4d51097f3f87f56409"&#x20;

}


# Voting & SRs


# ListWitnesses

GET: http\://172.104.51.182:16667/wallet/listwitnesses

List all Super Representatives.

\
curl --request GET\
\--url [https://api.shasta.trongrid.io/wallet/listwitnesses](http://172.104.51.182:16667/wallet/listwitnesses)

**Response**:\
`{`&#x20;

`"witnesses": [ { "address": "414240eedbf72352ee6b2f158fb65bc10999d940b0", "voteCount": 10000, "url": "https://foo.bar", "totalProduced": 35512, "totalMissed": 1, "latestBlockNum": 4769939, "latestSlotNum": 546682830, "isJobs": true }, { "address": "41f8328c39cd1c8de05bbcb6c455a04cf25808e003", "voteCount": 9900, "url": "https://foo.bar", "totalProduced": 35504, "latestBlockNum": 4769940, "latestSlotNum": 546682831, "isJobs": true }, { "address": "411726622af6e9aac52b610a729f3341327c2141a5", "voteCount": 8900, "url": "https://foo.bar", "totalProduced": 35496, "latestBlockNum": 4769950, "latestSlotNum": 546682841, "isJobs": true }, { "address": "4151e7ae7524b5861aabb9aa46008ccdab8dc85515", "voteCount": 8800, "url": "https://foo.bar", "totalProduced": 35504, "latestBlockNum": 4769951, "latestSlotNum": 546682842, "isJobs": true }, { "address": "412612938e4478f0e7331aa2e42c24690b0ca1d59f", "voteCount": 8700, "url": "https://foo.bar", "totalProduced": 35492, "latestBlockNum": 4769952, "latestSlotNum": 546682843, "isJobs": true }, { "address": "41b23e43fd8e9c3834382d1979e98eedc7da22433f", "voteCount": 11000, "url": "http://foo2.bar", "totalProduced": 49874, "totalMissed": 5, "latestBlockNum": 4769938, "latestSlotNum": 546682829, "isJobs": true }, { "address": "41f04a2c8b260577fd764f29fa215a792c66f7b32b", "voteCount": 9500, "url": "https://foo.bar", "totalProduced": 35487, "latestBlockNum": 4769944, "latestSlotNum": 546682835, "isJobs": true }, { "address": "41e5205c6ea00842c600a645763a5d7c9cc413ce40", "voteCount": 26102, "url": "https://aixchain.com", "totalProduced": 1235482, "totalMissed": 22667, "latestBlockNum": 4769934, "latestSlotNum": 546682825, "isJobs": true }, { "address": "412b41ea321782c6b4a44ab87b9f2b003cc44e161e", "voteCount": 9700, "url": "https://foo.bar", "totalProduced": 35503, "latestBlockNum": 4769942, "latestSlotNum": 546682833, "isJobs": true }, { "address": "41a187fc62abf4891a54b33baaf2bcb021c444c298", "voteCount": 9400, "url": "https://foo.bar", "totalProduced": 35505, "latestBlockNum": 4769945, "latestSlotNum": 546682836, "isJobs": true }, { "address": "41ed0d6ef683109961f61f9c114efee3f4f6788b47", "voteCount": 9800, "url": "https://foo.bar", "totalProduced": 35497, "latestBlockNum": 4769941, "latestSlotNum": 546682832, "isJobs": true }, { "address": "412caadc2d1960b1d572f1e6e6930ace9d21584349", "voteCount": 21000, "url": "http://foo.bar", "totalProduced": 52526, "totalMissed": 406, "latestBlockNum": 4769935, "latestSlotNum": 546682826, "isJobs": true }, { "address": "41e6f405a44b27646c6534894df9b9ca5a730eb4e6", "voteCount": 9100, "url": "https://foo.bar", "totalProduced": 35513, "latestBlockNum": 4769948, "latestSlotNum": 546682839, "isJobs": true }, { "address": "41641e9906076af55962d2869c8f4a897c78b6abf9", "voteCount": 9600, "url": "https://foo.bar", "totalProduced": 35492, "totalMissed": 1, "latestBlockNum": 4769943, "latestSlotNum": 546682834, "isJobs": true }, { "address": "4171b0aecb8e4aacc6b2cec6cd63f31b4b6ba5afab", "voteCount": 9000, "url": "https://foo.bar", "totalProduced": 35504, "latestBlockNum": 4769949, "latestSlotNum": 546682840, "isJobs": true }`

`}`


# CreateWitness

POST: http\://172.104.51.182:16667/wallet/createwitness

Apply to become a witness.\
**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`url`**` ``string`

**`permission_id`**` ``int32 (Optional)`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** is transaction creator address, in hex string format.
* **contract address** is the address of the contract to be modified, in hex string format.
* **visible:** whether the address is in base58check format.
* **permission\_id,** whether the address is in base58 format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/createwitness>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "url":"<http://test\\_create\\_witness>", "visible": true }

**Input:**&#x20;

`{`&#x20;

`"owner_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz",`&#x20;

`"url":"http://test_create_witness",`

&#x20;`"visible": true`&#x20;

`}`

**Response**:

`{`&#x20;

`"visible": true, "txID": "0206159482aaf083aaa18cf4e5016f604a0bf906fca7dfa99a79960858f4cec1", "raw_data": { "contract": [ { "parameter": { "value": { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "url": "http://test_create_witness" }, "type_url": "type.googleapis.com/protocol.WitnessCreateContract" }, "type": "WitnessCreateContract" } ], "ref_block_bytes": "d86c", "ref_block_hash": "e12a4c5acd1f6d9e", "expiration": 1640060721000, "timestamp": 1640060663276 }, "raw_data_hex": "0a02d86c2208e12a4c5acd1f6d9e40e8aef2d9dd2f5a6d080512690a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5769746e657373437265617465436f6e747261637412330a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121a687474703a2f2f746573745f6372656174655f7769746e65737370ecebeed9dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

`{`&#x20;

`"result": true, "txid": "0206159482aaf083aaa18cf4e5016f604a0bf906fca7dfa99a79960858f4cec1"`&#x20;

`}`


# UpdateWitness

POST: http\://172.104.51.182:16667/wallet/updatewitness

Edit the URL of the witness's official website.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`update_url`**` ``string`

**`visible`**` ``boolean (Optional)`

**`permission_id`**` ``int32 (Optional)`

`}`

**Note:** &#x20;

* **owner address** is transaction creator address, in hex string format.
* **update\_url** is website url, default hexString
* **visible:** whether the address is in base58check format.
* **permission\_id,** whether the address is in base58 format.

**Example:**&#x20;

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/updatewitness>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "update\_url":"<http://test\\_create\\_witness\\_update.vn>", "visible": true }

**Input:**&#x20;

`{`&#x20;

`"owner_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "update_url":"http://test_create_witness_update.com",`&#x20;

`"visible": true`&#x20;

`}`

**Response**:

`{`

&#x20;`"visible": true, "txID": "ee802f9e179f4ecf29c9a0613a3a900be086ca32dca1ba077ce294125a94dff9", "raw_data": { "contract": [ { "parameter": { "value": { "update_url": "http://test_create_witness_update.com", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz" }, "type_url": "type.googleapis.com/protocol.WitnessUpdateContract" }, "type": "WitnessUpdateContract" } ], "ref_block_bytes": "e27e", "ref_block_hash": "45338cf38462a0b1", "expiration": 1640068461000, "timestamp": 1640068402623 }, "raw_data_hex": "0a02e27e220845338cf38462a0b140c8e3cadddd2f5a77080812730a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5769746e657373557064617465436f6e7472616374123d0a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb06224687474703a2f2f746573745f6372656174655f7769746e6573735f7570646174652e766e70bf9bc7dddd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

`{`&#x20;

`"result": true, "txid": "ee802f9e179f4ecf29c9a0613a3a900be086ca32dca1ba077ce294125a94dff9"`&#x20;

`}`<br>


# GetBrokerage

POST: http\://172.104.51.182:16667/wallet/getBrokerage

Get SR brokerage ratio

**BODY PARAMS**\
`{`

**`address`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **address** is super representative's account address`.`
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getBrokerage>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }

**Input:**&#x20;

`{ "address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }`

**Response**:

`{"brokerage": 20}`


# UpdateBrokerage

POST: http\://172.104.51.182:16667/wallet/updateBrokerage

Update the witness's brokerage setting.<br>

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`brokerage`**` ``int32`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner\_address** is super representative's account address.
* **brokerage** is ratio of the super representative, for example: 20 means 20%, 100 means 100%
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url [**http://172.104.51.182:16667/wallet/updateBrokerage**](http://172.104.51.182:16667/wallet/updateBrokerage)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "414A193C92CD631C1911B99CA964DA8FD342F4CDDD" }

**Input:**&#x20;

`{`&#x20;

`"owner_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz",`&#x20;

`"brokerage":100,`&#x20;

`"visible": true`&#x20;

`}`

**Response**:

`{`&#x20;

`"visible": true, "txID": "8f9f43af54fd7492d02113d8c5348bc74c77b2786684c5ef0ce2903812c6c2d0", "raw_data": { "contract": [ { "parameter": { "value": { "brokerage": 100, "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz" }, "type_url": "type.googleapis.com/protocol.UpdateBrokerageContract" }, "type": "UpdateBrokerageContract" } ], "ref_block_bytes": "e7d7", "ref_block_hash": "e25e91b5b8c8be14", "expiration": 1640072568000, "timestamp": 1640072511110 }, "raw_data_hex": "0a02e7d72208e25e91b5b8c8be1440c0b9c5dfdd2f5a55083112510a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e55706461746542726f6b6572616765436f6e747261637412190a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb010647086fdc1dfdd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

{

"result":true,"txid":"8f9f43af54fd7492d02113d8c5348bc74c77b2786684c5ef0ce2903812c6c2d0"

}


# VoteWitnessAccount

POST: http\://172.104.51.182:16667/wallet/votewitnessaccount

Vote for witnesses

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`votes`**` ``array of objects`

**`visible`**` ``boolean (Optional)`

**`permission_id`**` ``int32 (Optional)`

`}`

**Note:** &#x20;

* **owner address** is transaction creator address, in hex string format.
* **votes** is 'vote\_address' stands for the address of the witness you want to vote, default hexString, 'vote\_count' stands for the number of votes you want to vote.
* **visible:** whether the address is in base58check format.
* **permission\_id,** whether the address is in base58 format.

**Example:**&#x20;

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/votewitnessaccount>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "41d1e7a6bc354106cb410e65ff8b181c600ff14292", "votes": \[ { "vote\_address": "41e552f6487585c2b58bc2c9bb4492bc1f17132cd0", "vote\_count": "0" } ] }

**Input:**&#x20;

`{`

`"owner_address": "414203485a535a4072C9FBFaADDfe2A010AD0BcdB0",`&#x20;

`"votes":`

&#x20;`[`&#x20;

`{ "vote_address": "412588712Fb3C470587350640e90265ff02af9c1e2", "vote_count": 2 } ]`&#x20;

`}`

**Response**:

`{`

&#x20;`"visible": false, "txID": "24f412c2b45ecf038450df4df518fa57985d8312d82fd086e3d81ad0a8fe1dea", "raw_data": { "contract": [ { "parameter": { "value": { "owner_address": "414203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "votes": [ { "vote_address": "412588712fb3c470587350640e90265ff02af9c1e2", "vote_count": 2 } ] }, "type_url": "type.googleapis.com/protocol.VoteWitnessContract" }, "type": "VoteWitnessContract" } ], "ref_block_bytes": "ece7", "ref_block_hash": "62ae1e9517669514", "expiration": 1640076456000, "timestamp": 1640076397714 }, "raw_data_hex": "0a02ece7220862ae1e951766951440c0e0b2e1dd2f5a6a080412660a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e566f74655769746e657373436f6e747261637412320a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb012190a15412588712fb3c470587350640e90265ff02af9c1e21002709299afe1dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

`{"result":true,"txid":"24f412c2b45ecf038450df4df518fa57985d8312d82fd086e3d81ad0a8fe1dea"}`


# GetReward

POST: http\://172.104.51.182:16667/wallet/getReward

Get the rewards that a witness or a user has not yet withdrawn.<br>

**BODY PARAMS**\
`{`

**`address`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **address** is super representative's account address`.`
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/getReward>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "address": "AGj1Ej1qRzL9feLTLhjwgxXF4Ct6GTWg2U", "visible": true }

**Input:**&#x20;

{ "address": "AGj1Ej1qRzL9feLTLhjwgxXF4Ct6GTWg2U", "visible": true }

**Response**:

{"reward": 4253699}


# WithdrawBalance

POST: http\://172.104.51.182:16667/wallet/withdrawbalance

Super Representative or user withdraw rewards, usable every 24 hours. Super representatives can withdraw the balance from the account allowance into the account balance, Users can claim the voting reward from the SRs and deposit into his account balance.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner\_address** is super representative or user address`.`
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/withdrawbalance>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }

**Input:**&#x20;

{ "address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "visible": true }

**Response**:

{

&#x20;"visible": true, "txID": "03a7ca7a342f68c6e9d8f9e28945153b54aca78db64e1546c3e77fdfc8395e3d", "raw\_data": { "contract": \[ { "parameter": { "value": { "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz" }, "type\_url": "type.googleapis.com/protocol.WithdrawBalanceContract" }, "type": "WithdrawBalanceContract" } ], "ref\_block\_bytes": "37e6", "ref\_block\_hash": "b84ce7fcd70872a9", "expiration": 1640134074000, "timestamp": 1640134014126 }, "raw\_data\_hex": "0a0237e62208b84ce7fcd70872a94090bdeffcdd2f5a53080d124f0a34747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e576974686472617742616c616e6365436f6e747261637412170a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb070aee9ebfcdd2f"&#x20;

}

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

`{`

`"result":true,`

`"txid":"03a7ca7a342f68c6e9d8f9e28945153b54aca78db64e1546c3e77fdfc8395e3d"`

`}`


# GetNextMaintenanceTime

GET: http\://172.104.51.182:16667/wallet/getnextmaintenancetime

**Example:**

curl --request GET\
\--url <http://172.104.51.182:16667/wallet/getnextmaintenancetime>\
\--header 'Accept: application/json'

**Response**:

{"num": 1640088000000}


# Smart Contracts


# TriggerSmartContract

POST: http\://172.104.51.182:16667/wallet/triggersmartcontract

Returns TransactionExtention, which contains the unsigned Transaction

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`contract_address`**` ``string`

**`function_selector`**` ``string`

**`parameter`**` ``string`

**`fee_limit`**` ``int32`

**`call_value`**` ``int32`

**`permission_id`**` ``int32 (Optional)`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** that triggers the contract, converted to a hex string
* **contract address**, converted to a hex string
* **function\_selector**, must not be left blank
* **parameter** encoding needs to be in accordance with the ABI rules, the rules are more complicated, users can use the ethers library to encode,For details, please refer to the document-Guide-Smart Contract-Best Practice-Parameter Encoding and Decoding.
* **fee\_limit** is maximum TRX consumption, measured in Aiix (1 TRX = 1,000 Aixc).
* **call\_value** is amount of TRX transferred with this transaction, measured in Aiix (1 TRX = 1,000 Aixc).
* **permission\_id** for multi-signature
* **visible:** whehter the address is in base58check format.

**Example:**

curl --request POST\
\--url [**http://172.104.51.182:16667/wallet/triggersmartcontract**](http://172.104.51.182:16667/wallet/triggersmartcontract)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' "owner\_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address":"AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "function\_selector":"mintWithTokenURI(address,uint256,string)", "json\_string": "\[{"address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz"},{"uint256":"100"},{"string":"<https://www.google.com.vn"}>]", "parameter":"0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "fee\_limit": 400000000, "call\_value": 0, "visible": true'

**Input:**&#x20;

`{`

&#x20;`"owner_address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address":"AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "function_selector":"mintWithTokenURI(address,uint256,string)", "json_string": "[{"address":"AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz"},{"uint256":"100"},{"string":"https://www.google.com.vn"}]", "parameter":"0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "fee_limit": 400000000, "call_value": 0, "visible": true`&#x20;

`}`

**Response:**&#x20;

`{`&#x20;

`"result": { "result": true }, "transaction": { "visible": true, "txID": "c2d17d92b78b9039c39324496bdef566927996c655c8f9930343819cb6bceaa0", "raw_data": { "contract": [ { "parameter": { "value": { "data": "50bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e32000000000000", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref_block_bytes": "d36b", "ref_block_hash": "c1ea79b01e683426", "expiration": 1639055307000, "fee_limit": 400000000, "timestamp": 1639055249995 }, "raw_data_hex": "0a02d36b2208c1ea79b01e68342640f8e1bcfad92f5a9002081f128b020a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412d5010a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c322a40150bb4e7f0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e676f6f676c652e636f6d2e766e3200000000000070cba4b9fad92f90018088debe01" }`&#x20;

`}`


# DeployContract

POST: http\://172.104.51.182:16667/wallet/deploycontract

Deploys a contract. Returns TransactionExtention, which contains an unsigned transaction.

**BODY PARAMS**\
`{`&#x20;

**`abi`**` ``string`

**`bytecode`**` ``string`

**`function_selector`**` ``string`

**`parameter`**` ``string`

**`fee_limit`**` ``int32`

**`origin_energy_limit`**` ``int32`

**`owner_address`**` ``string`

**`name`**` ``string`

**`call_value`**` ``int32`

**`consume_user_resource_percent`**` ``int32`

**`permission_id`**` ``int32 (Optional)`

**`visible`**` ``boolean (Optional)`

`}`&#x20;

**Note:**  &#x20;

* **abi** : Smart Contract's Application Binary Interface
* **bytecode:** The compiled contract's identifier, used to interact with the Virtual Machine.
* **fee\_limit** is maximum TRX consumption, measured in Aiix (1 TRX = 1,000 Aiix).
* **parameter** encoding needs to be in accordance with the ABI rules, the rules are more complicated, users can use the ethers library to encode,For details, please refer to the document-Guide-Smart Contract-Best Practice-Parameter Encoding and Decoding.
* **origin\_energy\_limit** : The max energy which will be consumed by the owner in the process of execution or creation of the contract, is an integer which should be greater than 0.
* **owner address** that triggers the contract, converted to a hex string
* **name** is contract name
* **call\_value** is amount of TRX transferred with this transaction, measured in Aiix (1 TRX = 1,000 Aiix).
* **consume\_user\_resource\_percent :** The same as User Pay Ratio. The percentage of resources specified for users who use this contract. This field accepts integers between \[0, 100]. If it is 0, it means the user does not consume resources until the developer resources are exhausted. However, it is strongly recommended to set the value between 1 and 99 (inclusive). This is prevent the contract developer from potential malicious infinite loop time out attacks.
* **permission\_id,** whether the address is in base58 format.
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/deploycontract>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "abi": "\[{"constant":false,"inputs":\[{"name":"key","type":"uint256"},{"name":"value","type":"uint256"}],"name":"set","outputs":\[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":\[{"name":"key","type":"uint256"}],"name":"get","outputs":\[{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]", "bytecode": "608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029", "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "name": "delpoyContracthungtest", "origin\_energy\_limit":1000000000, "consume\_user\_resource\_percent": 10, "visible":true }

**Input:**&#x20;

`{`

&#x20;`"abi": "[{"constant":false,"inputs":[{"name":"key","type":"uint256"},{"name":"value","type":"uint256"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"key","type":"uint256"}],"name":"get","outputs":[{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]", "bytecode": "608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "name": "delpoyContracthungtest", "origin_energy_limit":1000000000, "consume_user_resource_percent": 10, "visible":true`&#x20;

`}`

**Response:**&#x20;

`{`&#x20;

`"visible": true, "txID": "6fe61a44390f1c3157aea50b99b9281fcf74469a36d95e66cd513388546a85fe", "contract_address": "411e1980e0a7acd3af82c24e6962bed85116d727c5", "raw_data": { "contract": [ { "parameter": { "value": { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "new_contract": { "bytecode": "608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029", "consume_user_resource_percent": 10, "name": "delpoyContracthungtest", "origin_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "abi": { "entrys": [ { "inputs": [ { "name": "key", "type": "uint256" }, { "name": "value", "type": "uint256" } ], "name": "set", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "name": "value", "type": "uint256" } ], "constant": true, "inputs": [ { "name": "key", "type": "uint256" } ], "name": "get", "stateMutability": "View", "type": "Function" } ] }, "origin_energy_limit": 1000000000 } }, "type_url": "type.googleapis.com/protocol.CreateSmartContract" }, "type": "CreateSmartContract" } ], "ref_block_bytes": "774b", "ref_block_hash": "267e9e3b5f5f2ed3", "expiration": 1639986108000, "timestamp": 1639986048426 }, "raw_data_hex": "0a02774b2208267e9e3b5f5f2ed340e0aca8b6dd2f5ae903081e12e4030a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e437265617465536d617274436f6e747261637412af030a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb01295030a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb01a5c0a2b1a03736574220e12036b65791a0775696e743235362210120576616c75651a0775696e74323536300240030a2d10011a03676574220e12036b65791a0775696e743235362a10120576616c75651a0775696e743235363002400222fd01608060405234801561001057600080fd5b5060de8061001f6000396000f30060806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ab06ee58114604d5780639507d39a146067575b600080fd5b348015605857600080fd5b506065600435602435608e565b005b348015607257600080fd5b50607c60043560a0565b60408051918252519081900360200190f35b60009182526020829052604090912055565b600090815260208190526040902054905600a165627a7a72305820fdfe832221d60dd582b4526afa20518b98c2e1cb0054653053a844cf265b25040029300a3a1664656c706f79436f6e747261637468756e6774657374408094ebdc0370aadba4b6dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

`{`&#x20;

`"result": true, "txid": "6fe61a44390f1c3157aea50b99b9281fcf74469a36d95e66cd513388546a85fe"`

&#x20;`}`

&#x20;&#x20;


# UpdateSetting

http\://172.104.51.182:16667/wallet/updatesetting

Update the consume\_user\_resource\_percent parameter of a smart contract

**BODY PARAMS**\
`{`

**`contract_address`**` ``string`

**`owner_address`**` ``string`

**`consume_user_resource_percent`**` ``int32`

**`visible`**` ``boolean (Optional)`

**`permission_id`**` ``int32 (Optional)`

`}`

**Note:**  &#x20;

* **owner address** is transaction creator address, in hex string format.
* **contract address** is the address of the contract to be modified, in hex string format.
* **consume\_user\_resource\_percent** is consume user's resource percentage. It should be an integer between \[0, 100]. if 0, means it does not consume user's resource until the developer's resource has been used up
* **permission\_id** for multi-signature
* **visible:** whehter the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/updatesetting>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data '{ "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "consume\_user\_resource\_percent":10, "visible": true }

**Input:**&#x20;

`{`

&#x20;`"owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "consume_user_resource_percent":10, "visible": true`&#x20;

`}`

**Response:**&#x20;

`{`

`"visible": true, "txID": "94d5f099c4382421c3576502e9c0e22a71ee51c3122bdf79dfc835f028d0acf9", "raw_data": { "contract": [ { "parameter": { "value": { "consume_user_resource_percent": 10, "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.UpdateSettingContract" }, "type": "UpdateSettingContract" } ], "ref_block_bytes": "7652", "ref_block_hash": "f7ccc87584da42f7", "expiration": 1639985361000, "timestamp": 1639985303289 }, "raw_data_hex": "0a0276522208f7ccc87584da42f740e8e0fab5dd2f5a6a082112660a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e55706461746553657474696e67436f6e747261637412300a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c3180a70f99df7b5dd2f"`&#x20;

`}`

\=> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.\
`{`&#x20;

`"result": true, "txid": "94d5f099c4382421c3576502e9c0e22a71ee51c3122bdf79dfc835f028d0acf9"`&#x20;

`}`


# UpdateEnergyLimit

POST: http\://172.104.51.182:16667/wallet/updateenergylimit

Update the origin\_energy\_limit parameter of a smart contract

**BODY PARAMS**\
`{`

**`contract_address`**` ``string`

**`owner_address`**` ``string`

**`origin_energy_limit`**` ``int32`

**`visible`**` ``boolean (Optional)`

**`permission_id`**` ``int32 (Optional)`

`}`

**Note:**  &#x20;

* **owner address** is transaction creator address, in hex string format.
* **contract address** is the address of the contract to be modified, in hex string format.
* **origin\_energy\_limit** is the maximum energy the creator sets. The greatest amount of energy the creator consumes during contract execution or creation process.
* **permission\_id** for multi-signature
* **visible:** whehter the address is in base58check format.

**Example:**

curl --request POST\
\--url <http://172.104.51.182:16667/wallet/updateenergylimit>\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "origin\_energy\_limit": 10, "visible": true }

**Input:**&#x20;

`{`&#x20;

`"owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz",`&#x20;

`"contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "origin_energy_limit": 10,`&#x20;

`"visible": true`&#x20;

`}`

**Response**:

`{`&#x20;

`"visible": true, "txID": "d07fd1960ec1075057edb2edf8c1202a34fc172cb66bda4c037403bc59f48c7f", "raw_data": { "contract": [ { "parameter": { "value": { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "origin_energy_limit": 10, "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.UpdateEnergyLimitContract" }, "type": "UpdateEnergyLimitContract" } ], "ref_block_bytes": "c78b", "ref_block_hash": "89c8c97679ca63ec", "expiration": 1640047758000, "timestamp": 1640047699040 }, "raw_data_hex": "0a02c78b220889c8c97679ca63ec40b095dbd3dd2f5a6e082d126a0a36747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e557064617465456e657267794c696d6974436f6e747261637412300a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c3180a70e0c8d7d3dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

{"result":true,"txid":"d07fd1960ec1075057edb2edf8c1202a34fc172cb66bda4c037403bc59f48c7f"}<br>


# ClearAbi

POST: http\://172.104.51.182:16667/wallet/clearabi

To clear the ABI info of a smart contract.

\
**BODY PARAMS**\
`{`

**`contract_address`**` ``string`

**`owner_address`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** is transaction creator address, in hex string format.
* **contract address** is the address of the contract to be modified, in hex string format.
* **visible:** whehter the address is in base58check format.

**Example:**

curl -X POST <http://api.trongrid.io/wallet/clearabi> -d '{ "owner\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }'

**Input:**&#x20;

`{`&#x20;

`"owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz",`&#x20;

`"contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd",`&#x20;

`"visible": true`&#x20;

`}`

**Response**:

`{`&#x20;

`"visible": true, "txID": "ea86b5dc9e5e0406046f535b999ba7289ff4a6851f231b79dd94264b6c00623e", "raw_data": { "contract": [ { "parameter": { "value": { "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.ClearABIContract" }, "type": "ClearABIContract" } ], "ref_block_bytes": "c7f3", "ref_block_hash": "43ffc0429d17ca8d", "expiration": 1640048070000, "timestamp": 1640048010670 }, "raw_data_hex": "0a02c7f3220843ffc0429d17ca8d40f09aeed3dd2f5a630830125f0a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e436c656172414249436f6e7472616374122e0a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c370aecbead3dd2f"`&#x20;

`}`

\==> Continue you call **gettransactionsign** API then call **broadcasttransaction** API

We will the final result: The transaction created success on AIXChain network.

{"result":true,"txid":"ea86b5dc9e5e0406046f535b999ba7289ff4a6851f231b79dd94264b6c00623e"}

\==> check ABI of smartcontract

Call the API: <http://172.104.51.182:16667/wallet/getcontract>

**input**:&#x20;

{ "value": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }

**response**:

{ "bytecode": "60806040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b506040518060400160405280600f81526020017f596f757220546f6b656e204e616d6500000000000000000000000000000000008152506040518060400160405280600381526020017f59544e0000000000000000000000000000000000000000000000000000000000815250620000b26301ffc9a760e01b6200015460201b60201c565b620000ca6380ac58cd60e01b6200015460201b60201c565b620000e263780e9d6360e01b6200015460201b60201c565b8160099080519060200190620000fa9291906200048a565b5080600a9080519060200190620001139291906200048a565b506200012c635b5e139f60e01b6200015460201b60201c565b50506200014e620001426200025d60201b60201c565b6200026560201b60201c565b62000539565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200028081600d620002c660201b620024301790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620002d88282620003aa60201b60201c565b156200034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000433576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620034256022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cd57805160ff1916838001178555620004fe565b82800160010185558215620004fe579182015b82811115620004fd578251825591602001919060010190620004e0565b5b5090506200050d919062000511565b5090565b6200053691905b808211156200053257600081600090555060010162000518565b5090565b90565b612edc80620005496000396000f3fe608060405234801561001057600080fd5b50d3801561001d57600080fd5b50d2801561002a57600080fd5b50600436106101515760003560e01c80636352211e116100d2578063986502751161009657806398650275146107a5578063a22cb465146107af578063aa271e1a146107ff578063b88d4fde1461085b578063c87b56dd14610960578063e985e9c514610a0757610151565b80636352211e146105955780636c0360eb1461060357806370a082311461068657806395d89b41146106de578063983b2d561461076157610151565b806323b872dd1161011957806323b872dd146103185780632f745c591461038657806342842e0e146103e85780634f6ccce71461045657806350bb4e7f1461049857610151565b806301ffc9a71461015657806306fdde03146101bb578063081812fc1461023e578063095ea7b3146102ac57806318160ddd146102fa575b600080fd5b6101a16004803603602081101561016c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610a83565b604051808215151515815260200191505060405180910390f35b6101c3610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102035780820151818401526020810190506101e8565b50505050905090810190601f1680156102305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026a6004803603602081101561025457600080fd5b8101908080359060200190929190505050610b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f8600480360360408110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c27565b005b610302610e0e565b6040518082815260200191505060405180910390f35b6103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1b565b005b6103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e91565b6040518082815260200191505060405180910390f35b610454600480360360608110156103fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b005b6104826004803603602081101561046c57600080fd5b8101908080359060200190929190505050610f70565b6040518082815260200191505060405180910390f35b61057b600480360360608110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184600183028401116401000000008311171561052957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ff0565b604051808215151515815260200191505060405180910390f35b6105c1600480360360208110156105ab57600080fd5b8101908080359060200190929190505050611076565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060b61113e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064b578082015181840152602081019050610630565b50505050905090810190601f1680156106785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106c86004803603602081101561069c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e0565b6040518082815260200191505060405180910390f35b6106e66112b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072657808201518184015260208101905061070b565b50505050905090810190601f1680156107535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611357565b005b6107ad6113c8565b005b6107fd600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506113da565b005b6108416004803603602081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611592565b604051808215151515815260200191505060405180910390f35b61095e6004803603608081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184600183028401116401000000008311171561090c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115af565b005b61098c6004803603602081101561097657600080fd5b8101908080359060200190929190505050611627565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109cc5780820151818401526020810190506109b1565b50505050905090810190601f1680156109f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6960048036036040811015610a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611829565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b825780601f10610b5757610100808354040283529160200191610b82565b820191906000526020600020905b815481529060010190602001808311610b6557829003601f168201915b5050505050905090565b6000610b97826118bd565b610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c7d602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c3282611076565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d556021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cd861192f565b73ffffffffffffffffffffffffffffffffffffffff161480610d075750610d0681610d0161192f565b611829565b5b610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612e486038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610e2c610e2661192f565b82611937565b610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b610e8c838383611a2b565b505050565b6000610e9c836111e0565b8210610ef3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612bd0602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610f3d57fe5b9060005260206000200154905092915050565b610f6b838383604051806020016040528060008152506115af565b505050565b6000610f7a610e0e565b8210610fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612d29602c913960400191505060405180910390fd5b60078281548110610fde57fe5b90600052602060002001549050919050565b6000611002610ffd61192f565b611592565b611057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6110618484611a4f565b61106b8383611a70565b600190509392505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611135576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612d986029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612dc1602a913960400191505060405180910390fd5b6112ae600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611afa565b9050919050565b6060600a8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b61136761136261192f565b611592565b6113bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6113c581611b08565b50565b6113d86113d361192f565b611b62565b565b6113e261192f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5452433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061149061192f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661153d61192f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006115a882600d611bbc90919063ffffffff16565b9050919050565b6115c06115ba61192f565b83611937565b611615576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b61162184848484611c9a565b50505050565b6060611632826118bd565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612ca9602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117305780601f1061170557610100808354040283529160200191611730565b820191906000526020600020905b81548152906001019060200180831161171357829003601f168201915b505050505090506000815114156117595760405180602001604052806000815250915050611824565b600b8160405160200180838054600181600116156101000203166002900480156117ba5780601f106117985761010080835404028352918201916117ba565b820191906000526020600020905b8154815290600101906020018083116117a6575b505082805190602001908083835b602083106117eb57805182526020820191506020810190506020830392506117c8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611942826118bd565b611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612deb602c913960400191505060405180910390fd5b60006119a283611076565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a1157508373ffffffffffffffffffffffffffffffffffffffff166119f984610b8c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a225750611a218185611829565b5b91505092915050565b611a36838383611d0c565b611a408382611f67565b611a4a8282612105565b505050565b611a5982826121cc565b611a638282612105565b611a6c816123e4565b5050565b611a79826118bd565b611ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612bfb602c913960400191505060405180910390fd5b80600c60008481526020019081526020016000209080519060200190611af5929190612afe565b505050565b600081600001549050919050565b611b1c81600d61243090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611b7681600d61250b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d766022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ca5848484611a2b565b611cb1848484846125c8565b611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff16611d2c82611076565b73ffffffffffffffffffffffffffffffffffffffff1614611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612e806029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c276024913960400191505060405180910390fd5b611e27816128fd565b611e6e600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129bb565b611eb5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611fbf6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506129f490919063ffffffff16565b90506000600660008481526020019081526020016000205490508181146120ac576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061202c57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061208457fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036120fe9190612b7e565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561226f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5452433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612278816118bd565b156122eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612384600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b61243a8282611bbc565b156124ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6125158282611bbc565b61256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d086021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008373ffffffffffffffffffffffffffffffffffffffff16d46125ef57600190506128f5565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16635175f878905060e01b61263361192f565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156126e35780820151818401526020810190506126c8565b50505050905090810190601f1680156127105780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106127a85780518252602082019150602081019050602083039250612785565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461280a576040519150601f19603f3d011682016040523d82523d6000602084013e61280f565b606091505b50915091508161287d5760008151111561282c5780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b600081806020019051602081101561289457600080fd5b81019080805190602001909291905050509050635175f87860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b85760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6129d3600182600001546129f490919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000612a3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a3e565b905092915050565b6000838311158290612aeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ab0578082015181840152602081019050612a95565b50505050905090810190601f168015612add5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b3f57805160ff1916838001178555612b6d565b82800160010185558215612b6d579182015b82811115612b6c578251825591602001919060010190612b51565b5b509050612b7a9190612baa565b5090565b815481835581811115612ba557818360005260206000209182019101612ba49190612baa565b5b505050565b612bcc91905b80821115612bc8576000816000905550600101612bb0565b5090565b9056fe545243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64735452433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e7366657220746f20746865207a65726f20616464726573735452433732313a207472616e7366657220746f206e6f6e20545243373231526563656976657220696d706c656d656e7465725452433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65545243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64735452433732313a20617070726f76616c20746f2063757272656e74206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735452433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573735452433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645452433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c5452433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776ea26474726f6e58200bf00154938dc850be6056415182110b5de5908f169c907441930d5f3d8862c364736f6c634300050a0031526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", "consume\_user\_resource\_percent": 10, "name": "TRC721Token", "origin\_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", <mark style="color:red;">"abi": {}</mark>, "origin\_energy\_limit": 10, "contract\_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "code\_hash": "308c514859f6ddd6b021b000b557f77b4d4d62af5a804534de27a3af7e84730f" }


# GetContract

POST: http\://172.104.51.182:16667/wallet/getcontract

Queries a contract's information from the blockchain. Returns SmartContract object.

**BODY PARAMS**\
`{`

**`Value`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **value** is transaction hash, i.e. transaction id.
* **visible:** whether the address is in base58check format.

**Example:**

curl --request POST\
\--url [`http://172.104.51.182:16667/wallet/getcontract`](http://172.104.51.182:16667/wallet/getcontract)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "value": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }

**Input:**&#x20;

`{ "value": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "visible": true }`

**response:**

`{`&#x20;

`"bytecode": "60806040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b506040518060400160405280600f81526020017f596f757220546f6b656e204e616d6500000000000000000000000000000000008152506040518060400160405280600381526020017f59544e0000000000000000000000000000000000000000000000000000000000815250620000b26301ffc9a760e01b6200015460201b60201c565b620000ca6380ac58cd60e01b6200015460201b60201c565b620000e263780e9d6360e01b6200015460201b60201c565b8160099080519060200190620000fa9291906200048a565b5080600a9080519060200190620001139291906200048a565b506200012c635b5e139f60e01b6200015460201b60201c565b50506200014e620001426200025d60201b60201c565b6200026560201b60201c565b62000539565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b6200028081600d620002c660201b620024301790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620002d88282620003aa60201b60201c565b156200034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000433576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620034256022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cd57805160ff1916838001178555620004fe565b82800160010185558215620004fe579182015b82811115620004fd578251825591602001919060010190620004e0565b5b5090506200050d919062000511565b5090565b6200053691905b808211156200053257600081600090555060010162000518565b5090565b90565b612edc80620005496000396000f3fe608060405234801561001057600080fd5b50d3801561001d57600080fd5b50d2801561002a57600080fd5b50600436106101515760003560e01c80636352211e116100d2578063986502751161009657806398650275146107a5578063a22cb465146107af578063aa271e1a146107ff578063b88d4fde1461085b578063c87b56dd14610960578063e985e9c514610a0757610151565b80636352211e146105955780636c0360eb1461060357806370a082311461068657806395d89b41146106de578063983b2d561461076157610151565b806323b872dd1161011957806323b872dd146103185780632f745c591461038657806342842e0e146103e85780634f6ccce71461045657806350bb4e7f1461049857610151565b806301ffc9a71461015657806306fdde03146101bb578063081812fc1461023e578063095ea7b3146102ac57806318160ddd146102fa575b600080fd5b6101a16004803603602081101561016c57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610a83565b604051808215151515815260200191505060405180910390f35b6101c3610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102035780820151818401526020810190506101e8565b50505050905090810190601f1680156102305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026a6004803603602081101561025457600080fd5b8101908080359060200190929190505050610b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f8600480360360408110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c27565b005b610302610e0e565b6040518082815260200191505060405180910390f35b6103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1b565b005b6103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e91565b6040518082815260200191505060405180910390f35b610454600480360360608110156103fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b005b6104826004803603602081101561046c57600080fd5b8101908080359060200190929190505050610f70565b6040518082815260200191505060405180910390f35b61057b600480360360608110156104ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f557600080fd5b82018360208201111561050757600080fd5b8035906020019184600183028401116401000000008311171561052957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ff0565b604051808215151515815260200191505060405180910390f35b6105c1600480360360208110156105ab57600080fd5b8101908080359060200190929190505050611076565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060b61113e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064b578082015181840152602081019050610630565b50505050905090810190601f1680156106785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106c86004803603602081101561069c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e0565b6040518082815260200191505060405180910390f35b6106e66112b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072657808201518184015260208101905061070b565b50505050905090810190601f1680156107535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611357565b005b6107ad6113c8565b005b6107fd600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506113da565b005b6108416004803603602081101561081557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611592565b604051808215151515815260200191505060405180910390f35b61095e6004803603608081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108d857600080fd5b8201836020820111156108ea57600080fd5b8035906020019184600183028401116401000000008311171561090c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115af565b005b61098c6004803603602081101561097657600080fd5b8101908080359060200190929190505050611627565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109cc5780820151818401526020810190506109b1565b50505050905090810190601f1680156109f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a6960048036036040811015610a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611829565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b825780601f10610b5757610100808354040283529160200191610b82565b820191906000526020600020905b815481529060010190602001808311610b6557829003601f168201915b5050505050905090565b6000610b97826118bd565b610bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c7d602c913960400191505060405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c3282611076565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d556021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cd861192f565b73ffffffffffffffffffffffffffffffffffffffff161480610d075750610d0681610d0161192f565b611829565b5b610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612e486038913960400191505060405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610e2c610e2661192f565b82611937565b610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b610e8c838383611a2b565b505050565b6000610e9c836111e0565b8210610ef3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612bd0602b913960400191505060405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610f3d57fe5b9060005260206000200154905092915050565b610f6b838383604051806020016040528060008152506115af565b505050565b6000610f7a610e0e565b8210610fd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612d29602c913960400191505060405180910390fd5b60078281548110610fde57fe5b90600052602060002001549050919050565b6000611002610ffd61192f565b611592565b611057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6110618484611a4f565b61106b8383611a70565b600190509392505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611135576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612d986029913960400191505060405180910390fd5b80915050919050565b6060600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612dc1602a913960400191505060405180910390fd5b6112ae600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611afa565b9050919050565b6060600a8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050905090565b61136761136261192f565b611592565b6113bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612cd86030913960400191505060405180910390fd5b6113c581611b08565b50565b6113d86113d361192f565b611b62565b565b6113e261192f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611483576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5452433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806004600061149061192f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661153d61192f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006115a882600d611bbc90919063ffffffff16565b9050919050565b6115c06115ba61192f565b83611937565b611615576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180612e176031913960400191505060405180910390fd5b61162184848484611c9a565b50505050565b6060611632826118bd565b611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612ca9602f913960400191505060405180910390fd5b6060600c60008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117305780601f1061170557610100808354040283529160200191611730565b820191906000526020600020905b81548152906001019060200180831161171357829003601f168201915b505050505090506000815114156117595760405180602001604052806000815250915050611824565b600b8160405160200180838054600181600116156101000203166002900480156117ba5780601f106117985761010080835404028352918201916117ba565b820191906000526020600020905b8154815290600101906020018083116117a6575b505082805190602001908083835b602083106117eb57805182526020820191506020810190506020830392506117c8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600033905090565b6000611942826118bd565b611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612deb602c913960400191505060405180910390fd5b60006119a283611076565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a1157508373ffffffffffffffffffffffffffffffffffffffff166119f984610b8c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a225750611a218185611829565b5b91505092915050565b611a36838383611d0c565b611a408382611f67565b611a4a8282612105565b505050565b611a5982826121cc565b611a638282612105565b611a6c816123e4565b5050565b611a79826118bd565b611ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612bfb602c913960400191505060405180910390fd5b80600c60008481526020019081526020016000209080519060200190611af5929190612afe565b505050565b600081600001549050919050565b611b1c81600d61243090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611b7681600d61250b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d766022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ca5848484611a2b565b611cb1848484846125c8565b611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b50505050565b8273ffffffffffffffffffffffffffffffffffffffff16611d2c82611076565b73ffffffffffffffffffffffffffffffffffffffff1614611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180612e806029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c276024913960400191505060405180910390fd5b611e27816128fd565b611e6e600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129bb565b611eb5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000611fbf6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506129f490919063ffffffff16565b90506000600660008481526020019081526020016000205490508181146120ac576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061202c57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061208457fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036120fe9190612b7e565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561226f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5452433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b612278816118bd565b156122eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5452433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612384600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206129de565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505090600182039060005260206000200160009091929091909150555050565b61243a8282611bbc565b156124ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6125158282611bbc565b61256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612d086021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008373ffffffffffffffffffffffffffffffffffffffff16d46125ef57600190506128f5565b600060608573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16635175f878905060e01b61263361192f565b898888604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156126e35780820151818401526020810190506126c8565b50505050905090810190601f1680156127105780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106127a85780518252602082019150602081019050602083039250612785565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461280a576040519150601f19603f3d011682016040523d82523d6000602084013e61280f565b606091505b50915091508161287d5760008151111561282c5780518082602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180612c4b6032913960400191505060405180910390fd5b600081806020019051602081101561289457600080fd5b81019080805190602001909291905050509050635175f87860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161493505050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b85760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6129d3600182600001546129f490919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b6000612a3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a3e565b905092915050565b6000838311158290612aeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ab0578082015181840152602081019050612a95565b50505050905090810190601f168015612add5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b3f57805160ff1916838001178555612b6d565b82800160010185558215612b6d579182015b82811115612b6c578251825591602001919060010190612b51565b5b509050612b7a9190612baa565b5090565b815481835581811115612ba557818360005260206000209182019101612ba49190612baa565b5b505050565b612bcc91905b80821115612bc8576000816000905550600101612bb0565b5090565b9056fe545243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64735452433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e7366657220746f20746865207a65726f20616464726573735452433732313a207472616e7366657220746f206e6f6e20545243373231526563656976657220696d706c656d656e7465725452433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65545243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64735452433732313a20617070726f76616c20746f2063757272656e74206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735452433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573735452433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e5452433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645452433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c5452433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776ea26474726f6e58200bf00154938dc850be6056415182110b5de5908f169c907441930d5f3d8862c364736f6c634300050a0031526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", "consume_user_resource_percent": 5, "name": "TRC721Token", "origin_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "abi": { "entrys": [ { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "name", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "address" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "approve", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "name": "totalSupply", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "inputs": [ { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" }, { "name": "tokenURI", "type": "string" } ], "name": "mintWithTokenURI", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "address" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "baseURI", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "uint256" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" } ], "name": "balanceOf", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "name": "symbol", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "account", "type": "address" } ], "name": "addMinter", "stateMutability": "Nonpayable", "type": "Function" }, { "name": "renounceMinter", "stateMutability": "Nonpayable", "type": "Function" }, { "inputs": [ { "name": "to", "type": "address" }, { "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "account", "type": "address" } ], "name": "isMinter", "stateMutability": "View", "type": "Function" }, { "inputs": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "tokenId", "type": "uint256" }, { "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "stateMutability": "Nonpayable", "type": "Function" }, { "outputs": [ { "type": "string" } ], "constant": true, "inputs": [ { "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "stateMutability": "View", "type": "Function" }, { "outputs": [ { "type": "bool" } ], "constant": true, "inputs": [ { "name": "owner", "type": "address" }, { "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "stateMutability": "View", "type": "Function" }, { "stateMutability": "Nonpayable", "type": "Constructor" }, { "inputs": [ { "indexed": true, "name": "account", "type": "address" } ], "name": "MinterAdded", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "account", "type": "address" } ], "name": "MinterRemoved", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": true, "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "approved", "type": "address" }, { "indexed": true, "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "Event" }, { "inputs": [ { "indexed": true, "name": "owner", "type": "address" }, { "indexed": true, "name": "operator", "type": "address" }, { "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "Event" } ] }, "origin_energy_limit": 1000000000, "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "code_hash": "308c514859f6ddd6b021b000b557f77b4d4d62af5a804534de27a3af7e84730f"`&#x20;

`}`


# TriggerConstantContract

POST: http\://172.104.51.182:16667/wallet/triggerconstantcontract

Trigger the constant of the smart contract, the transaction is off the blockchain. Returns the Transaction Object. The corresponding method must be marked view or pure.

**BODY PARAMS**\
`{`

**`owner_address`**` ``string`

**`contract_address`**` ``string`

**`function_selector`**` ``string`

**`parameter`**` ``string`

**`visible`**` ``boolean (Optional)`

`}`

**Note:**  &#x20;

* **owner address** that triggers the contract. If visible=true, use base58check format, otherwise use hex format. For constant call you can use the all-zero address.
* **contract address** is smart contract address. If visible=true, use base58check format, otherwise use hex format.
* **function\_selector** is function call, must not be left blank.
* **parameter** encoding needs to be in accordance with the ABI rules, the rules are more complicated, users can use the ethers library to encode,For details, please refer to the document-Guide-Smart Contract-Best Practice-Parameter Encoding and Decoding..
* **visible:** whehter the address is in base58check format.

**Example:**

curl --request POST\
\--url [`http://172.104.51.182:16667/wallet/triggerconstantcontract`](http://172.104.51.182:16667/wallet/triggerconstantcontract)\
\--header 'Accept: application/json'\
\--header 'Content-Type: application/json'\
\--data ' { "owner\_address": "410000000000000000000000000000000000000000", "contract\_address": "41a614f803b6fd780986a42c78ec9c7f77e6ded13c", "function\_selector": "balanceOf(address)", "parameter": "000000000000000000000000a614f803b6fd780986a42c78ec9c7f77e6ded13c" }

**Input:**

`{`&#x20;

`"owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd", "function_selector": "balanceOf(address)", "parameter": "0000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "visible": true`&#x20;

`}`

**Response:**

`{`&#x20;

`"result": { "result": true }, "constant_result": [ "0000000000000000000000000000000000000000000000000000000000000001" ], "transaction": { "ret": [ {} ], "visible": true, "txID": "65acb81ca6fddf5ddb36ce6f70f59055f54e9d1be7a8c914e09ab64861ad618b", "raw_data": { "contract": [ { "parameter": { "value": { "data": "70a082310000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb0", "owner_address": "AFzFXoQCgUeoApjejKM9B46NgFGHXvUyKz", "contract_address": "AV27cVbuGmTv9q6qgtPxsLUkuG9ohUUVPd" }, "type_url": "type.googleapis.com/protocol.TriggerSmartContract" }, "type": "TriggerSmartContract" } ], "ref_block_bytes": "610a", "ref_block_hash": "29c5bc3adde0b6e8", "expiration": 1639969011000, "timestamp": 1639968952474 }, "raw_data_hex": "0a02610a220829c5bc3adde0b6e840b8ea94aedd2f5a8e01081f1289010a31747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e54726967676572536d617274436f6e747261637412540a15414203485a535a4072c9fbfaaddfe2a010ad0bcdb0121541d0f723a417a54e5629d865e05db8a45b79f0a9c3222470a082310000000000000000000000004203485a535a4072c9fbfaaddfe2a010ad0bcdb0709aa191aedd2f" }`&#x20;

`}`<br>




---

[Next Page](https://developers.aixchain.com/llms-full.txt/1)

