Skip to content

Latest commit

 

History

History
741 lines (530 loc) · 28.1 KB

EXCHANGE_GUIDELINES_EN.md

File metadata and controls

741 lines (530 loc) · 28.1 KB

EXCHANGE_GUIDELINES_EN

Version 1.0

English | 中文 | 한글

ZEEPIN Blockchain assets consist of:

  • Original Assets:

    • ZPT: main token, governance, assets, etc.
    • Gala: transactions, contract deployment, system fuel cost, etc.
  • Contract Assets:

    • Tokens generated by contracts
    • MOX, etc.

When the exchange is docked to the ZEEPIN Blockchain, it mainly deals with these two types of assets by enabling recharge, withdrawal, transaction inquiry, account creation and other operations.

Outline

1.ZEEPIN Synchronized Node Deployment

Obtaining Zeepin

Obtaining from Release

Server Deployment

MainNet Synchronized Node Deployment

The directory structure is as follows

 $ tree -L 1
 .
 ├── zeepin
 └── wallet.dat

Run Zeepin nodes

 ./zeepin

By default, the websocket and rest ports are closed. It is possible to start the ports configuring the following parameters:

RESTFUL OPTIONS:
--rest            Enable restful api server
--restport value  Restful server listening port (default: 20334)

WEB SOCKET OPTIONS:
--ws            Enable websocket server
--wsport value  Ws server listening port (default: 20335)

zeepin -h is for more commands, such as the parameter:

 --loglevel=0 Logging Parameter

2.Using ZEEPIN CLI Client

Security Policy

The whitelist and firewall are mandatory for the exchange in order to isolate external requests and avoid consequential severe security risks.

ZEEPIN CLI does not provide remote wallet switch functions, and there is no verification required when opening a wallet. Therefore, the exchange should set the security policy according to its specific situation. Since the wallet should remain open to process user withdrawals, from a security perspective, the wallet must be operating on a separate server and configured with a port firewall. The table below is for reference.

port type Mainnet default port
Rest Port 20334
Websorcket 20335
Json RPC port 20336
Node port 20338

Creating ZEEPIN Wallets

Creating a ZEEPIN wallet

 ./zeepin account add -d

Then enter the password, execute. The following will be displayed:

Use default setting '-t ecdsa -b 256 -s SHA256withECDSA'
	signature algorithm: ecdsa
	curve: P-256
	signature scheme: SHA256withECDSA
Password:
Re-enter Password:

Index: 1
Label:
Address: ZT047K36grEi5H6BF7gLb2Z0JwBFMQRRCU
Public key: 02c7fed64a315c664034bae1257f45c9fdf8c24033f0904ce7b47b0090232323
Signature scheme: SHA256withECDSA

  • All ZEEPIN Wallets start with a “Z.” Please make sure to keep the wallet password and private key safe. Please note that the wallet address is case sensitive!

  • The generating algorithm of ZEEPIN Wallet private keys is the same as NEO. The same private key corresponds to different ZPT and NEO public keys.

  • It is not necessary for the exchange to create a wallet for every address. A wallet is able to store all user recharging addresses. In addition, an offline cold wallet is a safer storage.

Generating Recharging Addresses for Exchange Users

Two Ways of Generating Recharging Addresses:

  • Dynamic Generation: When the user creates an account, the ZPT/Gala address is dynamically generated and returned through the Java SDK (advantage: automatic maintenance / disadvantage: inconvenient backup)

  • Batch Generation: The exchange is generated in batches, and a ZPT address is assigned to the user once an account has been created (advantage: convenient backup / disadvantage: regular manual generations)

    How to generate in batches: run ZEEPIN CLI:

    ./zeepin account add -d -n [number]  -w [wallet name]
    

    -d By default set as 1, calling default settings -n Number of addresses created in batches -w Specify wallet file, default is wallet.dat

    For example, in order to generate 10 ZEEPIN addresses in a batch:

	$ ./zeepin account add -d -n 10 -w walletEx.dat
	
	Use default setting '-t ecdsa -b 256 -s SHA256withECDSA'
		signature algorithm: ecdsa
		curve: P-256
		signature scheme: SHA256withECDSA
		
	Password:
	Re-enter Password:

	Index: 1
	Label:
	Address: ZDahjrxYu2vFUPQMDZx6bRtF7RDJs4Xkxb
	Public key: 03e38e4944da8a7bba7a12e88a679b0b0063e2362b4b82cf6bdfdc49b5c595418f
	Signature scheme: SHA256withECDSA

	Index: 2
	Label:
	Address: ZW7gQeK9o4Axs6Dg17E7yiBsUnnsRaGWbF
	Public key: 03c86673df828cc90f03497dd72eb785daf5f0b1561e4d8250eea05114a6652343
	Signature scheme: SHA256withECDSA

	Index: 3
	Label:
	Address: ZEzF5pBkfamfHBSDYvLSJbatM4iSLsZF3c
	Public key: 02f10b9250391a309e26481faa3b7c5f041dd0a7f62277cdd81527d8defce63e20
	Signature scheme: SHA256withECDSA
	
	....... .......

	Index: 10
	Label:
	Address: ZQm7vGM5ezFdJhUigbLgv2ekzvxpCp3Eqv
	Public key: 036220266424bcf381cfae8233e6422a9761ae05cd31036ede89301a940af3b353
	Signature scheme: SHA256withECDSA

	Create account successfully.

3.The Exchange Connected with Asset Exchanges

Docking Programs to be Developed

  • Monitor new blocks with CLI or API
  • User recharge based on transaction information
  • Store related transaction records

User Recharge

Please pay attention to the following during user recharging:

  • There are two types of assets in ZEEPIN Wallets, namely ZPT and Gala. Registered users must clarify the asset type before recharging in order to avoid confusion.

  • ZEEPIN Wallet is a full-node wallet. Block synchronization is only possible when the wallet is online. Users can read node status via the current block height with the command of ZEEPIN CLI curblockheight:

      ./zeepin info curblockheight
      CurrentBlockHeight:5749
    

For example:

  1. A user is using ZEEPIN Wallet to recharge the wallet address in the exchange:
	 $ ./zeepin asset transfer --asset zpt --from ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz --to ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM --amount 2
	Password:
	Transfer ZPT
	  From:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
	  To:ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM
	  Amount:2
	  TxHash:2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e

	Tip:
	  Using './zeepin info status 2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e' to query transaction status
  1. The user monitors block information via ZEEPIN CLI

     $ ./zeepin info curblockheight
     CurrentBlockHeight:5762
     
    
     $ ./zeepin info block 5762
     {
        "Hash": "553308eb7eb5769e2624d7164962157ab427c4f33ab7af542fc2a98c3e4c4409",
        "Size": 1375,
        "Header": {
           "Version": 0,
           "PrevBlockHash": "386c4251223e569ac34c76541c9d612b0d7ce20b4eb045d57368a8e4d6c1f5a7",
           "TransactionsRoot": "2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e",
           "BlockRoot": "a0a96e1b97c248cc16bb893dcf78d85ea64748707925e8271825c9c71efe88ff",
           "Timestamp": 1535005866,
           "Height": 5762,
           "ConsensusData": 5950638681301161907,
           "ConsensusPayload": "7b226c6561646572223a31342c227672665f76616c7565223a22424c46497730747476712b68566e68537652394b6d366f6f77346a4b34473247345a4c71324f34707a4a7566557430716d65774d654337374833474e53363575583835716d2b5355336c6452522b3732773264627066513d222c227672665f70726f6f66223a226e427765362f74645a484b62416e6864705364636154466647417445346d315a623462546d38633331666b653779724e70534e42312f7174693443327a796674737a494667785347517133496f522b7a38776c4630413d3d222c226c6173745f636f6e6669675f626c6f636b5f6e756d223a333235372c226e65775f636861696e5f636f6e666967223a6e756c6c7d",
           "NextBookkeeper": "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcTvb44rA",
           "Bookkeepers": [
     	 "02dfb488eb1f0116bb099584b1f058c525db1b45b24378314ba7f5cc2da180d724",
     	 "037a53745eb295a6263d00e87b5f6641f22b44fc2436811a6415a69b816bea3571",
     	 "0203b36fa517ac4751b37652e0cef6b730cca8c5540d9cddfb469c26b78f7836e3",
     	 "023ea9e036521ed242c6102f8cdc112d901025ef3fb883213112e30da0590ab1fc",
     	 "02dfb488eb1f0116bb099584b1f058c525db1b45b24378314ba7f5cc2da180d724",
     	 "029c5ecc8400530cc410288496feda44542b6f5aaeff8b925d9b8c6d12a65d4bc3",
     	 "035ad9d8b8350b113cbb3d541e0a89dfd10c981702eb59bce4d1a2bbd13b103a39"
           ],
           "SigData": [
     	 "a8d9dcc7cd3878122ca841efb60fd1c470a81b9a12c96c95c69cd9ce8876754db1d2c24ca9b592c525c5e98e3dc0df5aaf66278dae2b14679d80edd47953f66c",
     	 "9f372d29c829c88b8f0e55fa44cb1543fbe1f7042dbd55479fec5f3f47d10ebeb473a0d5fe41eda1f1510671706ef8b339117470fee6cffe9dfba150537ed2f5",
     	 "5b6a82c3591e17193d121f00dde54fe1e2fdf4640484e0d2201089f5df63157768383667a0bfb40c4c711d4e6a92a3ba75e6a8fd6c14c5c2257e7ae2fe75b090",
     	 "f177287021afe2b4393e52ff2b630cf1759b5800a6c7a41834d4febad83e506b0c5584895fcd5793c242b9124116d4dbdc87d3c3f86b1c15454be3d3a68ddc27",
     	 "28d18cf67db32d146b404b1b8507003ffa240f274abc96f36f6c58ede1043ba807d359346d32fc9ba7edc53841ebf7a102e6dce063bbfc48588ca1cbaed8daef",
     	 "81f338f39e76ef56e366c340f580ebc998a4063db39b939e890887c2f2bb49fd2d0a6d6fcc6845d771f9769a996ab9197c95c0fdd553ca603b956770bcc0759d",
     	 "955e9e348be138636c078d08f3cf7f350cf6021a1cefd03176dda9e459f1632234a71fc8fd2fe93dbe334bf5c98d08384541d63bfbe499efe2acfb0ab3e2d8ee"
           ],
           "Hash": "553308eb7eb5769e2624d7164962157ab427c4f33ab7af542fc2a98c3e4c4409"
        },
        "Transactions": [
           {
     	 "Version": 0,
     	 "Nonce": 1535005865,
     	 "GasPrice": 1,
     	 "GasLimit": 20000,
     	 "Payer": "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
     	 "TxType": 209,
     	 "Payload": {
     	    "Code": "00c66b14a34d23aead66348272a8b5a6bdc235fd5a90ab5f6a7cc814a8e9a5aef175ccdd6503f0336701414a9c2009636a7cc802204e6a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068195a656570696e436861696e2e4e61746976652e496e766f6b65",
     	    "GasLimit": 0
     	 },
     	 "Attributes": [],
     	 "Sigs": [
     	    {
     	       "PubKeys": [
     		  "02c35cfe4126b7a56c63f75e89d8482bc2d7bdcda44c64172e829efe76d1f57295"
     	       ],
     	       "M": 1,
     	       "SigData": [
     		  "bbdc4f00ed4d03905344b54ecdd657c73f530cf811e88299966d6f378fbfba517d4ca395a0fc323edac08338a7784d7942de68dede79582cd1aa18b158cedca4"
     	       ]
     	    }
     	 ],
     	 "Hash": "2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e",
     	 "Height": 0
           }
        ]
     }
    
    
  2. Access transaction information of the block based on Transaction Hash

	$ ./zeepin info status 2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e
	Transaction states:
	{
	   "TxHash": "2d2b866018c3d1572dd681f30d54ab2d982ece9c5915e3b778fc3d63cef66e4e",
	   "State": 1,
	   "GasConsumed": 20000,
	   "Notify": [
	      {
		 "ContractAddress": "0100000000000000000000000000000000000000",
		 "States": [
		    "transfer",
		    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
		    "ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM",
		    20000
		 ]
	      },
	      {
		 "ContractAddress": "0200000000000000000000000000000000000000",
		 "States": [
		    "transfer",
		    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
		    "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcUiYGcPp",
		    20000
		 ]
	      }
	   ]
	}

Status Reading via “State”:

  • 1 stands for successful transaction
  • 0 stands for failed transaction

Parsing Arrays via Notify:

Contract Address:
  • 0100000000000000000000000000000000000000 for ZPT
  • 0200000000000000000000000000000000000000 for Gala

​ States:Array

transfer	 stands for the transaction
from		 sender address
to		 recipient address
The forth line is the transfer amount (Both ZPT and Gala have 4 decimal places, and the actual amount of ZPT and Gala should be divided by 10000)

Filtering the recipient address through the recharge address that the exchange generates for the user, one could access the user recharge record.

Recharge Record

Based on the same principle as user recharge, the exchange needs to write code to monitor each transaction in each block, recording all recharge and withdrawal transactions in the database. When there is recharge transaction, the exchange modifies the user balance in the database.

Processing User Withdraw Requests

When a user withdraws, the exchange needs to complete the following operations:

1. Record user withdrawals in the database and modify the user account balance.

2. Use the CLI command to transfer to the user withdraw address:

 $ ./zeepin asset transfer --asset gala --from ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz --to ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM --amount 100
 Password:
 Transfer GALA
   From:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
   To:ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM
   Amount:100
   TxHash:00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4

 Tip:
   Using './zeepin info status 00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4' to query transaction status

The following is the command parameters for Zeepin Asset Transfer:

--wallet, -w
Wallet specifies the path to the sender’s wallet. The default is "wallet.dat" in the root directory.

--gasprice
In the Zeepin network, the minimum gasprice is 1; gasprice * gaslimit is the actual Gala fuel cost the account has to pay (in each transaction, the minimum fuel cost is 2 Gala); gasprice parameter specifies the gas price in the transaction. The gas price of the transaction cannot be less than the lowest gas price set by the trading pool of the receiving node, otherwise the transaction will be rejected. The default is 0. The trading pool sorts transactions in accordance with the gas price, from highest to lowest, and transactions with a higher gas price will be prioritized.

--gaslimit
In the Zeepin network, gaslimit has a minimum of 20000 (4 decimal places, i.e., 2 Gala); gaslimit parameter specifies the upper limit of gas usage. However, the actual gas cost is determined by the number of steps executed by the VM and the API, assuming the following two cases:

  1. gaslimit>=actual cost, the transaction will be executed successfully, and the unconsumed gas will be returned;
  2. gaslimt<actual cost, The transaction will fail to execute, and consume the gas that the VM has executed.

The minimum gaslimit in the zeepin network is 20000 (4-bit precision, ie 2 Gallas), and less than this amount of transactions will not be packaged.

--asset
asset The asset parameter specifies the asset type for the transfer, zpt for ZPT and gala for Gala. The default is zpt

--from
from The from parameter specifies the outgoing account address

--to
to To parameter specifies the transfer to the target account address

--amount
amount The amount parameter specifies the transfer amount

Note: Both ZPT and Gala have a 4-decimal precision. If the input exceeds 4 decimal places, the excess value will be discarded;

Confirm the transaction result:

  • Use the returned transaction hash to directly query and filter the record of the exchange address to the user:
 $ ./zeepin info status 00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4
 Transaction states:
 {
    "TxHash": "00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4",
    "State": 1,
    "GasConsumed": 20000,
    "Notify": [
       {
 	 "ContractAddress": "0200000000000000000000000000000000000000",
 	 "States": [
 	    "transfer",
 	    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
 	    "ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM",
 	    1000000
 	 ]
       },
       {
 	 "ContractAddress": "0200000000000000000000000000000000000000",
 	 "States": [
 	    "transfer",
 	    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
 	    "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcUiYGcPp",
 	    20000
 	 ]
       }
    ]
 }

3. Extract the transaction ID record from the returned Json format transaction details in the database

4. After the block is confirmed, the withdrawal record will be marked as successful.

    Similar to the monitoring of the blockchain during recharge, the same is true. If a transaction ID in the block is found to be equal to the transaction ID in the withdrawal record during the monitoring, the transaction has been confirmed, that is, the withdrawal is successful.

5. If the transaction has not been confirmed, that is, the corresponding event log cannot be queried by the transaction hash, then

    - Query whether the transaction is in the transaction pool through the rpc/SDK interface (refer to Java Sdk). If it is, wait for the consensus node to pack the block and then query.

    - If not, the transaction can be considered to have failed and the transfer operation needs to be re-executed.

    - If the transaction has not been packaged for a long time, it may be due to the gasprice setting being too low.

4.Gala Distributed to Users

The exchange can choose whether to distribute the Gala to the user, Gala is used to pay for additional services such as transfer transactions, contract deployment, billing fees and networks for the zeepin blockchain.

What is Gala?

In the Zeepin economic model, the total supply of the original token ZPT is 1 billion rounding to 4 decimal places. Correspondingly, the total supply of Gala is 20 billion, of which 2 billion has been airdropped to ZPT holders, and the remaining 18 billion will be gradually released to ZPT holders (the minimum unlock unit is 1 ZPT). A ZPT transaction generated on the blockchain triggers a Gala release. The smart contract automatically transfers the released Gala to the initiator and the receiver of the transaction, and the Gala incentive is directly proportional to the ZPT amount they hold. In case that transactions at a particular address are not triggered at all, Gala to the address will accumulate until a transaction is triggered, and the accumulated Gala will be issued at once. It is possible to obtain this part of Gala through Claim in the ZeeWallet application.

Calculating Withdrawable Gala Amount

The release amount of the 18 billion Gala will be adjusted within time periods, the unit of which is year (31,536,000 seconds). The releasing rule is in accordance with the Fibonacci sequence. In order to compensate network nodes and early holders, the release amounts in the first two years are at the highest value. Afterwards, the release amounts will assume a degression tendency. The specific sequence is [89, 89, 55, 55, 55, 34, 34, 34, 21, 21, 21, 13, 13,13, 8, 8, 5, 5]. In about 18 years, all Gala will be released, and no more will be generated.

According to this rule of Gala release, the first two years will see a 31.18% release of the total Gala, and the released proportion will be 50.46% after the first four years, which greatly increases the revenue of early holders. Assuming a user holds 10,000 ZPTs, in the first year, he will receive 76.9 Gala daily, 2338.9 Gala monthly, and 28067.0 Gala annually.

For detailed unbinding rules, please refer to Zeepin Economic Model

Distributing Gala to users

View unposted Gala balances via the CLI:

$ ./zeepin asset unboundgala ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
Unbound Gala:
  Account:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
  Gala:144521.6129

Extract the unlocked Gala from the CLI:

$ ./zeepin asset withdrawgala ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
Password:
Withdraw GALA:
  Account:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
  Amount:144521.6129
  TxHash:3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4

Tip:
  Using './zeepin info status 3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4' to query transaction status

Query unbind status

$ ./zeepin info status 3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4
Transaction states:
{
   "TxHash": "3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4",
   "State": 1,
   "GasConsumed": 20000,
   "Notify": [
      {
         "ContractAddress": "0200000000000000000000000000000000000000",
         "States": [
            "transfer",
            "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcTzHMV8a",
            "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
            1445216129
         ]
      },
      {
         "ContractAddress": "0200000000000000000000000000000000000000",
         "States": [
            "transfer",
            "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
            "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcUiYGcPp",
            20000
         ]
      }
   ]
}

Query balance to see that Gala has been unbundled into the account:

$ ./zeepin asset balance ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
BalanceOf:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
  ZPT:9989996.9989
  GALA:10143405.6129

Gala distribution formula

Assume that the exchange distributes Gala clearing at 0:00 am every day. According to the user's position snapshot at 0:00 yesterday, the total amount of GalaGala_Unbound that should be distributed on the day before the unadjusted user is calculated, and the customer transaction and the punched currency are deducted or added. The total amount of impact of the position change caused by the operation Gala_Adj.

Calculated according to the customer transaction and the flushing currency record, according to the time span of the recording time from the clearing time (in seconds) Delta, the number of ZPTs in which the transaction occurred Amount and the distribution coefficient Beta in the time period Calculate the Gala allocation adjustment amount caused by the transaction flow. If the transaction is sold or transferred, the Gala will be deducted. If the transaction is a buyer or transfer, add this part of Gala:

			Gala_Adj =(±)delta * Amount * Beta

The number of Galas that should be assigned is:

			Gala_D = Gala_Unbound + Sum(Gala_Adj_1 , Gala_Adj_2 ... Gala_Adj_n)

Users withdrawing Gala

The process of withdrawing Gala from the user is consistent with the process of withdrawing ZPT. Just specify the asset parameter as gala:

$ ./zeepin asset transfer --asset gala --from ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz --to ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM --amount 10000
Password:
Transfer Gala
  From:ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz
  To:ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM
  Amount:10000
  TxHash:3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4

Tip:
  Using './zeepin info status 3612d3cbb4a58956258f0aa7dce35da673aedf3af3f5271ce68bcfb1ed2755d4' to query transaction status

Use the Java SDK to withdraw Gala, please refer toJava SDK:withdraw Gala

Appendix Native Contract Addresses

Contract name Contract address
ZPT Token 0100000000000000000000000000000000000000
Gala Token 0200000000000000000000000000000000000000
Zeepin Network GID(Galaxy ID) 0300000000000000000000000000000000000000
Global Environment 0400000000000000000000000000000000000000
Oracle Machine 0500000000000000000000000000000000000000
Authorization Contract 0600000000000000000000000000000000000000
Governance(Consensus) 0700000000000000000000000000000000000000

FAQ (will be updated continuously)

  • ***How to connect to the TestNet? ***

    Run the zeepin test node:

     ./zeepin --networkid 2
    
    • More parameter settings can be queried via ./zeepin -h*

  • Node whitelist mode

    In order to ensure the security of the exchange data and avoid malicious node interference, you can run the node in the specified peers whitelist mode. The content format of peer.rsv is consistent with peers.recent, dstartup mode is as follows:

     ./zeepin  --reservedonly --reservedfile=./peers.rsv
    

    If necessary, you can get the whitelist node address from the official contact.


  • Is there a Zeepin official blockchain browser?

    https://zeescan.io


  • What are the precision of ZPT and Gala?

    Both ZPT and Gala have a 4-decimal precision. If the input exceeds 4 decimal places, the excess value will be discarded.

  • How much is the transfer charge?

    gasprice * gaslimit = gala cost
    

    --gasprice In the Zeepin network, the minimum gasprice is 1; gasprice * gaslimit is the actual Gala fuel cost the account has to pay (in each transaction, the minimum fuel cost is 2 Gala); gasprice parameter specifies the gas price in the transaction. The gas price of the transaction cannot be less than the lowest gas price set by the trading pool of the receiving node, otherwise the transaction will be rejected. The default is 0. The trading pool sorts transactions in accordance with the gas price, from highest to lowest, and transactions with a higher gas price will be prioritized.

    --gaslimit In the Zeepin network, gaslimit has a minimum of 20000 (4 decimal places, i.e., 2 Gala); aslimit parameter specifies the upper limit of gas usage. However, the actual gas cost is determined by the number of steps executed by the VM and the API, assuming the following two cases:

    1. Gaslimit >= actual cost, the transaction will be executed successfully, and the unconsumed gas will be returned;
    2. Gaslimt<actual cost, The transaction will fail to execute, and consume the gas that the VM has executed.

    The minimum gaslimit in the zeepin network is 20000 (4-bit precision, ie 2 Gallas), and less than this amount of transactions will not be packaged.


  • ***During a transaction, how to identify transaction amount and gas? ***

    The identification can be carried out is as follows: The transaction fee is directly marked in GasConsumed in Transaction states, and it is the last group in Notify. At the same time, the fee is transferred to the unique address corresponding to the governance contract: ZC3Fmgr3oS56Rg9vxZeVo2mwMMcUiYGcPp(Example is TestNet)

     $ ./zeepin info status 00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4
     Transaction states:
     {
        "TxHash": "00d9336a5e83754815fdd609f7ecce31135428d4fcc40469082658cfdb8b62c4",
        "State": 1,
        "GasConsumed": 20000,
        "Notify": [
           {
     	 "ContractAddress": "0200000000000000000000000000000000000000",
     	 "States": [
     	    "transfer",
     	    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
     	    "ZTSPC1PEhXHZZDTFtvRDjoKSZrgYboBwDM",
     	    1000000
     	 ]
           },
           {
     	 "ContractAddress": "0200000000000000000000000000000000000000",
     	 "States": [
     	    "transfer",
     	    "ZSviKhEgka2fZhhoUjv2trnSMtjUhm3fyz",
     	    "ZC3Fmgr3oS56Rg9vxZeVo2mwMMcUiYGcPp",
     	    20000
     	 ]
           }
        ]
     }
    

  • How to convert ZPT from NEP 5 to ZPT on the MainNet?

    Private Keys on NEP5 can be activated via SDK or ZeeWallet, and then a new Zeepin Wallet address will be generated. The same applies to Gala.